summaryrefslogtreecommitdiffstats
path: root/ms/gra
diff options
context:
space:
mode:
Diffstat (limited to 'ms/gra')
-rw-r--r--ms/gra/gra-app/.swagger-codegen-ignore4
-rw-r--r--ms/gra/gra-app/generic-resource-api-springboot.iml8
-rw-r--r--ms/gra/gra-app/pom.xml321
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/FilterConfiguration.java37
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsApp.java49
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java1969
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationalApiController.java213
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java1858
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ServiceDataHelper.java567
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResources.java181
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java33
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworks.java70
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworksRepository.java36
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurations.java181
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java33
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadData.java81
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadDataRepository.java35
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServices.java201
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java34
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModules.java84
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModulesRepository.java38
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfs.java66
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfsRepository.java36
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/NetworksKey.java30
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResources.java181
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java33
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurations.java181
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java33
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadData.java81
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadDataRepository.java34
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServices.java159
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServicesRepository.java34
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/PreloadDataKey.java30
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VfModulesKey.java34
-rw-r--r--ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VnfsKey.java30
-rw-r--r--ms/gra/gra-app/src/main/resources/application.properties24
-rw-r--r--ms/gra/gra-app/src/main/resources/db/changelog/db.changelog-master.yaml546
-rw-r--r--ms/gra/gra-app/src/main/resources/dblib.properties38
-rw-r--r--ms/gra/gra-app/src/main/resources/generic-resource-api-dg.properties77
-rw-r--r--ms/gra/gra-app/src/main/resources/log4j2.properties163
-rw-r--r--ms/gra/gra-app/src/main/resources/svclogic.properties29
-rw-r--r--ms/gra/gra-app/src/main/templates/api.mustache136
-rw-r--r--ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsIT.java31
-rw-r--r--ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiPreloadControllerTest.java470
-rw-r--r--ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java1168
-rw-r--r--ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java368
-rw-r--r--ms/gra/gra-app/src/test/resources/GR_API.http1341
-rw-r--r--ms/gra/gra-app/src/test/resources/allotted-resource-item.json29
-rw-r--r--ms/gra/gra-app/src/test/resources/application.properties23
-rw-r--r--ms/gra/gra-app/src/test/resources/contrail-route-allotted-resource-1.json33
-rw-r--r--ms/gra/gra-app/src/test/resources/db/changelog/db.changelog-master.yaml55358
-rw-r--r--ms/gra/gra-app/src/test/resources/dblib.properties38
-rw-r--r--ms/gra/gra-app/src/test/resources/generic-resource-api-dg.properties77
-rw-r--r--ms/gra/gra-app/src/test/resources/network-assign-rpc.json70
-rw-r--r--ms/gra/gra-app/src/test/resources/policy-update-notify-rpc.json7
-rw-r--r--ms/gra/gra-app/src/test/resources/port-mirror-assign-rpc.json46
-rw-r--r--ms/gra/gra-app/src/test/resources/port-mirror-configuration-1.json120
-rw-r--r--ms/gra/gra-app/src/test/resources/port-mirror-configuration-item.json116
-rw-r--r--ms/gra/gra-app/src/test/resources/preload1-net-list-item.json81
-rw-r--r--ms/gra/gra-app/src/test/resources/preload1-net-model-info.json84
-rw-r--r--ms/gra/gra-app/src/test/resources/preload1-net-preload-data.json78
-rw-r--r--ms/gra/gra-app/src/test/resources/preload1-rpc-network.json91
-rw-r--r--ms/gra/gra-app/src/test/resources/preload1-rpc-vfmodule.json375
-rw-r--r--ms/gra/gra-app/src/test/resources/preload2-net-list-item.json81
-rw-r--r--ms/gra/gra-app/src/test/resources/preload2-net-model-info.json84
-rw-r--r--ms/gra/gra-app/src/test/resources/preload2.json482
-rw-r--r--ms/gra/gra-app/src/test/resources/service-assign-rpc.json34
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-service.json69
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-service_vnf.json141
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-servicedata.json221
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-serviceitem.json233
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-servicestatus.json10
-rw-r--r--ms/gra/gra-app/src/test/resources/service1-vfmodule-item.json79
-rw-r--r--ms/gra/gra-app/src/test/resources/service1.json236
-rw-r--r--ms/gra/gra-app/src/test/resources/service9.json268
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic.properties29
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-aic-zone.xml124
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml95
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml560
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml1443
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml618
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml332
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_assign-vlan-tags.xml441
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_auto-ip-assignment.xml1593
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml266
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml171
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-create-huawei.xml288
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-delete-huawei.xml225
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml42
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml166
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml146
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml84
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-change-huawei.xml44
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-common-huawei.xml76
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-create-huawei.xml150
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-delete-huawei.xml143
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml333
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml227
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-create.xml100
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml275
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml105
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml81
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation.xml26
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml94
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml341
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml981
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml380
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml309
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml258
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml338
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml56
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-l3-subnet.xml192
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml437
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml482
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml213
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml1127
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml537
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml901
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml699
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-FQPN.xml472
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-allottedresource-id.xml68
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml67
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-l3network-network-id.xml65
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-panorama-name.xml136
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml66
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-unique-name.xml591
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml65
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml108
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml485
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml108
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml353
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification.xml39
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml117
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml181
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-data-from-policy.xml204
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml17
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml31
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml1912
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml627
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml749
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml145
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml569
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml125
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml55
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml36
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_gw-vfmodule-update.xml142
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml24
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-vni-assignment.xml13
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-name.xml1116
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml182
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-activate.xml206
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml1405
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml693
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml1097
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign.xml86
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml1172
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-create.xml565
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml172
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-delete.xml300
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml403
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation.xml571
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml84
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml71
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml84
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml93
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation.xml38
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-create-policy.xml46
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml46
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-update-notify-operation.xml89
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-get-policy.xml113
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml52
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml765
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml57
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml2253
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml124
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml88
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml293
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml373
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml57
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml184
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml231
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml108
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml243
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml153
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml237
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml90
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-network-topology-operation.xml34
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml34
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-eipam-pools.xml935
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml661
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml199
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml46
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-generated-names.xml341
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml150
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml348
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml127
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml150
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml130
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml105
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation.xml56
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml156
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml6600
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml434
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml281
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml50
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name.xml31
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml625
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml744
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml414
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml400
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml233
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml235
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml143
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-mapping-ra-response.xml100
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-template-ra-response.xml99
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-mapping-ra-response.xml100
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-template-ra-response.xml104
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml612
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml302
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml85
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml92
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml233
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml75
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml159
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml70
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml204
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml287
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml70
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml54
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml94
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml233
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml67
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml179
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml143
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_send-so-response.xml46
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-assign.xml185
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml63
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml67
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-delete.xml100
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation.xml41
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml133
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml272
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml300
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml117
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml268
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml80
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml26
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml319
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml118
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-vnf-input-parameters.xml118
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-brg-input.xml116
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml331
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-contrail-route-input.xml337
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml108
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml107
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input-parameters.xml311
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input.xml596
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml279
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-pnf-input.xml86
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-security-zone-input.xml328
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-service-input.xml117
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml106
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vf-module-input.xml86
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vnf-input.xml77
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml926
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml188
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml175
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-async.xml1862
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml1302
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml559
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-sync.xml1353
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml27
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml28
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml158
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml156
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml386
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation.xml197
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml313
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml791
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml88
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml289
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-get-resource-request.xml242
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml64
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-async.xml1536
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-sync.xml899
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml27
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml28
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml132
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml84
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml174
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation.xml253
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml777
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml297
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml215
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml81
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_managed-network-notification.xml138
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_subnet-allocated-notification.xml626
-rw-r--r--ms/gra/gra-app/src/test/resources/svclogic/graph.versions221
-rw-r--r--ms/gra/gra-app/src/test/resources/testing.http215
-rw-r--r--ms/gra/gra-app/src/test/resources/vf-module-assign-rpc.json56
-rw-r--r--ms/gra/gra-app/src/test/resources/vf-module-unassign-rpc.json56
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-assign-rpc.json85
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-data.json601
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-get-resource-request-expected.json1
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-get-resource-request-rpc.json15
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-level-oper-status.json11
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-onap-model-info.json9
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-vnf-networks-network-role.json34
-rw-r--r--ms/gra/gra-app/src/test/resources/vnf-vnf-networks.json38
-rw-r--r--ms/gra/gra-docker/pom.xml325
-rw-r--r--ms/gra/gra-docker/src/main/dc/docker-compose.yaml80
-rw-r--r--ms/gra/gra-docker/src/main/docker/Dockerfile52
-rw-r--r--ms/gra/gra-docker/src/main/resources/application.properties24
-rw-r--r--ms/gra/gra-docker/src/main/resources/data-demo.sql1396
-rw-r--r--ms/gra/gra-docker/src/main/resources/dblib.properties38
-rw-r--r--ms/gra/gra-docker/src/main/resources/generic-resource-api-dg.properties77
-rw-r--r--ms/gra/gra-docker/src/main/resources/log4j2.properties163
-rw-r--r--ms/gra/gra-docker/src/main/resources/org.onap.sdnc.cred.props17
-rw-r--r--ms/gra/gra-docker/src/main/resources/org.onap.sdnc.keyfile27
-rw-r--r--ms/gra/gra-docker/src/main/resources/org.onap.sdnc.p12bin0 -> 4295 bytes
-rw-r--r--ms/gra/gra-docker/src/main/resources/org.onap.sdnc.props14
-rw-r--r--ms/gra/gra-docker/src/main/resources/org.onap.sdnc.trust.jksbin0 -> 1413 bytes
-rw-r--r--ms/gra/gra-docker/src/main/resources/schema-demo.sql2847
-rw-r--r--ms/gra/gra-docker/src/main/resources/startGra.sh42
-rw-r--r--ms/gra/gra-docker/src/main/resources/svclogic.properties29
-rw-r--r--ms/gra/gra-docker/src/main/resources/truststoreONAPall.jksbin0 -> 117990 bytes
-rw-r--r--ms/gra/pom.xml54
327 files changed, 150148 insertions, 0 deletions
diff --git a/ms/gra/gra-app/.swagger-codegen-ignore b/ms/gra/gra-app/.swagger-codegen-ignore
new file mode 100644
index 0000000..d8f3f67
--- /dev/null
+++ b/ms/gra/gra-app/.swagger-codegen-ignore
@@ -0,0 +1,4 @@
+**/OperationsApiController.java
+**/OperationalApiController.java
+**/ConfigApiController.java
+**/Swagger2SpringBoot.java
diff --git a/ms/gra/gra-app/generic-resource-api-springboot.iml b/ms/gra/gra-app/generic-resource-api-springboot.iml
new file mode 100644
index 0000000..4a4ce55
--- /dev/null
+++ b/ms/gra/gra-app/generic-resource-api-springboot.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+ <component name="CheckStyle-IDEA-Module">
+ <option name="configuration">
+ <map />
+ </option>
+ </component>
+</module> \ No newline at end of file
diff --git a/ms/gra/gra-app/pom.xml b/ms/gra/gra-app/pom.xml
new file mode 100644
index 0000000..475eda5
--- /dev/null
+++ b/ms/gra/gra-app/pom.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.sdnc.apps</groupId>
+ <artifactId>gra</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.onap.sdnc.apps</groupId>
+ <artifactId>gra-app</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <name>sdnc-apps :: ms :: gra :: ${project.artifactId}</name>
+ <description>Generic Resource API application</description>
+ <url>http://wiki.onap.org</url>
+
+ <properties>
+ <start-class>org.onap.sdnc.apps.ms.gra.GenericResourceMsApp</start-class>
+ <liquibase.properties>${project.basedir}/src/main/resources/liquibase.properties</liquibase.properties>
+ <maven.compiler.source>1.11</maven.compiler.source>
+ <maven.compiler.target>1.11</maven.compiler.target>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-xml</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-auth-client</artifactId>
+ <version>${aaf.cadi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-misc-env</artifactId>
+ <version>${aaf.cadi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-misc-rosetta</artifactId>
+ <version>${aaf.cadi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-validation</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger2</artifactId>
+ <version>2.9.2</version>
+ </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger-ui</artifactId>
+ <version>2.9.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.apps</groupId>
+ <artifactId>services</artifactId>
+ <version>${ccsdk.apps.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.apps</groupId>
+ <artifactId>sliboot</artifactId>
+ <version>${ccsdk.apps.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.core</groupId>
+ <artifactId>sli-common</artifactId>
+ <version>${ccsdk.sli.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.core</groupId>
+ <artifactId>sli-provider-base</artifactId>
+ <version>${ccsdk.sli.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.logging-analytics</groupId>
+ <artifactId>logging-filter-spring</artifactId>
+ <version>1.6.6</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.core</groupId>
+ <artifactId>sliPluginUtils-provider</artifactId>
+ <version>${ccsdk.sli.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+ <artifactId>mdsal-resource-provider</artifactId>
+ <version>${ccsdk.sli.adaptors.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.adaptors.messagerouter</groupId>
+ <artifactId>publisher.provider</artifactId>
+ <version>${ccsdk.sli.adaptors.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+ <artifactId>netbox-client-provider</artifactId>
+ <version>${ccsdk.sli.adaptors.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+ <artifactId>sql-resource-provider</artifactId>
+ <version>${ccsdk.sli.adaptors.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.plugins</groupId>
+ <artifactId>restapi-call-node-provider</artifactId>
+ <version>${ccsdk.sli.plugins.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.sli.plugins</groupId>
+ <artifactId>properties-node-provider</artifactId>
+ <version>${ccsdk.sli.plugins.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.liquibase</groupId>
+ <artifactId>liquibase-core</artifactId>
+ <version>4.3.0</version>
+ </dependency>
+
+ <!-- this jersey jar is needed for rest api call node to function properly -->
+ <dependency>
+ <groupId>org.glassfish.jersey.inject</groupId>
+ <artifactId>jersey-hk2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- Necessary to run tests with coverage in IntelliJ -->
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <version>1.6.2</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.10</version>
+
+ <executions>
+ <execution>
+ <id>get-gra-yaml</id>
+ <phase>initialize</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.onap.sdnc.northbound</groupId>
+ <artifactId>generic-resource-api-model-swagger</artifactId>
+ <version>${sdnc.northbound.version}</version>
+ <type>yaml</type>
+ <outputDirectory>${project.build.directory}/yaml</outputDirectory>
+ <destFileName>generic-resource.yaml</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ <!-- DGs are needed for unit tests as well -->
+ <execution>
+ <id>unpack dgs</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target</outputDirectory>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.onap.sdnc.oam</groupId>
+ <artifactId>platform-logic-installer</artifactId>
+ <version>${sdnc.oam.version}</version>
+ <type>zip</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-codegen-maven-plugin</artifactId>
+ <version>2.3.1</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <output>target/generated-sources</output>
+ <inputSpec>${project.build.directory}/yaml/generic-resource.yaml</inputSpec>
+ <language>spring</language>
+ <apiPackage>org.onap.sdnc.apps.ms.gra.swagger</apiPackage>
+ <modelPackage>org.onap.sdnc.apps.ms.gra.swagger.model</modelPackage>
+ <invokerPackage>org.onap.sdnc.apps.ms.gra.swagger</invokerPackage>
+ <generateApis>true</generateApis>
+ <generateApiTests>true</generateApiTests>
+ <ignoreFileOverride>${project.basedir}/.swagger-codegen-ignore</ignoreFileOverride>
+ <withXml>true</withXml>
+ <templateDirectory>${project.basedir}/src/main/templates</templateDirectory>
+ <configOptions>
+ <java8>true</java8>
+ <springBootVersion>2.2.4-RELEASE</springBootVersion>
+ </configOptions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>addSource</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.basedir}/target/generated-sources/src/main/java</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.19.1</version>
+ <configuration>
+ <environmentVariables>
+ <SDNC_CONFIG_DIR>${basedir}/src/test/resources</SDNC_CONFIG_DIR>
+ <SVCLOGIC_PROPERTIES>${basedir}/src/test/resources/svclogic.properties</SVCLOGIC_PROPERTIES>
+ <MYSQL_DATABASE>${gratest.mysql.database}</MYSQL_DATABASE>
+ <MYSQL_USER>${gratest.mysql.user}</MYSQL_USER>
+ <MYSQL_PASSWORD>${gratest.mysql.password}</MYSQL_PASSWORD>
+ </environmentVariables>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <skipITs>true</skipITs>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/FilterConfiguration.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/FilterConfiguration.java
new file mode 100644
index 0000000..f63dd97
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/FilterConfiguration.java
@@ -0,0 +1,37 @@
+package org.onap.sdnc.apps.ms.gra;
+
+import org.onap.aaf.cadi.filter.CadiFilter;
+import org.onap.ccsdk.apps.filters.ContentTypeFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+
+@Configuration
+@ConditionalOnProperty("cadi_prop_files")
+public class FilterConfiguration {
+
+ private static final Logger log = LoggerFactory.getLogger(FilterConfiguration.class);
+
+ @Bean
+ @Order(1)
+ public FilterRegistrationBean<CadiFilter> cadiFilter() {
+ CadiFilter filter = new CadiFilter();
+
+ FilterRegistrationBean<CadiFilter> registrationBean = new FilterRegistrationBean<>();
+ registrationBean.setFilter(filter);
+ if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {
+ log.info("cadi_prop_files undefined, AAF CADI disabled");
+ registrationBean.addUrlPatterns("/xxxx/*");
+ } else {
+ registrationBean.addUrlPatterns("/*");
+ registrationBean.addInitParameter("cadi_prop_files", System.getProperty("cadi_prop_files"));
+ }
+
+ return registrationBean;
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsApp.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsApp.java
new file mode 100644
index 0000000..d436d21
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsApp.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra;
+
+import org.onap.ccsdk.apps.ms.sliboot.controllers.RestconfApiController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@SpringBootApplication(scanBasePackages = { "org.onap.sdnc.apps.ms.gra", "org.onap.ccsdk.apps.services" })
+@EnableJpaRepositories(basePackages = { "org.onap.sdnc.apps.ms.gra", "org.onap.ccsdk.apps.ms.sliboot" })
+@EntityScan(basePackages = { "org.onap.sdnc.apps.ms.gra", "org.onap.ccsdk.apps.ms.sliboot" })
+@EnableTransactionManagement
+@Import(RestconfApiController.class)
+@EnableSwagger2
+
+public class GenericResourceMsApp {
+
+ private static final Logger log = LoggerFactory.getLogger(GenericResourceMsApp.class);
+
+ public static void main(String[] args) throws Exception {
+ SpringApplication.run(GenericResourceMsApp.class, args);
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
new file mode 100644
index 0000000..7508eb8
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
@@ -0,0 +1,1969 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.onap.ccsdk.apps.services.RestApplicationException;
+import org.onap.ccsdk.apps.services.RestException;
+import org.onap.ccsdk.apps.services.RestProtocolException;
+import org.onap.sdnc.apps.ms.gra.controllers.ServiceDataHelper.ServiceDataTransaction;
+import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResources;
+import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResourcesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigNetworksRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurations;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurationsRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadData;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModules;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModulesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVnfsRepository;
+import org.onap.sdnc.apps.ms.gra.swagger.ConfigApi;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailrouteallottedresourcesContrailrouteallottedresourceAllottedResourceData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailroutetopologyContrailRouteTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiOnapmodelinformationOnapModelInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiOperStatusData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationsPortmirrorconfigurationConfigurationData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationtopologyPortMirrorConfigurationTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadModelInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloaddataPreloadData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadmodelinformationPreloadList;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadnetworktopologyinformationPreloadNetworkTopologyInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceModelInfrastructure;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServiceData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnf;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicemodelinfrastructureService;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicestatusServiceStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicetopologyServiceTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfmoduletopologyVfModuleTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfNetworkData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfresourceassignmentsVnfResourceAssignments;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnftopologyVnfTopology;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+
+@Controller
+@ComponentScan(basePackages = { "org.onap.sdnc.apps.ms.gra.*" })
+@EntityScan("org.onap.sdnc.apps.ms.gra.springboot.*")
+public class ConfigApiController implements ConfigApi {
+ private static final Logger log = LoggerFactory.getLogger(ConfigApiController.class);
+
+ private final ObjectMapper objectMapper;
+
+ private final HttpServletRequest request;
+
+ @Autowired
+ private ConfigPreloadDataRepository configPreloadDataRepository;
+
+ @Autowired
+ private ConfigServicesRepository configServicesRepository;
+
+ @Autowired
+ private ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ private ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ private ConfigVfModulesRepository configVfModulesRepository;
+
+ @Autowired
+ private ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
+ @Autowired
+ private ConfigContrailRouteAllottedResourcesRepository configContrailRouteAllottedResourcesRepository;
+
+ @Autowired
+ private ServiceDataHelper serviceDataHelper;
+
+ @Autowired
+ public ConfigApiController(ObjectMapper objectMapper, HttpServletRequest request) {
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ this.objectMapper = objectMapper;
+ this.request = request;
+ }
+
+ @Override
+ public Optional<ObjectMapper> getObjectMapper() {
+ return Optional.ofNullable(objectMapper);
+ }
+
+ @Override
+ public Optional<HttpServletRequest> getRequest() {
+ return Optional.ofNullable(request);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationDelete() {
+ configPreloadDataRepository.deleteAll();
+ return (new ResponseEntity<>(HttpStatus.NO_CONTENT));
+ }
+
+ /**
+ * Extracts port-mirror configuration data from CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS for a given, configuration-id
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+ * @param configurationId the configuration ID for a port-mirror
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ public ResponseEntity<GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration>
+ configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdGet(
+ String configurationId) throws RestApplicationException {
+ GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration retval = null;
+
+ List<ConfigPortMirrorConfigurations> pmConfigurations = configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+
+ if (pmConfigurations.isEmpty()) {
+ log.info("No configuration data found with id [{}]",configurationId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ } else {
+ ConfigPortMirrorConfigurations pmConfiguration = pmConfigurations.get(0);
+ retval = new GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration();
+ retval.setConfigurationId(configurationId);
+ retval.setConfigurationStatus(pmConfiguration.getPortMirrorConfigurationStatus());
+ try {
+ retval.setConfigurationData(objectMapper.readValue(pmConfiguration.getPmcData(), GenericResourceApiPortmirrorconfigurationsPortmirrorconfigurationConfigurationData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for service instance id {}", configurationId, e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdPut(
+ String configurationId, @Valid GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration newConfiguration)
+ throws RestApplicationException {
+
+ boolean dataExists = false;
+
+ String newConfigurationId = newConfiguration.getConfigurationId();
+
+ ConfigPortMirrorConfigurations portMirrorConfiguration = null;
+ List<ConfigPortMirrorConfigurations> existingConfiguration = configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ if ((existingConfiguration != null) && !existingConfiguration.isEmpty()) {
+ dataExists = true;
+ portMirrorConfiguration = existingConfiguration.get(0);
+ } else {
+ portMirrorConfiguration = new ConfigPortMirrorConfigurations();
+ portMirrorConfiguration.setConfigureationId(configurationId);
+ }
+
+ try {
+ portMirrorConfiguration.setPmcData(objectMapper.writeValueAsString(newConfiguration.getConfigurationData()));
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize porr-mirror configuration data for {}", portMirrorConfiguration.getConfigureationId(), e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ portMirrorConfiguration.setPortMirrorConfigurationStatus(newConfiguration.getConfigurationStatus());
+ configPortMirrorConfigurationsRepository.save(portMirrorConfiguration);
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPortmirrorconfigurationtopologyPortMirrorConfigurationTopology>
+ configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdConfigurationDataPortMirrorConfigurationTopologyGet(
+ String configurationId) throws RestApplicationException, RestProtocolException {
+ @Valid GenericResourceApiPortmirrorconfigurationtopologyPortMirrorConfigurationTopology portMirrorConfigurationTopology = null;
+ GenericResourceApiPortmirrorconfigurationsPortmirrorconfigurationConfigurationData portMirrorConfigurationData = null;
+
+ List<ConfigPortMirrorConfigurations> configPortMirrorConfigurations = configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ if ((configPortMirrorConfigurations == null) || (configPortMirrorConfigurations.isEmpty())) {
+ log.info("No configuration data found with id [{}]", configurationId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ try {
+ if ( configPortMirrorConfigurations.get(0).getPmcData().isEmpty()) {
+ throw new RestProtocolException("data-missing", "No configuration-data entry found", HttpStatus.NOT_FOUND.value());
+ } else {
+ portMirrorConfigurationData = objectMapper.readValue(configPortMirrorConfigurations.get(0).getPmcData(), GenericResourceApiPortmirrorconfigurationsPortmirrorconfigurationConfigurationData.class);
+ portMirrorConfigurationTopology = portMirrorConfigurationData.getPortMirrorConfigurationTopology();
+ }
+ if (portMirrorConfigurationTopology == null) {
+ throw new RestProtocolException("data-missing", "No service-topology entry found", HttpStatus.NOT_FOUND.value());
+ }
+ return new ResponseEntity<>(portMirrorConfigurationTopology, HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdDelete(String configurationId) {
+ configPortMirrorConfigurationsRepository.deleteByConfigurationId(configurationId);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ /**
+ * Extracts contrail-route-allotted-resource data from CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES for a given allottedResourceId
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}
+ * @param allottedResourceId the allotted-resource-id for a contrail-route
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ public ResponseEntity<GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource>
+ configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdGet(
+ String allottedResourceId) throws RestApplicationException {
+ GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource retval = null;
+
+ List<ConfigContrailRouteAllottedResources> allottedResources = configContrailRouteAllottedResourcesRepository.findByAllottedResourceId(allottedResourceId);
+
+ if (allottedResources.isEmpty()) {
+ log.info("No contrail-route-allotted-resource found with id [{}]", allottedResourceId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+ else {
+ ConfigContrailRouteAllottedResources allottedResource = allottedResources.get(0);
+ retval = new GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource();
+ retval.setAllottedResourceId(allottedResourceId);
+ retval.setAllottedResourceStatus(allottedResource.getAllottedResourceStatus());
+ try {
+ retval.setAllottedResourceData(objectMapper.readValue(allottedResource.getArData(),
+ GenericResourceApiContrailrouteallottedresourcesContrailrouteallottedresourceAllottedResourceData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for service instance id {}", allottedResourceId, e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ /**
+ * PUT contrail-route-allotted-resource data from CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES for a given allottedResourceId
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}
+ * @param allottedResourceId the allotted-resource-id for a contrail-route
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdPut(
+ String allottedResourceId, @Valid GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource newAllottedResource)
+ throws RestApplicationException {
+
+ boolean dataExists = false;
+
+ String newAllottedResourceId = newAllottedResource.getAllottedResourceId();
+
+ ConfigContrailRouteAllottedResources allottedResource = null;
+ List<ConfigContrailRouteAllottedResources> existingAllottedResource =
+ configContrailRouteAllottedResourcesRepository.findByAllottedResourceId(allottedResourceId);
+
+ if ((existingAllottedResource != null) && !existingAllottedResource.isEmpty()) {
+ dataExists = true;
+ allottedResource = existingAllottedResource.get(0);
+ } else {
+ allottedResource = new ConfigContrailRouteAllottedResources();
+ allottedResource.setAllottedResourceId(allottedResourceId);
+ }
+
+ try {
+ allottedResource.setArData(objectMapper.writeValueAsString(newAllottedResource.getAllottedResourceData()));
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize porr-mirror configuration data for {}", allottedResource.getAllottedResourceId(), e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ allottedResource.setAllottedResourceStatus(newAllottedResource.getAllottedResourceStatus());
+ configContrailRouteAllottedResourcesRepository.save(allottedResource);
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ /**
+ * Extracts contrail-route-topology data from CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES for a given allottedResourceId
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/allotted-resource-data/contrail-route-topology/
+ * @param allottedResourceId the allotted-resource-id for a contrail-route
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<GenericResourceApiContrailroutetopologyContrailRouteTopology>
+ configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdAllottedResourceDataContrailRouteTopologyGet(
+ String allottedResourceId) throws RestApplicationException, RestProtocolException {
+ @Valid GenericResourceApiContrailroutetopologyContrailRouteTopology contrailRouteTopology = null;
+ GenericResourceApiContrailrouteallottedresourcesContrailrouteallottedresourceAllottedResourceData allottedResourceData = null;
+
+ List<ConfigContrailRouteAllottedResources> configContrailRouteAllottedResources =
+ configContrailRouteAllottedResourcesRepository.findByAllottedResourceId(allottedResourceId);
+
+ if ((configContrailRouteAllottedResources == null) || (configContrailRouteAllottedResources.isEmpty())) {
+ log.info("No contrail-route-allotted-resoure data found with id [{}]", allottedResourceId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ try {
+ if ( configContrailRouteAllottedResources.get(0).getArData().isEmpty()) {
+ throw new RestProtocolException("data-missing", "No allotted-resource-data entry found", HttpStatus.NOT_FOUND.value());
+ } else {
+ allottedResourceData = objectMapper.readValue(configContrailRouteAllottedResources.get(0).getArData(),
+ GenericResourceApiContrailrouteallottedresourcesContrailrouteallottedresourceAllottedResourceData.class);
+
+ contrailRouteTopology = allottedResourceData.getContrailRouteTopology();
+ }
+ if (contrailRouteTopology == null) {
+ throw new RestProtocolException("data-missing", "No contrail-route-topology entry found", HttpStatus.NOT_FOUND.value());
+ }
+ return new ResponseEntity<>(contrailRouteTopology, HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse port-mirror-configuration data", e);
+ throw new RestApplicationException("data-conversion", "Request could not be completed due to internal error", e, HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+
+
+ /**
+ * DELETE allotted-resource data from CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES for a given allottedResourceId
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}
+ * @param allottedResourceId the allotted-resource-id for a contrail-route
+ * @return HttpStatus.NO_CONTENT (204) if the data is found.
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdDelete(
+ String allottedResourceId) {
+ configContrailRouteAllottedResourcesRepository.deleteByAllottedResourceId(allottedResourceId);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadModelInformation> configGENERICRESOURCEAPIpreloadInformationGet()
+ throws RestApplicationException {
+ GenericResourceApiPreloadModelInformation genericResourceApiPreloadModelInformation = new GenericResourceApiPreloadModelInformation();
+
+ if (configPreloadDataRepository.count() == 0) {
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ for (ConfigPreloadData configPreloadData : configPreloadDataRepository.findAll()) {
+ GenericResourceApiPreloadmodelinformationPreloadList preloadListItem = new GenericResourceApiPreloadmodelinformationPreloadList();
+
+ preloadListItem.setPreloadId(configPreloadData.getPreloadId());
+ preloadListItem.setPreloadType(configPreloadData.getPreloadType());
+ try {
+ preloadListItem.setPreloadData(objectMapper.readValue(configPreloadData.getPreloadData(),
+ GenericResourceApiPreloaddataPreloadData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ genericResourceApiPreloadModelInformation.addPreloadListItem(preloadListItem);
+ }
+
+ return new ResponseEntity<>(genericResourceApiPreloadModelInformation, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadnetworktopologyinformationPreloadNetworkTopologyInformation> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataPreloadNetworkTopologyInformationGet(
+ String preloadId, String preloadType) throws RestException {
+ GenericResourceApiPreloadnetworktopologyinformationPreloadNetworkTopologyInformation netTopoInfo = null;
+
+ if (configPreloadDataRepository.count() == 0) {
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ for (ConfigPreloadData configPreloadData : configPreloadDataRepository.findAll()) {
+
+ try {
+ GenericResourceApiPreloaddataPreloadData preloadDataItem = objectMapper
+ .readValue(configPreloadData.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class);
+ netTopoInfo = preloadDataItem.getPreloadNetworkTopologyInformation();
+ } catch (JsonProcessingException e) {
+ log.error("Could not convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+
+ return new ResponseEntity<>(netTopoInfo, HttpStatus.OK);
+ }
+
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPost(
+ @Valid GenericResourceApiPreloadModelInformation graPreloadModelInfo)
+ throws RestApplicationException, RestProtocolException {
+
+ List<GenericResourceApiPreloadmodelinformationPreloadList> preloadList = graPreloadModelInfo.getPreloadList();
+ List<ConfigPreloadData> newPreloadData = new LinkedList<>();
+
+ if (preloadList != null) {
+ // Verification pass - if any items already exist, return an error
+ for (GenericResourceApiPreloadmodelinformationPreloadList curItem : preloadList) {
+
+ List<ConfigPreloadData> curPreloadData = configPreloadDataRepository
+ .findByPreloadIdAndPreloadType(curItem.getPreloadId(), curItem.getPreloadType());
+ if ((curPreloadData != null) && (!curPreloadData.isEmpty())) {
+ log.error("Preload data already exists for {}:{}", curItem.getPreloadId(),
+ curItem.getPreloadType());
+ throw new RestProtocolException("data-exists",
+ "Data already exists for " + curItem.getPreloadId() + ":" + curItem.getPreloadType(),
+ HttpStatus.CONFLICT.value());
+ } else {
+ try {
+ newPreloadData.add(new ConfigPreloadData(curItem.getPreloadId(), curItem.getPreloadType(),
+ objectMapper.writeValueAsString(curItem.getPreloadData())));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data");
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ }
+ }
+
+ // Update pass
+ for (ConfigPreloadData newDataItem : newPreloadData) {
+ log.info("Adding preload data for {}:{}", newDataItem.getPreloadId(), newDataItem.getPreloadType());
+ configPreloadDataRepository.save(newDataItem);
+ }
+ } else {
+ throw new RestProtocolException("data-missing", "No preload-list entries found to add",
+ HttpStatus.CONFLICT.value());
+ }
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPut(
+ @Valid GenericResourceApiPreloadModelInformation graPreloadModelInfo) throws RestApplicationException {
+
+ boolean addedNew = false;
+ List<GenericResourceApiPreloadmodelinformationPreloadList> preloadList = graPreloadModelInfo.getPreloadList();
+
+ if (preloadList != null) {
+ Iterator<GenericResourceApiPreloadmodelinformationPreloadList> iter = preloadList.iterator();
+ while (iter.hasNext()) {
+ GenericResourceApiPreloadmodelinformationPreloadList curItem = iter.next();
+ List<ConfigPreloadData> curPreloadData = configPreloadDataRepository
+ .findByPreloadIdAndPreloadType(curItem.getPreloadId(), curItem.getPreloadType());
+ if ((curPreloadData == null) || curPreloadData.isEmpty()) {
+ addedNew = true;
+ }
+
+ try {
+ configPreloadDataRepository.save(new ConfigPreloadData(curItem.getPreloadId(),
+ curItem.getPreloadType(), objectMapper.writeValueAsString(curItem.getPreloadData())));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ }
+ }
+
+ if (addedNew) {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ } else {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPost(
+ @Valid GenericResourceApiPreloadmodelinformationPreloadList preloadListItem) throws RestProtocolException {
+
+ throw new RestProtocolException("data-missing", "Missing key for list \"preload-list\"",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypeDelete(
+ String preloadId, String preloadType) {
+ configPreloadDataRepository.deleteByPreloadIdAndPreloadType(preloadId, preloadType);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadmodelinformationPreloadList> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypeGet(
+ String preloadId, String preloadType) throws RestApplicationException {
+ List<ConfigPreloadData> preloadData = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+ if (preloadData != null) {
+ if (!preloadData.isEmpty()) {
+ ConfigPreloadData preloadDataItem = preloadData.get(0);
+ GenericResourceApiPreloadmodelinformationPreloadList preloadDataList = new GenericResourceApiPreloadmodelinformationPreloadList();
+ preloadDataList.setPreloadId(preloadDataItem.getPreloadId());
+ preloadDataList.setPreloadType(preloadDataItem.getPreloadType());
+ try {
+ preloadDataList.setPreloadData(objectMapper.readValue(preloadDataItem.getPreloadData(),
+ GenericResourceApiPreloaddataPreloadData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ return new ResponseEntity<>(preloadDataList, HttpStatus.OK);
+ }
+ }
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePost(
+ String preloadId, String preloadType,
+ @Valid GenericResourceApiPreloadmodelinformationPreloadList preloadListItem)
+ throws RestApplicationException, RestProtocolException {
+ List<ConfigPreloadData> preloadDataItems = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+
+ if ((preloadDataItems != null) && !preloadDataItems.isEmpty()) {
+ log.error("Preload data already exists for {}:{}", preloadId, preloadType);
+ throw new RestProtocolException("data-exists", "Data already exists for " + preloadId + ":" + preloadType,
+ HttpStatus.CONFLICT.value());
+ }
+
+ try {
+ log.info("Adding preload data for {}:{}", preloadId, preloadType);
+ configPreloadDataRepository.save(new ConfigPreloadData(preloadId, preloadType,
+ objectMapper.writeValueAsString(preloadListItem.getPreloadData())));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePut(
+ String preloadId, String preloadType,
+ @Valid GenericResourceApiPreloadmodelinformationPreloadList preloadListItem)
+ throws RestApplicationException, RestProtocolException {
+ List<ConfigPreloadData> preloadDataItems = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+ boolean dataExists = false;
+ if ((preloadDataItems != null) && !preloadDataItems.isEmpty()) {
+ dataExists = true;
+ }
+
+ if ((preloadListItem.getPreloadId() == null) || (preloadListItem.getPreloadType() == null)
+ || (preloadListItem.getPreloadData() == null)) {
+ log.error("Invalid list item received: {}", preloadListItem);
+ throw new RestProtocolException("bad-attribute", "Invalid data received", HttpStatus.BAD_REQUEST.value());
+ }
+
+ try {
+ if (dataExists) {
+ log.info("Updating preload data for {}:{} -> {}", preloadId, preloadType,
+ objectMapper.writeValueAsString(preloadListItem));
+
+ } else {
+ log.info("Adding preload data for {}:{}", preloadId, preloadType);
+ }
+
+ configPreloadDataRepository.save(new ConfigPreloadData(preloadId, preloadType,
+ objectMapper.writeValueAsString(preloadListItem.getPreloadData())));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataDelete(
+ String preloadId, String preloadType) throws RestProtocolException {
+ List<ConfigPreloadData> preloadData = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+
+ if ((preloadData == null) || preloadData.isEmpty()) {
+ throw new RestProtocolException("data-missing", "No preload entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ ConfigPreloadData preloadDataItem = preloadData.get(0);
+
+ if (preloadDataItem.getPreloadData() == null) {
+ throw new RestProtocolException("data-missing", "No preload-data found", HttpStatus.NOT_FOUND.value());
+ }
+ preloadDataItem.setPreloadData(null);
+ configPreloadDataRepository.save(preloadDataItem);
+
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloaddataPreloadData> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataGet(
+ String preloadId, String preloadType) throws RestApplicationException, RestProtocolException {
+ List<ConfigPreloadData> preloadData = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+
+ if ((preloadData == null) || preloadData.isEmpty()) {
+ throw new RestProtocolException("data-missing", "No preload entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ ConfigPreloadData preloadDataItem = preloadData.get(0);
+
+ if (preloadDataItem.getPreloadData() == null) {
+ throw new RestProtocolException("data-missing", "No preload-data found", HttpStatus.NOT_FOUND.value());
+ }
+ try {
+ return new ResponseEntity<>(objectMapper.readValue(preloadDataItem.getPreloadData(),
+ GenericResourceApiPreloaddataPreloadData.class), HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataPost(
+ String preloadId, String preloadType, @Valid GenericResourceApiPreloaddataPreloadData preloadData)
+ throws RestApplicationException, RestProtocolException {
+
+
+ List<ConfigPreloadData> preloadDataItems = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+ if ((preloadDataItems == null) || (preloadDataItems.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No preload entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((preloadData == null) || (preloadData.getPreloadNetworkTopologyInformation() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid preloadData received",
+ HttpStatus.BAD_REQUEST.value());
+ }
+
+ ConfigPreloadData preloadDataItem = preloadDataItems.get(0);
+
+ if (preloadDataItem.getPreloadData() != null) {
+ log.error("Preload data already exists for {}:{} ", preloadId, preloadType);
+ throw new RestProtocolException("data-exists", "Data already exists for " + preloadId + ":" + preloadType,
+ HttpStatus.CONFLICT.value());
+ }
+
+ try {
+ preloadDataItem.setPreloadData(objectMapper.writeValueAsString(preloadData));
+ configPreloadDataRepository.save(preloadDataItem);
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataPut(
+ String preloadId, String preloadType, @Valid GenericResourceApiPreloaddataPreloadData preloadData)
+ throws RestApplicationException, RestProtocolException {
+ boolean dataExists = false;
+ List<ConfigPreloadData> preloadDataItems = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+ if ((preloadDataItems == null) || (preloadDataItems.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No preload entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((preloadData == null) || (preloadData.getPreloadNetworkTopologyInformation() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid preloadData received",
+ HttpStatus.BAD_REQUEST.value());
+ }
+
+ ConfigPreloadData preloadDataItem = preloadDataItems.get(0);
+
+ if (preloadDataItem.getPreloadData() != null) {
+ dataExists = true;
+ }
+
+ try {
+ preloadDataItem.setPreloadData(objectMapper.writeValueAsString(preloadData));
+ configPreloadDataRepository.save(preloadDataItem);
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesDelete() {
+ configVfModulesRepository.deleteAll();
+ configVnfsRepository.deleteAll();
+ configNetworksRepository.deleteAll();
+ configServicesRepository.deleteAll();
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServiceModelInfrastructure> configGENERICRESOURCEAPIservicesGet()
+ throws RestApplicationException {
+ GenericResourceApiServiceModelInfrastructure modelInfrastructure = new GenericResourceApiServiceModelInfrastructure();
+
+ if (configServicesRepository.count() == 0) {
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ for (ConfigServices service : configServicesRepository.findAll()) {
+ GenericResourceApiServicemodelinfrastructureService serviceItem = new GenericResourceApiServicemodelinfrastructureService();
+ String svcInstanceId = service.getSvcInstanceId();
+
+ serviceItem.setServiceInstanceId(svcInstanceId);
+ serviceItem.setServiceStatus(service.getServiceStatus());
+
+ // Construct service data from networks/vnfs/vfModules
+ GenericResourceApiServicedataServiceData serviceItemSvcData;
+ try {
+ serviceItemSvcData = serviceDataHelper.getServiceData(service);
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+
+ if (serviceItemSvcData != null) {
+ serviceItem.setServiceData(serviceItemSvcData);
+ }
+ modelInfrastructure.addServiceItem(serviceItem);
+ }
+
+ return new ResponseEntity<>(modelInfrastructure, HttpStatus.OK);
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesPost(@Valid GenericResourceApiServiceModelInfrastructure modelInfrastructure)
+ throws RestApplicationException, RestProtocolException {
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+
+ for (GenericResourceApiServicemodelinfrastructureService serviceItem : modelInfrastructure.getService()) {
+ String svcInstanceId = serviceItem.getServiceInstanceId();
+ List<ConfigServices> existingService = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ if ((existingService != null) && !existingService.isEmpty()) {
+ log.error("Service data already exists for {}", svcInstanceId);
+ throw new RestProtocolException("data-exists",
+ "Data already exists for service-instance-id " + svcInstanceId, HttpStatus.CONFLICT.value());
+ }
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(serviceItem.getServiceStatus());
+
+ try {
+ serviceDataHelper.saveService(service, serviceItem.getServiceData(), transaction);
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ }
+
+ transaction.commit();
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesPut(
+ @Valid GenericResourceApiServiceModelInfrastructure modelInfrastructure) throws RestApplicationException {
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+ boolean dataExists = false;
+
+ for (GenericResourceApiServicemodelinfrastructureService serviceItem : modelInfrastructure.getService()) {
+ String svcInstanceId = serviceItem.getServiceInstanceId();
+ List<ConfigServices> existingService = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ if ((existingService != null) && !existingService.isEmpty()) {
+ dataExists = true;
+ }
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(serviceItem.getServiceStatus());
+ try {
+ serviceDataHelper.saveService(service, serviceItem.getServiceData(), transaction);
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ }
+
+ transaction.commit();
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServicePost(
+ @Valid GenericResourceApiServicemodelinfrastructureService servicesData) throws RestApplicationException {
+ String svcInstanceId = servicesData.getServiceInstanceId();
+ try {
+ ConfigServices configService = new ConfigServices(svcInstanceId, servicesData.getServiceStatus());
+ serviceDataHelper.saveService(configService, servicesData.getServiceData());
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ return new ResponseEntity<>(HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdDelete(
+ String serviceInstanceId) {
+ serviceDataHelper.deleteService(serviceInstanceId);
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicemodelinfrastructureService> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdGet(
+ String serviceInstanceId) throws RestApplicationException {
+ GenericResourceApiServicemodelinfrastructureService retval = null;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if (services.isEmpty()) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ } else {
+ ConfigServices service = services.get(0);
+ retval = new GenericResourceApiServicemodelinfrastructureService();
+ retval.setServiceInstanceId(serviceInstanceId);
+ retval.setServiceStatus(service.getServiceStatus());
+ try {
+ retval.setServiceData(serviceDataHelper.getServiceData(service));
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for service instance id {}", serviceInstanceId, e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+ }
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdPost(String svcInstanceId,
+ @Valid GenericResourceApiServicemodelinfrastructureService newService)
+ throws RestApplicationException, RestProtocolException {
+
+ List<ConfigServices> existingService = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ if ((existingService != null) && !existingService.isEmpty()) {
+ log.error("Service data already exists for {}", svcInstanceId);
+ throw new RestProtocolException("data-exists",
+ "Data already exists for service-instance-id " + svcInstanceId, HttpStatus.CONFLICT.value());
+ }
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(newService.getServiceStatus());
+ try {
+ serviceDataHelper.saveService(service, newService.getServiceData());
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdPut(String serviceInstanceId,
+ @Valid GenericResourceApiServicemodelinfrastructureService newService) throws RestApplicationException {
+
+ boolean dataExists = false;
+
+ String svcInstanceId = newService.getServiceInstanceId();
+
+ ConfigServices service = null;
+ List<ConfigServices> existingService = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ if ((existingService != null) && !existingService.isEmpty()) {
+ dataExists = true;
+ service = existingService.get(0);
+ } else {
+ service = new ConfigServices();
+ service.setSvcInstanceId(svcInstanceId);
+ }
+
+ service.setServiceStatus(newService.getServiceStatus());
+ try {
+ serviceDataHelper.saveService(service, newService.getServiceData());
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataDelete(
+ String serviceInstanceId) throws RestProtocolException {
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ ConfigServices service = services.get(0);
+ if (!serviceDataHelper.hasServiceData(service)) {
+ throw new RestProtocolException("data-missing", "No service-data found", HttpStatus.NOT_FOUND.value());
+ }
+ serviceDataHelper.clearServiceData(service);
+
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicedataServiceData> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataGet(
+ String serviceInstanceId) throws RestApplicationException, RestProtocolException {
+ GenericResourceApiServicedataServiceData serviceData = null;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ try {
+ serviceData = serviceDataHelper.getServiceData(services.get(0));
+ return new ResponseEntity<>(serviceData, HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataPost(
+ String serviceInstanceId, @Valid GenericResourceApiServicedataServiceData serviceData)
+ throws RestApplicationException, RestProtocolException {
+ ConfigServices service;
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((serviceData == null) || (serviceData.getServiceInformation() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid service-data received",
+ HttpStatus.BAD_REQUEST.value());
+
+ }
+ service = services.get(0);
+
+ if (serviceDataHelper.hasServiceData(service)) {
+ log.error("service-data already exists for svcInstanceId {}", serviceInstanceId);
+ throw new RestProtocolException("data-exists", "Data already exists for " + serviceInstanceId,
+ HttpStatus.CONFLICT.value());
+ }
+
+ try {
+ serviceDataHelper.saveService(service, serviceData);
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for svc instance id {}", serviceInstanceId, e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataPut(
+ String serviceInstanceId, @Valid GenericResourceApiServicedataServiceData serviceData)
+ throws RestApplicationException, RestProtocolException {
+ ConfigServices service;
+ boolean dataExists = false;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((serviceData == null) || (serviceData.getServiceInformation() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid service-data received",
+ HttpStatus.BAD_REQUEST.value());
+
+ }
+ service = services.get(0);
+
+ dataExists = serviceDataHelper.hasServiceData(service);
+
+ try {
+ serviceDataHelper.saveService(service, serviceData);
+ } catch (JsonProcessingException e) {
+ log.error("Could not serialize service data for svc instance id {}", serviceInstanceId, e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusDelete(
+ String serviceInstanceId) throws RestProtocolException {
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ ConfigServices service = services.get(0);
+ if (service.getServiceStatus() == null) {
+ throw new RestProtocolException("data-missing", "No service-status found", HttpStatus.NOT_FOUND.value());
+ }
+ service.setServiceStatus(null);
+ configServicesRepository.save(service);
+
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicestatusServiceStatus> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusGet(
+ String serviceInstanceId) throws RestApplicationException, RestProtocolException {
+ GenericResourceApiServicestatusServiceStatus serviceStatus = null;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ serviceStatus = services.get(0).getServiceStatus();
+ return new ResponseEntity<>(serviceStatus, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusPost(
+ String serviceInstanceId, @Valid GenericResourceApiServicestatusServiceStatus serviceStatus)
+ throws RestProtocolException {
+ ConfigServices service;
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((serviceStatus == null) || (serviceStatus.getAction() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid service-status received",
+ HttpStatus.BAD_REQUEST.value());
+
+ }
+ service = services.get(0);
+
+ if (service.getServiceStatus() != null) {
+ log.error("service-status already exists for svcInstanceId {}", serviceInstanceId);
+ throw new RestProtocolException("data-exists", "Data already exists for " + serviceInstanceId,
+ HttpStatus.CONFLICT.value());
+ }
+
+ service.setServiceStatus(serviceStatus);
+ configServicesRepository.save(service);
+
+ return new ResponseEntity<>(HttpStatus.CREATED);
+
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusPut(
+ String serviceInstanceId, @Valid GenericResourceApiServicestatusServiceStatus serviceStatus)
+ throws RestProtocolException {
+ ConfigServices service;
+ boolean dataExists = false;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ if ((serviceStatus == null) || (serviceStatus.getAction() == null)) {
+ throw new RestProtocolException("bad-attribute", "Invalid service-status received",
+ HttpStatus.BAD_REQUEST.value());
+
+ }
+ service = services.get(0);
+
+ if (service.getServiceStatus() != null) {
+ dataExists = true;
+ }
+
+ service.setServiceStatus(serviceStatus);
+ configServicesRepository.save(service);
+
+ if (dataExists) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ return new ResponseEntity<>(HttpStatus.CREATED);
+ }
+ }
+
+ /**
+ * Deletes VNF data from the Config table specified Service Instance.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+ *
+ * @param serviceInstanceId the Service Instance ID to perform the delete on
+ * @param vnfId the VNF ID of the VNF to delete
+ * @return HttpStatus.NO_CONTENT (204) on successful delete
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if unmarshalling Service Data from the
+ * database fails, there is no VNF data for {@code vnfId}, or writing
+ * Service Data back to the database fails.
+ * <p>
+ * HttpStatus.NOT_FOUND (404) if {@code serviceInstanceId} does not
+ * exist.
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdDelete(
+ String serviceInstanceId, String vnfId) throws RestException {
+ log.info("DELETE | VNF Data for ({})", vnfId);
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}).", serviceInstanceId);
+ // Or throw the data not found error?
+ throw new RestProtocolException("data-missing", "Service Instance ID not found.",
+ HttpStatus.NOT_FOUND.value());
+ } else {
+ data = services.get(0);
+ }
+
+ if (!serviceDataHelper.hasServiceData(data)) {
+ log.info("Could not find Service Data for ({}).", serviceInstanceId);
+ throw new RestProtocolException("data-missing", "Service data not found.", HttpStatus.NOT_FOUND.value());
+ }
+
+ if (serviceDataHelper.deleteVnf(serviceInstanceId, vnfId) > 0) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
+ // Data was not found
+ log.error("Did not find VNF ({}) in data.", vnfId);
+ throw new RestProtocolException("data-missing", "VNF ID not found.", HttpStatus.NOT_FOUND.value());
+ }
+ }
+
+ /**
+ * Extracts VNF data from the Config table specified Service Instance.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+ *
+ * @param serviceInstanceId the Service Instance ID to lookup data for
+ * @param vnfId the VNF ID of the VNF to return
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<GenericResourceApiServicedataServicedataVnfsVnf> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdGet(
+ String serviceInstanceId, String vnfId) throws RestException {
+ log.info("GET | VNF Data for ({})", vnfId);
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (vnf != null) {
+ return new ResponseEntity<>(vnf, HttpStatus.OK);
+ } else {
+ log.info("No information found for {}", vnfId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+ }
+
+ /**
+ * Creates or updates VNF data in the Config table for a specified Service
+ * Instance. If it is a new Service Instance or a new VNF, creates all necessary
+ * parent data containers, then performs the updates.
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+ * @param serviceInstanceId the Service Instance ID to perform the delete on
+ * @param vnfId the VNF ID of the VNF to delete
+ * @param genericResourceApiServicedataServicedataVnfsVnfBodyParam the playload
+ * @return HttpStatus.CREATED (201) on successful create
+ * <p>
+ * HttpStatus.NO_CONTENT (204) on successful update
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if {@code vnfId} does not match what is specified in the
+ * {@code genericResourceApiServicedataServicedataVnfsVnfBodyParam} , or if updating the database fails.
+ * @throws RestException
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdPut(
+ String serviceInstanceId, String vnfId,
+ GenericResourceApiServicedataServicedataVnfsVnf vnf)
+ throws RestException {
+ log.info("PUT | VNF Data for ({})", vnfId);
+ if (!vnfId.equals(vnf.getVnfId())) {
+ throw new RestProtocolException("bad-attribute", "vnf-id mismatch", HttpStatus.BAD_REQUEST.value());
+ }
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
+ data = new ConfigServices();
+ data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
+ } else {
+ data = services.get(0);
+ }
+
+ try {
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ if (serviceDataHelper.getVnf(serviceInstanceId, vnfId) == null) {
+ responseStatus = HttpStatus.CREATED;
+ }
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
+ return new ResponseEntity<>(responseStatus);
+ } catch (JsonProcessingException e) {
+ log.error("Error saving vnf", e);
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+ /**
+ * Extracts VNF Topology data from the Config table specified Service Instance
+ * and VNF ID.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-topology/
+ *
+ * @param serviceInstanceId the Service Instance ID to lookup data for
+ * @param vnfId the VNF ID of the VNF to extract topology data from.
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<GenericResourceApiVnftopologyVnfTopology> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyGet(
+ String serviceInstanceId, String vnfId) throws RestException {
+ log.info("GET | VNF Topology for ({})", vnfId);
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ // Drill down to find the data
+ if (vnf != null && vnf.getVnfData() != null && vnf.getVnfData().getVnfTopology() != null) {
+ return new ResponseEntity<>(vnf.getVnfData().getVnfTopology(), HttpStatus.OK);
+ } else {
+ log.info("No information found for {}", vnfId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+ }
+
+ /**
+ * Creates or updates VNF Level Operation Status data in the Config table for a
+ * specified Service Instance. If it is a new Service Instance or a new VNF,
+ * creates all necessary parent data containers, then performs the updates.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-level-oper-status/
+ *
+ * @param serviceInstanceId the Service Instance ID to
+ * perform the delete on
+ * @param vnfId the VNF ID of the VNF to
+ * delete
+ * @param genericResourceApiOperStatusDataBodyParam the payload
+ * @return HttpStatus.CREATED (201) on successful create.
+ * <p>
+ * HttpStatus.NO_CONTENT (204) on successful update.
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if updating the database fails.
+ * @throws RestException
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfLevelOperStatusPut(
+ String serviceInstanceId, String vnfId,
+ GenericResourceApiOperStatusData genericResourceApiOperStatusDataBodyParam) throws RestException {
+ log.info("PUT | VNF Level Oper Status ({})", vnfId);
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
+ data = new ConfigServices();
+ data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
+ } else {
+ data = services.get(0);
+ }
+
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+
+ try {
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ if (vnf == null) {
+ responseStatus = HttpStatus.CREATED;
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(vnfId);
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+ vnfData.setVnfLevelOperStatus(genericResourceApiOperStatusDataBodyParam);
+ vnf.setVnfData(vnfData);
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
+ return new ResponseEntity<>(responseStatus);
+ } catch (JsonProcessingException e) {
+ log.error("Error saving vnf", e);
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+ /**
+ * Creates or updates VNF Onap Model Information data in the Config table for a
+ * specified Service Instance. If it is a new Service Instance or a new VNF,
+ * creates all necessary parent data containers, then performs the updates.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-topology/onap-model-information/
+ *
+ * @param serviceInstanceId the
+ * Service
+ * Instance
+ * ID
+ * to
+ * perform
+ * the
+ * delete
+ * on
+ * @param vnfId the
+ * VNF
+ * ID
+ * of
+ * the
+ * VNF
+ * to
+ * delete
+ * @param genericResourceApiOnapmodelinformationOnapModelInformationBodyParam the
+ * payload
+ * @return HttpStatus.CREATED (201) on successful create.
+ * <p>
+ * HttpStatus.NO_CONTENT (204) on successful update.
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if updating the database fails.
+ * @throws RestException
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyOnapModelInformationPut(
+ String serviceInstanceId, String vnfId,
+ GenericResourceApiOnapmodelinformationOnapModelInformation genericResourceApiOnapmodelinformationOnapModelInformationBodyParam)
+ throws RestException {
+ log.info("PUT | VNF Topology Onap Model Information ({})", vnfId);
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
+ data = new ConfigServices();
+ data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
+ } else {
+ data = services.get(0);
+ }
+
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (vnf == null) {
+ responseStatus = HttpStatus.CREATED;
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(vnfId);
+ vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
+ vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
+ }
+
+ vnf.getVnfData().getVnfTopology()
+ .setOnapModelInformation(genericResourceApiOnapmodelinformationOnapModelInformationBodyParam);
+
+ // Save the updated VNF (and service, if new)
+ try {
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
+ return new ResponseEntity<>(responseStatus);
+ } catch (JsonProcessingException e) {
+ log.error("Error mapping object to JSON", e);
+ // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+ /**
+ * Creates or updates VNF Network data in the Config table for a specified
+ * Service Instance. If it is a new Service Instance or a new VNF, creates all
+ * necessary parent data containers, then performs the updates.
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/
+ * @param serviceInstanceId the Service Instance ID to perform the delete on
+ * @param vnfId the VNF ID of the VNF to delete
+ * @param genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam the * payload
+ * @return HttpStatus.CREATED (201) on successful create.
+ * <p>
+ * HttpStatus.NO_CONTENT (204) on successful update.
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if updating the database fails.
+ * @throws RestException
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyVnfResourceAssignmentsVnfNetworksPut(
+ String serviceInstanceId, String vnfId,
+ GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam)
+ throws RestException {
+ log.info("PUT | VNF Topology VNF Resource Assignments VNF Networks ({})", vnfId);
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
+ data = new ConfigServices();
+ data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
+ } else {
+ data = services.get(0);
+ }
+
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (vnf == null) {
+ log.info("Creating VNF data for ({})", vnfId);
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(vnfId);
+ responseStatus = HttpStatus.CREATED;
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+
+ GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfData.getVnfTopology();
+ if (vnfTopology == null) {
+ vnfTopology = new GenericResourceApiVnftopologyVnfTopology();
+ }
+
+ GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();
+ if (vnfResourceAssignments == null) {
+ vnfResourceAssignments = new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments();
+ }
+ vnfResourceAssignments.setVnfNetworks(genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam);
+ vnfTopology.setVnfResourceAssignments(vnfResourceAssignments);
+ vnfData.setVnfTopology(vnfTopology);
+ vnf.setVnfData(vnfData);
+
+ // Map and save the new data
+ try {
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
+ return new ResponseEntity<>(responseStatus);
+ } catch (JsonProcessingException e) {
+ log.error("Error mapping object to JSON", e);
+ // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+ /**
+ * Creates or updates VNF Network Role data in the Config table for a specified
+ * Service Instance. If it is a new Service Instance or a new VNF, creates all
+ * necessary parent data containers, then performs the updates.
+ * <p>
+ * Maps to
+ * /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/vnf-network/{network-role}/
+ *
+ * @param serviceInstanceId the Service Instance ID to
+ * perform the delete on
+ * @param vnfId the VNF ID of the VNF to
+ * delete
+ * @param genericResourceApiVnfNetworkDataBodyParam the payload
+ * @return HttpStatus.CREATED (201) on successful create.
+ * <p>
+ * HttpStatus.NO_CONTENT (204) on successful update.
+ * <p>
+ * HttpStatus.BAD_REQUEST (400) if updating the database fails.
+ * @throws RestException
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyVnfResourceAssignmentsVnfNetworksVnfNetworkNetworkRolePut(
+ String serviceInstanceId, String vnfId, String networkRole,
+ GenericResourceApiVnfNetworkData genericResourceApiVnfNetworkDataBodyParam) throws RestException {
+ log.info("PUT | VNF Network Network Role ({})", vnfId);
+ if (!networkRole.equals(genericResourceApiVnfNetworkDataBodyParam.getNetworkRole())) {
+ throw new RestProtocolException("bad-attribute", "network-role mismatch", HttpStatus.BAD_REQUEST.value());
+ }
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ ConfigServices data;
+ if ((services == null) || (services.isEmpty())) {
+ log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
+ data = new ConfigServices();
+ data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
+ } else {
+ data = services.get(0);
+ }
+
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (vnf == null) {
+ log.info("Creating VNF data for ({})", vnfId);
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(vnfId);
+ responseStatus = HttpStatus.CREATED;
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+
+ GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfData.getVnfTopology();
+ if (vnfTopology == null) {
+ vnfTopology = new GenericResourceApiVnftopologyVnfTopology();
+ }
+
+ GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();
+ if (vnfResourceAssignments == null) {
+ vnfResourceAssignments = new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments();
+ }
+
+ GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks vnfNetworks = vnfResourceAssignments.getVnfNetworks();
+ if (vnfNetworks == null) {
+ vnfNetworks = new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks();
+ vnfNetworks.setVnfNetwork(new ArrayList<>());
+ }
+
+
+ if (vnfNetworks.getVnfNetwork().isEmpty()) {
+ vnfNetworks.addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
+ } else {
+ GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks vnfNetworksNew = new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks();
+ vnfNetworksNew.setVnfNetwork(new ArrayList<>());
+ vnfNetworks.getVnfNetwork().stream()
+ .filter(targetNetwork -> !targetNetwork.getNetworkRole().equals(networkRole)).forEach(vnfNetworksNew::addVnfNetworkItem);
+
+ vnfNetworksNew.addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
+ vnfNetworks = vnfNetworksNew;
+ }
+
+ vnfResourceAssignments.setVnfNetworks(vnfNetworks);
+ vnfTopology.setVnfResourceAssignments(vnfResourceAssignments);
+ vnfData.setVnfTopology(vnfTopology);
+ vnf.setVnfData(vnfData);
+ try {
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
+ return new ResponseEntity<>(responseStatus);
+ } catch (JsonProcessingException e) {
+ log.error("Error mapping object to JSON", e);
+ // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicetopologyServiceTopology> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataServiceTopologyGet(
+ String serviceInstanceId) throws RestApplicationException, RestProtocolException {
+ GenericResourceApiServicetopologyServiceTopology serviceTopology = null;
+ GenericResourceApiServicedataServiceData serviceData = null;
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if ((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ ConfigServices service = services.get(0);
+
+ try {
+ if ( (service.getSvcData() == null) || service.getSvcData().isEmpty()) {
+ throw new RestProtocolException("data-missing", "No service-data entry found",
+ HttpStatus.NOT_FOUND.value());
+ } else {
+ serviceData = serviceDataHelper.getServiceData(service);
+ serviceTopology = serviceData.getServiceTopology();
+ }
+ if (serviceTopology == null) {
+ throw new RestProtocolException("data-missing", "No service-topology entry found",
+ HttpStatus.NOT_FOUND.value());
+ }
+ return new ResponseEntity<>(serviceTopology, HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ }
+
+ /**
+ * Extracts VF MODULE data from CONFIG_GRA_SERVICES for a given, service-instance-id, vnf-id, and vf-module-id
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+ * @param serviceInstanceId the Service Instance ID to lookup data for
+ * @param vnfId the VNF ID of the VNF to return
+ * @param vfModuleId the vf-moudle ID of a specific VNF to return
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule>
+ configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdGet(
+ String serviceInstanceId, String vnfId, String vfModuleId) throws RestException {
+
+ log.info("GET | Vf Module Data for ({})", vfModuleId);
+
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if((services == null) || (services.isEmpty())) {
+ throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule;
+ try {
+ vfModule = serviceDataHelper.getVfModule(serviceInstanceId, vnfId, vfModuleId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if(vfModule != null) {
+ return new ResponseEntity<>(vfModule, HttpStatus.OK);
+ } else {
+ log.info("No vf-module found for [{}]", vfModuleId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+ }
+
+ /**
+ * PUT VF MODULE data into CONFIG_GRA_SERVICES of a given, service-instance-id, vnf-id
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+ * @param serviceInstanceId the Service Instance ID
+ * @param vnfId the VNF ID as the parent of the specified vf-module-id and child of the specified service-instance
+ * @param vfModuleId the vf-moudle ID as a child of the specified VNF
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdPut(
+ String serviceInstanceId, String vnfId, String vfModuleId,
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam)
+ throws RestException {
+ log.info("PUT | vf-module Data of ({}) for vnf ({}) in service({})", vfModuleId, vnfId, serviceInstanceId);
+
+ if(! vfModuleId.equals(genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam.getVfModuleId())) {
+ throw new RestProtocolException("bad-attribute", "vf-module-id mismatch", HttpStatus.BAD_REQUEST.value());
+ }
+
+
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if((services == null) || (services.isEmpty())) {
+ log.error("service-instance-id ({}) not found in SDN.", serviceInstanceId);
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf;
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e1) {
+ log.error("Could not parse service data", e1);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e1,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if(vnf == null) {
+ log.error("vnf-id ({}) not found in SDN.", vnfId);
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+
+ // See if this is the first vf module being added
+ List<ConfigVfModules> configVfModules = configVfModulesRepository.findBySvcInstanceIdAndVnfId(serviceInstanceId, vnfId);
+
+ if ((configVfModules == null) || configVfModules.isEmpty()) {
+ responseStatus = HttpStatus.CREATED;
+ }
+
+ // Add vf module
+ try {
+ serviceDataHelper.saveVfModule(serviceInstanceId, vnfId, genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam, null);
+ return new ResponseEntity<>(responseStatus);
+ } catch(JsonProcessingException e) {
+ log.error("Error mapping object to JSON", e);
+ // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+ }
+
+ /**
+ * Extracts VF MODULE Topology data from the Config table specified Service
+ * Instance and VNF ID.
+ * <p>
+ * Maps to /config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/vf-module-data/vf-module-topology/
+ * @param serviceInstanceId the Service Instance ID to lookup data for
+ * @param vnfId the VNF ID of the VNF to extract topology data from.
+ * @param vfModuleId the vf-module-idof the vf-module to extract topology data from.
+ * @return HttpStatus.OK (200) if the data is found.
+ * @throws RestException if the data does not exist.
+ */
+ @Override
+ public ResponseEntity<GenericResourceApiVfmoduletopologyVfModuleTopology>
+ configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdVfModuleDataVfModuleTopologyGet(
+ String serviceInstanceId, String vnfId, String vfModuleId) throws RestException {
+ log.info("GET | vf-module-topology for ({})", vfModuleId);
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if((services == null) || (services.isEmpty())) {
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule;
+ try {
+ vfModule = serviceDataHelper.getVfModule(serviceInstanceId, vnfId, vfModuleId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ if (vfModule != null
+ && vfModule.getVfModuleData() != null
+ && vfModule.getVfModuleData().getVfModuleTopology() != null) {
+ return new ResponseEntity<>(vfModule.getVfModuleData().getVfModuleTopology(), HttpStatus.OK);
+ } else {
+ log.info("No information found for {}", vfModuleId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
+ }
+ }
+
+ @Override
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdDelete(
+ String serviceInstanceId, String vnfId, String vfModuleId) throws RestProtocolException {
+
+ log.info("DELETE | vf-module Data for ({})", vfModuleId);
+
+
+
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if((services == null) || (services.isEmpty())) {
+ log.error("service-instance-id ({}) not found in SDN.", serviceInstanceId);
+ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ }
+
+
+
+ serviceDataHelper.deleteVfModule(serviceInstanceId, vnfId, vfModuleId);
+ return new ResponseEntity<>(HttpStatus.OK);
+
+ }
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationalApiController.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationalApiController.java
new file mode 100644
index 0000000..aeecd63
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationalApiController.java
@@ -0,0 +1,213 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.onap.sdnc.apps.ms.gra.data.*;
+import org.onap.sdnc.apps.ms.gra.swagger.OperationalApi;
+import org.onap.sdnc.apps.ms.gra.swagger.model.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+@Controller
+@ComponentScan(basePackages = {"org.onap.sdnc.apps.ms.gra.*"})
+@EntityScan("org.onap.sdnc.apps.ms.gra.springboot.*")
+public class OperationalApiController implements OperationalApi {
+ private static final Logger log = LoggerFactory.getLogger(ConfigApiController.class);
+
+ private final ObjectMapper objectMapper;
+
+ private final HttpServletRequest request;
+
+ @Autowired
+ private OperationalPreloadDataRepository operationalPreloadDataRepository;
+
+ @Autowired
+ private OperationalServicesRepository operationalServicesRepository;
+
+ @Autowired
+ public OperationalApiController(ObjectMapper objectMapper, HttpServletRequest request) {
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ this.objectMapper = objectMapper;
+ this.request = request;
+ }
+
+ @Override
+ public Optional<ObjectMapper> getObjectMapper() {
+ return Optional.ofNullable(objectMapper);
+ }
+
+ @Override
+ public Optional<HttpServletRequest> getRequest() {
+ return Optional.ofNullable(request);
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadModelInformation> operationalGENERICRESOURCEAPIpreloadInformationGet() {
+ GenericResourceApiPreloadModelInformation genericResourceApiPreloadModelInformation = new GenericResourceApiPreloadModelInformation();
+
+ operationalPreloadDataRepository.findAll().forEach(configPreloadData -> {
+ GenericResourceApiPreloadmodelinformationPreloadList preloadListItem = new GenericResourceApiPreloadmodelinformationPreloadList();
+
+ preloadListItem.setPreloadId(configPreloadData.getPreloadId());
+ preloadListItem.setPreloadType(configPreloadData.getPreloadType());
+ try {
+ preloadListItem.setPreloadData(objectMapper.readValue(configPreloadData.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not convert preload data", e);
+ }
+ genericResourceApiPreloadModelInformation.addPreloadListItem(preloadListItem);
+ });
+
+
+ return new ResponseEntity<>(genericResourceApiPreloadModelInformation, HttpStatus.OK);
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadmodelinformationPreloadList> operationalGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypeGet(String preloadId, String preloadType) {
+ List<OperationalPreloadData> preloadData = operationalPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId, preloadType);
+ if (preloadData != null) {
+ if (!preloadData.isEmpty()) {
+ OperationalPreloadData preloadDataItem = preloadData.get(0);
+ GenericResourceApiPreloadmodelinformationPreloadList preloadDataList = new GenericResourceApiPreloadmodelinformationPreloadList();
+ preloadDataList.setPreloadId(preloadDataItem.getPreloadId());
+ preloadDataList.setPreloadType(preloadDataItem.getPreloadType());
+ try {
+ preloadDataList.setPreloadData(objectMapper.readValue(preloadDataItem.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ }
+ return new ResponseEntity<>(preloadDataList, HttpStatus.OK);
+ }
+ }
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloaddataPreloadData> operationalGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataGet(String preloadId, String preloadType) {
+ List<OperationalPreloadData> preloadData = operationalPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId, preloadType);
+ if (preloadData != null) {
+ if (!preloadData.isEmpty()) {
+ OperationalPreloadData preloadDataItem = preloadData.get(0);
+ try {
+ return new ResponseEntity<>(objectMapper.readValue(preloadDataItem.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class), HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert preload data", e);
+ }
+ }
+ }
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiServiceModelInfrastructure> operationalGENERICRESOURCEAPIservicesGet() {
+ GenericResourceApiServiceModelInfrastructure modelInfrastructure = new GenericResourceApiServiceModelInfrastructure();
+
+ AtomicBoolean caughtError = new AtomicBoolean(false);
+ operationalServicesRepository.findAll().forEach(service ->
+ {
+ GenericResourceApiServicemodelinfrastructureService serviceItem = new GenericResourceApiServicemodelinfrastructureService();
+ serviceItem.setServiceInstanceId(service.getSvcInstanceId());
+ try {
+ serviceItem.setServiceData(objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for {}", service.getSvcInstanceId(), e);
+ caughtError.set(true);
+ }
+ serviceItem.setServiceStatus(service.getServiceStatus());
+ modelInfrastructure.addServiceItem(serviceItem);
+ });
+
+ if (caughtError.get()) {
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ } else {
+ return new ResponseEntity<>(modelInfrastructure, HttpStatus.OK);
+ }
+ }
+
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicemodelinfrastructureService> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdGet(String serviceInstanceId) {
+ GenericResourceApiServicemodelinfrastructureService retval = null;
+
+ List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if (services.isEmpty()) {
+ return new ResponseEntity<> (HttpStatus.NOT_FOUND);
+ } else {
+ OperationalServices service = services.get(0);
+ retval = new GenericResourceApiServicemodelinfrastructureService();
+ retval.setServiceInstanceId(serviceInstanceId);
+ retval.setServiceStatus(service.getServiceStatus());
+ try {
+ retval.setServiceData(objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class));
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for service instance id {}", serviceInstanceId, e);
+ retval = null;
+ }
+ }
+
+ if (retval == null) {
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ } else {
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicedataServiceData> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataGet(String serviceInstanceId) {
+ GenericResourceApiServicedataServiceData serviceData = null;
+
+ List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
+ if (services.isEmpty()) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ } else {
+ try {
+ serviceData = objectMapper.readValue(services.get(0).getSvcData(), GenericResourceApiServicedataServiceData.class);
+ return new ResponseEntity<>(serviceData, HttpStatus.OK);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServicestatusServiceStatus> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusGet(String serviceInstanceId) {
+ GenericResourceApiServicestatusServiceStatus serviceStatus = null;
+ List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
+
+ if (!services.isEmpty()) {
+ OperationalServices service = services.get(0);
+ serviceStatus = service.getServiceStatus();
+ }
+
+ if (serviceStatus == null) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ } else {
+ return new ResponseEntity<>(serviceStatus, HttpStatus.OK);
+ }
+
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
new file mode 100644
index 0000000..6b0a463
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
@@ -0,0 +1,1858 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import java.util.Properties;
+import java.util.TimeZone;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.onap.ccsdk.apps.services.RestException;
+import org.onap.ccsdk.apps.services.SvcLogicFactory;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.sli.SvcLogicLoader;
+import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
+import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResourcesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigNetworksRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurations;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurationsRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadData;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModulesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVnfsRepository;
+import org.onap.sdnc.apps.ms.gra.data.OperationalContrailRouteAllottedResourcesRepository;
+import org.onap.sdnc.apps.ms.gra.data.OperationalPortMirrorConfigurationsRepository;
+import org.onap.sdnc.apps.ms.gra.data.OperationalPreloadData;
+import org.onap.sdnc.apps.ms.gra.data.OperationalPreloadDataRepository;
+import org.onap.sdnc.apps.ms.gra.data.OperationalServices;
+import org.onap.sdnc.apps.ms.gra.data.OperationalServicesRepository;
+import org.onap.sdnc.apps.ms.gra.swagger.OperationsApi;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiInstanceReference;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiNetworkOperationInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiNetworkOperationInformationBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiNetworkTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiNetworktopologyoperationOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPolicyUpdateNotifyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPolicyupdatenotifyoperationInput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPolicyupdatenotifyoperationInputBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPolicyupdatenotifyoperationOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortMirrorTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortMirrorTopologyOperationInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortMirrorTopologyOperationInformationBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrortopologyoperationOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadNetworkTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadTopologyResponseBody;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadVfModuleTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloaddataPreloadData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadnetworktopologyoperationInputBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadvfmoduletopologyoperationInputBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceOperationInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceOperationInformationBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicetopologyoperationOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfModuleOperationInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfModuleOperationInformationBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfModuleTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfmoduletopologyoperationOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfGetResourceRequest;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfOperationInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfOperationInformationBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfTopologyOperation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfgetresourcerequestInput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfgetresourcerequestInputBodyparam;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfgetresourcerequestOutput;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnftopologyoperationOutput;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+
+@Controller
+@ComponentScan(basePackages = { "org.onap.sdnc.apps.ms.gra.*", "org.onap.ccsdk.apps.services" })
+@EntityScan("org.onap.sdnc.apps.ms.gra.*")
+@Import(value = SvcLogicFactory.class)
+public class OperationsApiController implements OperationsApi {
+
+ private static final String CALLED_STR = "{} called.";
+ private static final String MODULE_NAME = "GENERIC-RESOURCE-API";
+ private static final String SERVICE_OBJECT_PATH_PARAM = "service-object-path";
+ private static final String NETWORK_OBJECT_PATH_PARAM = "network-object-path";
+ private static final String VNF_OBJECT_PATH_PARAM = "vnf-object-path";
+ private static final String PNF_OBJECT_PATH_PARAM = "pnf-object-path";
+ private static final String VF_MODULE_OBJECT_PATH_PARAM = "vf-module-object-path";
+ private static final String PORT_MIRROR_OBJECT_PATH_PARAM = "port-mirror-object-path";
+ private static final String BACKGROUND_THREAD_STARTED_MESSAGE = "Start background thread";
+ private static final String BACKGROUND_THREAD_INFO = "Background thread: input conf_id is {}";
+ private static final String SKIP_MDSAL_UPDATE_PROP = "skip-mdsal-update";
+ private static final String ADDING_INPUT_DATA_LOG = "Adding INPUT data for {} [{}] input: {}";
+ private static final String ADDING_OPERATIONAL_DATA_LOG = "Adding OPERATIONAL data for {} [{}] operational-data: {}";
+
+ private final ObjectMapper objectMapper;
+
+ private final HttpServletRequest request;
+
+ @Autowired
+ protected SvcLogicServiceBase svc;
+
+ @Autowired
+ protected SvcLogicLoader svcLogicLoader;
+
+ @Autowired
+ private ConfigPreloadDataRepository configPreloadDataRepository;
+
+ @Autowired
+ private OperationalPreloadDataRepository operationalPreloadDataRepository;
+
+ @Autowired
+ private ConfigServicesRepository configServicesRepository;
+
+ @Autowired
+ private OperationalServicesRepository operationalServicesRepository;
+
+ @Autowired
+ private ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ private ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ private ConfigVfModulesRepository configVfModulesRepository;
+
+ @Autowired
+ private ConfigContrailRouteAllottedResourcesRepository configContrailRouteAllottedResourcesRepository;
+
+ @Autowired
+ private OperationalContrailRouteAllottedResourcesRepository operationalContrailRouteAllottedResourcesRepository;
+
+ @Autowired
+ private ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
+ @Autowired
+ private OperationalPortMirrorConfigurationsRepository operationalPortMirrorConfigurationsRepository;
+
+ @Autowired
+ private ServiceDataHelper serviceDataHelper;
+
+ private static class Iso8601Util {
+
+ private static TimeZone timeZone = TimeZone.getTimeZone("UTC");
+ private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+
+ private Iso8601Util() {
+ }
+
+ static {
+ dateFormat.setTimeZone(timeZone);
+ }
+
+ private static String now() {
+ return dateFormat.format(new Date());
+ }
+ }
+
+ @org.springframework.beans.factory.annotation.Autowired
+ public OperationsApiController(ObjectMapper objectMapper, HttpServletRequest request) {
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ this.objectMapper = objectMapper;
+ this.request = request;
+ }
+
+ @Override
+ public Optional<ObjectMapper> getObjectMapper() {
+ return Optional.ofNullable(objectMapper);
+ }
+
+ @Override
+ public Optional<HttpServletRequest> getRequest() {
+ return Optional.ofNullable(request);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadNetworkTopologyOperation> operationsGENERICRESOURCEAPIpreloadNetworkTopologyOperationPost(
+ @Valid GenericResourceApiPreloadnetworktopologyoperationInputBodyparam graInput) {
+ final String svcOperation = "preload-network-topology-operation";
+ GenericResourceApiPreloadNetworkTopologyOperation retval = new GenericResourceApiPreloadNetworkTopologyOperation();
+ GenericResourceApiPreloadTopologyResponseBody resp = new GenericResourceApiPreloadTopologyResponseBody();
+
+ log.info(CALLED_STR, svcOperation);
+ if (hasInvalidPreloadNetwork(graInput)) {
+ log.debug("exiting {} because of null or empty preload-network-topology-information", svcOperation);
+
+ resp.setResponseCode("403");
+ resp.setResponseMessage("invalid input, null or empty preload-network-topology-information");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.FORBIDDEN);
+ }
+
+ String preloadId = graInput.getInput().getPreloadNetworkTopologyInformation()
+ .getNetworkTopologyIdentifierStructure().getNetworkId();
+ String preloadType = "network";
+
+ resp.setSvcRequestId(graInput.getInput().getSdncRequestHeader().getSvcRequestId());
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ GenericResourceApiPreloaddataPreloadData preloadData = null;
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(graInput.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ try {
+ preloadData = getConfigPreloadData(preloadId, preloadType);
+ ctxIn.mergeJson("preload-data", objectMapper.writeValueAsString(preloadData));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on saved config preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ try {
+ preloadData = getOperationalPreloadData(preloadId, preloadType);
+ ctxIn.mergeJson("operational-data", objectMapper.writeValueAsString(preloadData));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on saved operational preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ if ("200".equals(resp.getResponseCode())) {
+ // If DG returns success, update database
+ String ctxJson = ctxOut.toJsonString("preload-data");
+ log.info("DG preload-data is {}", ctxJson);
+ GenericResourceApiPreloaddataPreloadData preloadToLoad = objectMapper.readValue(ctxJson,
+ GenericResourceApiPreloaddataPreloadData.class);
+ saveConfigPreloadData(preloadId, preloadType, preloadToLoad);
+ saveOperationalPreloadData(preloadId, preloadType, preloadToLoad);
+ }
+
+ } catch (NullPointerException npe) {
+ log.error("Caught NPE", npe);
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ log.error("Caught SvcLogicException", e);
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ } catch (JsonMappingException e) {
+ log.error("Caught JsonMappingException", e);
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ } catch (JsonProcessingException e) {
+ log.error("Caught JsonProcessingException", e);
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.valueOf(Integer.parseInt(resp.getResponseCode()))));
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPreloadVfModuleTopologyOperation> operationsGENERICRESOURCEAPIpreloadVfModuleTopologyOperationPost(
+ @Valid GenericResourceApiPreloadvfmoduletopologyoperationInputBodyparam graInput) {
+ final String svcOperation = "preload-vf-module-topology-operation";
+ GenericResourceApiPreloadVfModuleTopologyOperation retval = new GenericResourceApiPreloadVfModuleTopologyOperation();
+ GenericResourceApiPreloadTopologyResponseBody resp = new GenericResourceApiPreloadTopologyResponseBody();
+
+ log.info(CALLED_STR, svcOperation);
+ if (hasInvalidPreloadNetwork(graInput)) {
+ log.debug("exiting {} because of null or empty preload-network-topology-information", svcOperation);
+
+ resp.setResponseCode("403");
+ resp.setResponseMessage("invalid input, null or empty preload-network-topology-information");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.FORBIDDEN);
+ }
+
+ String preloadId = graInput.getInput().getPreloadVfModuleTopologyInformation().getVfModuleTopology()
+ .getVfModuleTopologyIdentifier().getVfModuleName();
+ String preloadType = "vf-module";
+
+ resp.setSvcRequestId(graInput.getInput().getSdncRequestHeader().getSvcRequestId());
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ GenericResourceApiPreloaddataPreloadData preloadData = null;
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(graInput.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ try {
+ preloadData = getConfigPreloadData(preloadId, preloadType);
+ ctxIn.mergeJson("preload-data", objectMapper.writeValueAsString(preloadData));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on saved config preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ try {
+ preloadData = getOperationalPreloadData(preloadId, preloadType);
+ ctxIn.mergeJson("operational-data", objectMapper.writeValueAsString(preloadData));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on saved operational preload data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ if ("200".equals(resp.getResponseCode())) {
+ // If DG returns success, update database
+ String ctxJson = ctxOut.toJsonString("preload-data");
+ GenericResourceApiPreloaddataPreloadData preloadToLoad = objectMapper.readValue(ctxJson,
+ GenericResourceApiPreloaddataPreloadData.class);
+ saveConfigPreloadData(preloadId, preloadType, preloadToLoad);
+ saveOperationalPreloadData(preloadId, preloadType, preloadToLoad);
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ } catch (JsonMappingException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ } catch (JsonProcessingException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.valueOf(Integer.parseInt(resp.getResponseCode()))));
+ }
+
+ private boolean hasInvalidPreloadNetwork(
+ GenericResourceApiPreloadnetworktopologyoperationInputBodyparam preloadData) {
+ return ((preloadData == null) || (preloadData.getInput() == null)
+ || (preloadData.getInput().getPreloadNetworkTopologyInformation() == null));
+ }
+
+ private boolean hasInvalidPreloadNetwork(
+ GenericResourceApiPreloadvfmoduletopologyoperationInputBodyparam preloadData) {
+ return ((preloadData == null) || (preloadData.getInput() == null)
+ || (preloadData.getInput().getPreloadVfModuleTopologyInformation() == null));
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiServiceOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiNetworkOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiVnfOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiVfModuleOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiPortMirrorTopologyOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidServiceId(GenericResourceApiVnfgetresourcerequestInput input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
+ private boolean hasInvalidVnfId(GenericResourceApiVfModuleOperationInformation input) {
+
+ return input == null || input.getVnfInformation() == null
+ || input.getVnfInformation().getVnfId() == null
+ || input.getVnfInformation().getVnfId().length() == 0;
+ }
+
+ private boolean hasInvalidConfigurationId(GenericResourceApiPortMirrorTopologyOperationInformation input) {
+ return input.getConfigurationInformation() == null
+ || input.getConfigurationInformation().getConfigurationId() == null
+ || input.getConfigurationInformation().getConfigurationId().length() == 0;
+ }
+
+ private boolean hasInvalidPolicyUpdateInput(GenericResourceApiPolicyupdatenotifyoperationInput input) {
+ return (input.getPolicyName() == null) || (input.getUpdateType() == null) || (input.getVersionId() == null);
+ }
+
+ private GenericResourceApiPreloaddataPreloadData getConfigPreloadData(String preloadId, String preloadType)
+ throws JsonProcessingException {
+
+ List<ConfigPreloadData> configPreloadData = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
+ preloadType);
+
+ if (configPreloadData.isEmpty()) {
+ return (null);
+ } else {
+ return (objectMapper.readValue(configPreloadData.get(0).getPreloadData(),
+ GenericResourceApiPreloaddataPreloadData.class));
+ }
+ }
+
+ private GenericResourceApiPreloaddataPreloadData getOperationalPreloadData(String preloadId, String preloadType)
+ throws JsonProcessingException {
+
+ List<OperationalPreloadData> configPreloadData = operationalPreloadDataRepository
+ .findByPreloadIdAndPreloadType(preloadId, preloadType);
+
+ if (configPreloadData.isEmpty()) {
+ return (null);
+ } else {
+ return (objectMapper.readValue(configPreloadData.get(0).getPreloadData(),
+ GenericResourceApiPreloaddataPreloadData.class));
+ }
+ }
+
+ private void saveConfigPreloadData(String preloadId, String preloadType,
+ GenericResourceApiPreloaddataPreloadData preloadData) throws JsonProcessingException {
+
+ configPreloadDataRepository.deleteByPreloadIdAndPreloadType(preloadId, preloadType);
+ configPreloadDataRepository
+ .save(new ConfigPreloadData(preloadId, preloadType, objectMapper.writeValueAsString(preloadData)));
+
+ }
+
+ private void saveOperationalPreloadData(String preloadId, String preloadType,
+ GenericResourceApiPreloaddataPreloadData preloadData) throws JsonProcessingException {
+
+ operationalPreloadDataRepository.deleteByPreloadIdAndPreloadType(preloadId, preloadType);
+ operationalPreloadDataRepository
+ .save(new OperationalPreloadData(preloadId, preloadType, objectMapper.writeValueAsString(preloadData)));
+
+ }
+
+
+ @Override
+ public ResponseEntity<GenericResourceApiNetworkTopologyOperation> operationsGENERICRESOURCEAPInetworkTopologyOperationPost(
+ @Valid GenericResourceApiNetworkOperationInformationBodyparam input) throws RestException {
+ final String svcOperation = "network-topology-operation";
+ GenericResourceApiNetworkTopologyOperation retval = new GenericResourceApiNetworkTopologyOperation();
+ GenericResourceApiNetworktopologyoperationOutput resp = new GenericResourceApiNetworktopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+ boolean saveOperationalData = false;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String ctxSvcDataJson = svcData;
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ GenericResourceApiInstanceReference networkReference = new GenericResourceApiInstanceReference();
+ networkReference.setInstanceId(respProps.getProperty("networkId"));
+ networkReference.setObjectPath(respProps.getProperty(NETWORK_OBJECT_PATH_PARAM));
+ resp.setNetworkResponseInformation(networkReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ ctxSvcDataJson = ctxOut.toJsonString("service-data");
+ operService.setSvcData(ctxSvcDataJson);
+ saveOperationalData = true;
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+
+ // Save service data
+ try {
+ serviceDataHelper.saveService(configService, ctxSvcDataJson);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to error saving service data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // If necessary, sync status to operation service entry and save
+ if (saveOperationalData) {
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+ retval.setOutput(resp);
+
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiServiceTopologyOperation> operationsGENERICRESOURCEAPIserviceTopologyOperationPost(
+ @Valid GenericResourceApiServiceOperationInformationBodyparam input) throws RestException {
+ final String svcOperation = "service-topology-operation";
+ GenericResourceApiServiceTopologyOperation retval = new GenericResourceApiServiceTopologyOperation();
+ GenericResourceApiServicetopologyoperationOutput resp = new GenericResourceApiServicetopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ }
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation, e);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ } else {
+ configService = new ConfigServices(svcInstanceId);
+ }
+
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+ boolean saveOperationalData = false;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String ctxSvcDataJson = svcData;
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ ctxSvcDataJson= ctxOut.toJsonString("service-data");
+
+ operService.setSvcData(ctxSvcDataJson);
+ saveOperationalData = true;
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+ // Save service data
+ try {
+ serviceDataHelper.saveService(configService, ctxSvcDataJson);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to error saving service data", svcOperation, e);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // If necessary, sync status to operation service entry and save
+ if (saveOperationalData) {
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiVnfTopologyOperation> operationsGENERICRESOURCEAPIvnfTopologyOperationPost(
+ @Valid GenericResourceApiVnfOperationInformationBodyparam input)
+ throws RestException {
+ final String svcOperation = "vnf-topology-operation";
+ GenericResourceApiVnfTopologyOperation retval = new GenericResourceApiVnfTopologyOperation();
+ GenericResourceApiVnftopologyoperationOutput resp = new GenericResourceApiVnftopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ if(hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String vnfId = null;
+
+ if((input.getInput() != null) && (input.getInput().getVnfInformation() != null)) {
+ vnfId = input.getInput().getVnfInformation().getVnfId();
+ }
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ }
+ catch(JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+ boolean saveOperationalData = false;
+
+ if(operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ }
+ else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String ctxSvcDataJson = svcData;
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ if(vnfId == null) {
+ vnfId = respProps.getProperty("vnfId");
+ }
+ GenericResourceApiInstanceReference vnfReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vnfId);
+ vnfReference.setObjectPath(respProps.getProperty(VNF_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vnfReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ ctxSvcDataJson = ctxOut.toJsonString("service-data");
+ operService.setSvcData(ctxSvcDataJson);
+ saveOperationalData = true;
+ }
+
+ }
+ catch(NullPointerException npe) {
+ resp.setAckFinalIndicator("Y");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ }
+ catch(SvcLogicException e) {
+ resp.setAckFinalIndicator("Y");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+ // Save service data
+ try {
+ serviceDataHelper.saveService(configService, ctxSvcDataJson);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to error saving service data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+
+ // If necessary, sync status to operation service entry and save
+ if(saveOperationalData) {
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+
+ if(resp.getAckFinalIndicator().equals("N")) {
+ // Spawn background thread to invoke the Async DG
+ Runnable backgroundThread = () -> {
+ log.info(BACKGROUND_THREAD_STARTED_MESSAGE);
+ processAsyncVnfTopologyOperation(svcOperation, input);
+ };
+ new Thread(backgroundThread).start();
+ }
+
+ log.info("Returned {} for {} [{}] {}.", resp.getResponseCode(), svcOperation, vnfId, resp.getResponseMessage());
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+ public void processAsyncVnfTopologyOperation(String parentOperation, @Valid GenericResourceApiVnfOperationInformationBodyparam input) {
+ final String svcOperation = "vnf-topology-operation-async";
+ GenericResourceApiVnftopologyoperationOutput resp = new GenericResourceApiVnftopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String vnfId = input.getInput().getVnfInformation().getVnfId();
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(parentOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ return;
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ return;
+ }
+ }
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ } else {
+ log.error("exiting {} because there is no service data with id [{}] in SDN", svcOperation, svcInstanceId);
+ return;
+ }
+
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+
+ if(operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ }
+ else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String ctxSvcDataJson = svcData;
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if("200".equals(resp.getResponseCode())) {
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ if(vnfId == null) {
+ vnfId = respProps.getProperty("vnfId");
+ }
+ GenericResourceApiInstanceReference vnfReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vnfId);
+ vnfReference.setObjectPath(respProps.getProperty(VNF_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vnfReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ ctxSvcDataJson = ctxOut.toJsonString("service-data");
+ operService.setSvcData(ctxSvcDataJson);
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+ // Save service data
+ try {
+ serviceDataHelper.saveService(configService, ctxSvcDataJson);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to error saving service data", svcOperation);
+ return;
+ }
+
+ // Update operational tree
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ log.info("Returned SUCCESS for {} [{}]", svcOperation, vnfId);
+ }
+ }
+ catch(Exception e) {
+ log.error("Caught Exception updating configuration status in SDN for {} [{}] \n", svcOperation, vnfId);
+ }
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiVfModuleTopologyOperation> operationsGENERICRESOURCEAPIvfModuleTopologyOperationPost(
+ @Valid GenericResourceApiVfModuleOperationInformationBodyparam input)
+ throws RestException {
+ final String svcOperation = "vf-module-topology-operation";
+ GenericResourceApiVfModuleTopologyOperation retval = new GenericResourceApiVfModuleTopologyOperation();
+ GenericResourceApiVfmoduletopologyoperationOutput resp = new GenericResourceApiVfmoduletopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+
+ log.info("MYSQL_DATABASE = {}", System.getenv("MYSQL_DATABASE"));
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Verify input contains vnf-id
+ if (hasInvalidVnfId(input.getInput())) {
+ log.debug("exiting {} because of null or empty vnf-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty vnf-id");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String vnfId = input.getInput().getVnfInformation().getVnfId();
+ String vfModuleId = input.getInput().getVfModuleInformation().getVfModuleId();
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ log.info("Read ({}) data for [{}] operational-data: {}",
+ "OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS", svcInstanceId, operService.getSvcData().toString());
+ //ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ log.info("No operational-data found in OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS for [{}]", svcInstanceId);
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String ackFinal = "Y";
+ String skipMdsalUpdate;
+
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ ackFinal = respProps.getProperty("ack-final", "Y");
+ skipMdsalUpdate = respProps.getProperty("skip-mdsal-update", "N");
+ log.info("ackFinal [{}], skipMdsalUpdate [{}]", ackFinal, skipMdsalUpdate);
+
+ resp.setAckFinalIndicator(ackFinal);
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ // Update status in config services entry
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ GenericResourceApiInstanceReference vnfReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vnfId);
+ vnfReference.setObjectPath(respProps.getProperty(VNF_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vnfReference);
+
+ GenericResourceApiInstanceReference vfModuleReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vfModuleId);
+ vnfReference.setObjectPath(respProps.getProperty(VF_MODULE_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vfModuleReference);
+
+ if (skipMdsalUpdate.equals("N")) {
+ // If DG returns success,
+ // ONLY update svcData in config and operational trees
+ // and remember to save operational data when skip-mdsal-update is Y in ctx.
+ String ctxJson = ctxOut.toJsonString("service-data");
+ log.info("Saving service-data in SDN because skipMdsalUpdate is {}", skipMdsalUpdate);
+ log.info("Service data : {}", ctxJson);
+ serviceDataHelper.saveService(configService, ctxJson);
+
+ log.info("Copying service-data to operational-data");
+ operService.setSvcData(ctxJson);
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+ }
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("Y");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("Y");
+ } catch (JsonProcessingException e) {
+ resp.setAckFinalIndicator("Y");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Internal error");
+ log.error("exiting {} due to error updating service data", svcOperation, e);
+ }
+
+ if (ackFinal.equals("N")) {
+ // Spawn background thread to invoke the Async DG
+ Runnable backgroundThread = new Runnable() {
+ public void run() {
+ log.info(BACKGROUND_THREAD_STARTED_MESSAGE);
+ processAsyncVfModuleTopologyOperation(svcOperation, input);
+ }
+ };
+ new Thread(backgroundThread).start();
+ }
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+ public void processAsyncVfModuleTopologyOperation( String parentOperation,
+ @Valid GenericResourceApiVfModuleOperationInformationBodyparam input) {
+ log.info(BACKGROUND_THREAD_INFO, input.getInput().getVfModuleInformation().getVfModuleId());
+ final String svcOperation = "vf-module-topology-operation-async";
+
+ log.info(CALLED_STR, svcOperation);
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(parentOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ return;
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ String svcData = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ svcData = serviceDataHelper.getServiceDataAsString(svcInstanceId);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ return;
+ }
+ }
+ if (svcData != null) {
+ ctxIn.mergeJson("service-data", svcData);
+ } else {
+ log.error("exiting {} because there is no service data with id [{}] in SDN", svcOperation, svcInstanceId);
+ return;
+ }
+
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ log.info("Read ({}) data for [{}] operational-data: {}",
+ "OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS", svcInstanceId, operService.getSvcData().toString());
+ //ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ log.info("No operational-data found in OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS for [{}]", svcInstanceId);
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+ String respStatus = "SUCCESS";
+ String errorMessage = null;
+
+ String ctxSvcDataJson = svcData;
+
+ log.info ("Adding INPUT data for {} [{}] input: {}", svcOperation, svcInstanceId, input.getInput().toString());
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ String ackFinal = respProps.getProperty("ack-final-indicator", "Y");
+ String errorCode = respProps.getProperty("error-code", "200");
+ errorMessage = respProps.getProperty("error-message", "SUCCESS");
+
+ if (! "200".equals(errorCode)) {
+ respStatus = "FAILED";
+ }
+
+ // Update status in config services entry
+ configService.setServiceStatusFinalIndicator(ackFinal);
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+ configService.setServiceStatusResponseCode(errorCode);
+ configService.setServiceStatusResponseMessage(errorMessage);
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ ctxSvcDataJson = ctxOut.toJsonString("service-data");
+ configServicesRepository.save(configService);
+
+ // Save service data
+ try {
+ serviceDataHelper.saveService(configService, ctxSvcDataJson);
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to error saving service data", svcOperation);
+ return;
+ }
+
+ operService.setSvcData(ctxSvcDataJson);
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+
+ } catch (Exception ex) {
+ log.error("Caught Exception updating service status in SDN for {} [{}] \n", svcOperation, svcInstanceId);
+ }
+ log.info("Returned {} for {} [{}] {}.", respStatus, svcOperation, svcInstanceId, errorMessage);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPortMirrorTopologyOperation> operationsGENERICRESOURCEAPIportMirrorTopologyOperationPost(
+ @Valid GenericResourceApiPortMirrorTopologyOperationInformationBodyparam input)
+ throws RestException {
+ final String svcOperation = "port-mirror-topology-operation";
+ GenericResourceApiPortMirrorTopologyOperation retval = new GenericResourceApiPortMirrorTopologyOperation();
+ GenericResourceApiPortmirrortopologyoperationOutput resp = new GenericResourceApiPortmirrortopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+
+ // Verify input contains configuration-id
+ if (hasInvalidConfigurationId(input.getInput())) {
+ log.debug("exiting {} because of null or empty configuration-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty configuration-id");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String configurationId = input.getInput().getConfigurationInformation().getConfigurationId();
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add service instance config data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ log.info("Read ({}) data for [{}] service-data: {}", "CONFIG_GRA_SERVICES", svcInstanceId, configService.getSvcData());
+ ctxIn.mergeJson("service-data", configService.getSvcData());
+
+ } else {
+ log.debug("exiting {} because there is no service data with id [{}] in SDN", svcOperation, svcInstanceId);
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: there is no service-instance with id [{}] in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add configuration config data to SvcLogicContext
+ List<ConfigPortMirrorConfigurations> configPortMirrorConfigurations =
+ configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ ConfigPortMirrorConfigurations configPortMirrorConfiguration;
+ if (configPortMirrorConfigurations != null && !configPortMirrorConfigurations.isEmpty()) {
+ configPortMirrorConfiguration = configPortMirrorConfigurations.get(0);
+ log.info("Read ({}) data for [{}] configuration-data: {}",
+ "CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS", configurationId, configPortMirrorConfiguration.getPmcData());
+ ctxIn.mergeJson("configuration-data", configPortMirrorConfiguration.getPmcData());
+
+ } else {
+ log.info("No configuration-data found ({}) for [{}]", "CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS", configurationId);
+ configPortMirrorConfiguration = new ConfigPortMirrorConfigurations(configurationId, null);
+ }
+
+ /*
+ // Add configuration operational data to SvcLogicContext
+ List<OperationalPortMirrorConfigurations> operPortMirrorConfigurations =
+ operationalPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ OperationalPortMirrorConfigurations operPortMirrorConfiguration;
+
+ if (operPortMirrorConfigurations != null && !operPortMirrorConfigurations.isEmpty()) {
+ operPortMirrorConfiguration = operPortMirrorConfigurations.get(0);
+ log.info("Read ({}) data for [{}] operational-data: {}",
+ "OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS", configurationId, operPortMirrorConfiguration.getPmcData());
+ ctxIn.mergeJson("operational-data", operPortMirrorConfiguration.getPmcData());
+
+ } else {
+ log.info("No operational-data found ({}) for [{}]", "OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS", configurationId);
+ operPortMirrorConfiguration = new OperationalPortMirrorConfigurations(configurationId, null, null);
+ }
+
+ */
+
+ String ackFinal = "Y";
+ String errorCode = "200";
+ String errorMessage = "SUCCESS";
+ String respStatus = "SUCCESS";
+
+ log.info(ADDING_INPUT_DATA_LOG, svcOperation, svcInstanceId, input.getInput().toString());
+ //log.info(ADDING_INPUT_DATA_LOG, svcOperation, svcInstanceId, input.toString());
+
+ // Update service status info in config entry from input
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusRpcName(svcOperation);
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ ackFinal = respProps.getProperty("ack-final", "Y");
+ errorCode = respProps.getProperty("error-code", "200");
+ errorMessage = respProps.getProperty("error-message", "SUCCESS");
+ log.info("ackFinal [{}], error-code [{}], error-message [{}]", ackFinal, errorCode, errorMessage);
+
+ resp.setAckFinalIndicator(ackFinal);
+ resp.setResponseCode(errorCode);
+ resp.setResponseMessage(errorMessage);
+
+ // Update status in config services entry
+ configPortMirrorConfiguration
+ .setPortMirrorConfigurationStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusFinalIndicator(resp.getAckFinalIndicator());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseCode(resp.getResponseCode());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseMessage(resp.getResponseMessage());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseTimestamp(Iso8601Util.now());
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ GenericResourceApiInstanceReference pmcReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(configurationId);
+ serviceReference.setObjectPath(respProps.getProperty(PORT_MIRROR_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(pmcReference);
+
+ retval.setOutput(resp);
+
+ // ONLY update pmcData in config and operational trees
+ //String ctxJson = ctxOut.toJsonString("configuration-data");
+ //configPortMirrorConfiguration.setPmcData(ctxJson);
+ //operPortMirrorConfiguration.setPmcData(ctxJson);
+ //configPortMirrorConfigurationsRepository.save(configPortMirrorConfiguration);
+
+ // If necessary, sync status to operation service entry and save
+ //operPortMirrorConfiguration.setPortMirrorConfigurationStatus(configPortMirrorConfiguration.getPortMirrorConfigurationStatus());
+ //operationalPortMirrorConfigurationsRepository.save(operPortMirrorConfiguration);
+
+ if (! "200".equals(errorCode)) {
+ respStatus = "FAILED";
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("Y");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("Y");
+ }
+
+ if (ackFinal.equals("N")) {
+ // Spawn background thread to invoke the Async DG
+ Runnable backgroundThread = new Runnable() {
+ public void run() {
+ log.info(BACKGROUND_THREAD_STARTED_MESSAGE);
+ processAsyncPortMirrorTopologyOperation(svcOperation, input);
+ }
+ };
+ new Thread(backgroundThread).start();
+ }
+ log.info("Returned {} for {} [{}] {}.", respStatus, svcOperation, configurationId, errorMessage);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+ public void processAsyncPortMirrorTopologyOperation( String parentOperation,
+ @Valid GenericResourceApiPortMirrorTopologyOperationInformationBodyparam input) {
+ log.info(BACKGROUND_THREAD_INFO, input.getInput().getConfigurationInformation().getConfigurationId());
+ final String svcOperation = "port-mirror-topology-operation-async";
+
+ log.info(CALLED_STR, svcOperation);
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String configurationId = input.getInput().getConfigurationInformation().getConfigurationId();
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ String errorMessage;
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(parentOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ return;
+ }
+
+ // Add service instance config data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ ctxIn.mergeJson("service-data", configService.getSvcData());
+ } else {
+ log.error("exiting {} because there is no service data with id [{}] in SDN", svcOperation, svcInstanceId);
+ return;
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigPortMirrorConfigurations> configPortMirrorConfigurations = configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ ConfigPortMirrorConfigurations configPortMirrorConfiguration;
+ if (configPortMirrorConfigurations != null && !configPortMirrorConfigurations.isEmpty()) {
+ configPortMirrorConfiguration = configPortMirrorConfigurations.get(0);
+ ctxIn.mergeJson("configuration-data", configPortMirrorConfiguration.getPmcData());
+ } else {
+ configPortMirrorConfiguration = new ConfigPortMirrorConfigurations(configurationId, null);
+ }
+
+ /*
+ // Add operational tree data to SvcLogicContext
+ List<OperationalPortMirrorConfigurations> operPortMirrorConfigurations = operationalPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
+ OperationalPortMirrorConfigurations operPortMirrorConfiguration = null;
+
+ if (operPortMirrorConfigurations != null && !operPortMirrorConfigurations.isEmpty()) {
+ operPortMirrorConfiguration = operPortMirrorConfigurations.get(0);
+ ctxIn.mergeJson("operational-data", operPortMirrorConfiguration.getPmcData());
+ } else {
+ operPortMirrorConfiguration = new OperationalPortMirrorConfigurations(configurationId, null, null);
+ }
+
+ */
+
+ // Update service status info in config entry from input
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusRpcName(parentOperation);
+
+ log.info("Adding INPUT data for {} [{}] input: {}", svcOperation, svcInstanceId, input.toString());
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ String ackFinalIndicator = respProps.getProperty("ack-final-indicator", "Y");
+ String errorCode = respProps.getProperty("error-code", "200");
+ errorMessage = respProps.getProperty("error-message", "SUCCESS");
+
+ // Update status in config services entry
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusFinalIndicator(ackFinalIndicator);
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseTimestamp(Iso8601Util.now());
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseCode(errorCode);
+ configPortMirrorConfiguration.setPortMirrorConfigurationStatusResponseMessage(errorMessage);
+ configPortMirrorConfiguration
+ .setPortMirrorConfigurationStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ // ONLY update status
+ //String ctxJson = ctxOut.toJsonString("configuration-data");
+ //configPortMirrorConfiguration.setPmcData(ctxJson);
+ //configPortMirrorConfiguration.setPmcData(ctxJson);
+
+ // Update config tree
+ configPortMirrorConfigurationsRepository.save(configPortMirrorConfiguration);
+
+ //update operational tree
+ //operPortMirrorConfiguration.setPortMirrorConfigurationStatus(configPortMirrorConfiguration.getPortMirrorConfigurationStatus());
+ //operationalPortMirrorConfigurationsRepository.save(operPortMirrorConfiguration);
+
+ } catch (Exception e) {
+ log.error("Caught Exception updating configuration status in SDN for {} [{}] \n", svcOperation, configurationId);
+ }
+ log.info("Returned SUCCESS for {} [{}]", svcOperation, configurationId);
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiVnfGetResourceRequest> operationsGENERICRESOURCEAPIvnfGetResourceRequestPost(
+ @Valid GenericResourceApiVnfgetresourcerequestInputBodyparam input)
+ throws RestException {
+ final String svcOperation = "vnf-get-resource-request";
+ GenericResourceApiVnfGetResourceRequest retval = new GenericResourceApiVnfGetResourceRequest();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+ //return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ try {
+ ctxIn.mergeJson("service-data", serviceDataHelper.getServiceDataAsString(svcInstanceId));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on service data", svcOperation);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+
+
+ String ctxJson = ctxOut.toJsonString("vnf-get-resource-request-output");
+ GenericResourceApiVnfgetresourcerequestOutput vnfgetresourcerequestOutput =
+ objectMapper.readValue(ctxJson, GenericResourceApiVnfgetresourcerequestOutput.class);
+
+ retval.setOutput(vnfgetresourcerequestOutput);
+
+ } catch (Exception e) {
+ return (new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR));
+ }
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+ @Override
+ public ResponseEntity<GenericResourceApiPolicyUpdateNotifyOperation> operationsGENERICRESOURCEAPIpolicyUpdateNotifyOperationPost(
+ @Valid GenericResourceApiPolicyupdatenotifyoperationInputBodyparam input)
+ throws RestException {
+ final String svcOperation = "policy-update-notify-operation";
+ GenericResourceApiPolicyUpdateNotifyOperation retval = new GenericResourceApiPolicyUpdateNotifyOperation();
+ GenericResourceApiPolicyupdatenotifyoperationOutput resp = new GenericResourceApiPolicyupdatenotifyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify required input elements
+ if (hasInvalidPolicyUpdateInput(input.getInput())) {
+ log.debug("exiting {} because policy name, update type, or version id was not provided", svcOperation);
+ resp.setErrorCode("404");
+ resp.setErrorMsg("policy-name, update-type, and/or version-id is null or empty");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setErrorCode("500");
+ resp.setErrorMsg("internal error");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+ resp.setErrorCode(respProps.getProperty("error-code", "200"));
+ resp.setErrorMsg(respProps.getProperty("error-message", "SUCCESS"));
+
+ /* For debugging Only
+ respProps.forEach((k,v) -> {
+ log.debug("prop: {} -> {}",k,v);
+ });
+ */
+
+ } catch (NullPointerException npe) {
+ resp.setErrorCode("500");
+ resp.setErrorMsg("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setErrorCode("500");
+ resp.setErrorMsg(e.getMessage());
+ }
+
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ServiceDataHelper.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ServiceDataHelper.java
new file mode 100644
index 0000000..f04a3ac
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ServiceDataHelper.java
@@ -0,0 +1,567 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.onap.sdnc.apps.ms.gra.data.ConfigNetworks;
+import org.onap.sdnc.apps.ms.gra.data.ConfigNetworksRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModules;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModulesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVnfs;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVnfsRepository;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServiceData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataNetworks;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataNetworksNetwork;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataNetworksNetworkNetworkData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfs;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnf;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfmoduleVfModuleData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+@Component
+@ComponentScan(basePackages = { "org.onap.sdnc.apps.ms.gra.*", "org.onap.ccsdk.apps.services" })
+
+public class ServiceDataHelper {
+
+ @Autowired
+ private ObjectMapper objectMapper;
+
+ @Autowired
+ private ConfigServicesRepository configServicesRepository;
+
+ @Autowired
+ private ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ private ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ private ConfigVfModulesRepository configVfModulesRepository;
+
+ public ServiceDataHelper() {
+
+ }
+
+ public class ServiceDataTransaction {
+ private List<ConfigServices> servicesToSave = new LinkedList<ConfigServices>();
+ private List<ConfigNetworks> networksToSave = new LinkedList<ConfigNetworks>();
+ private List<ConfigVnfs> vnfsToSave = new LinkedList<ConfigVnfs>();
+ private List<ConfigVfModules> vfModulesToSave = new LinkedList<ConfigVfModules>();
+
+ private List<ConfigServices> servicesToRemove = new LinkedList<ConfigServices>();
+ private List<ConfigNetworks> networksToRemove = new LinkedList<ConfigNetworks>();
+ private List<ConfigVnfs> vnfsToRemove = new LinkedList<ConfigVnfs>();
+ private List<ConfigVfModules> vfModulesToRemove = new LinkedList<ConfigVfModules>();
+
+ // Deferred saves not working for now - do all immediate
+ public void save(ConfigServices service) {
+ // servicesToSave.add(service);
+ configServicesRepository.save(service);
+ }
+
+ public void save(ConfigNetworks network) {
+ // networksToSave.add(network);
+ configNetworksRepository.save(network);
+ }
+
+ public void save(ConfigVnfs vnf) {
+ // vnfsToSave.add(vnf);
+ configVnfsRepository.save(vnf);
+ }
+
+ public void save(ConfigVfModules vfModule) {
+ // vfModulesToSave.add(vfModule);
+ configVfModulesRepository.save(vfModule);
+ }
+
+ public void remove(ConfigServices service) {
+ // servicesToRemove.add(service);
+ configServicesRepository.delete(service);
+ }
+
+ public void remove(ConfigNetworks network) {
+ // networksToRemove.add(network);
+ configNetworksRepository.delete(network);
+ }
+
+ public void remove(ConfigVnfs vnf) {
+ // vnfsToRemove.add(vnf);
+ configVnfsRepository.delete(vnf);
+ }
+
+ public void remove(ConfigVfModules vfModule) {
+ // vfModulesToRemove.add(vfModule);
+ configVfModulesRepository.delete(vfModule);
+ }
+
+
+ public void commit() {
+
+ long numServicesBefore = configServicesRepository.count();
+ long numNetworksBefore = configNetworksRepository.count();
+ long numVnfsBefore = configVnfsRepository.count();
+ long numVfModulesBefore = configVfModulesRepository.count();
+
+ // Commit is a no-op for now
+ return;
+ /*
+ for (ConfigServices service : servicesToSave) {
+ configServicesRepository.save(service);
+ }
+ for (ConfigNetworks network : networksToSave) {
+ configNetworksRepository.save(network);
+ }
+ for (ConfigVnfs vnf: vnfsToSave) {
+ configVnfsRepository.save(vnf);
+ }
+ for (ConfigVfModules vfModule : vfModulesToSave) {
+ configVfModulesRepository.save(vfModule);
+ }
+ for (ConfigServices service : servicesToRemove) {
+ configServicesRepository.delete(service);
+ }
+ for (ConfigNetworks network : networksToSave) {
+ configNetworksRepository.delete(network);
+ }
+ for (ConfigVnfs vnf: vnfsToSave) {
+ configVnfsRepository.delete(vnf);
+ }
+ for (ConfigVfModules vfModule : vfModulesToSave) {
+ configVfModulesRepository.delete(vfModule);
+ }
+ long numServicesAfter = configServicesRepository.count();
+ long numNetworksAfter = configNetworksRepository.count();
+ long numVnfsAfter = configVnfsRepository.count();
+ long numVfModulesAfter = configVfModulesRepository.count();
+
+ System.out.print("Done");
+ */
+ }
+ }
+
+ public ServiceDataTransaction createTransaction() {
+ return new ServiceDataTransaction();
+ }
+
+ public GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule getVfModule(String svcInstanceId,
+ String vnfId, String vfModuleId) throws JsonProcessingException {
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule = null;
+ List<ConfigVfModules> configVfModules = configVfModulesRepository
+ .findBySvcInstanceIdAndVnfIdAndVfModuleId(svcInstanceId, vnfId, vfModuleId);
+ if ((configVfModules != null) && !configVfModules.isEmpty()) {
+ ConfigVfModules configVfModule = configVfModules.get(0);
+ vfModule = new GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule();
+ vfModule.setVfModuleId(configVfModule.getVfModuleId());
+ String vfModuleDataAsString = configVfModule.getVfModuleData();
+ if (vfModuleDataAsString != null) {
+ vfModule.setVfModuleData(objectMapper.readValue(vfModuleDataAsString,
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfmoduleVfModuleData.class));
+ }
+
+ }
+ return (vfModule);
+ }
+
+ public GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules getVfModules(String svcInstanceId, String vnfId) throws JsonProcessingException {
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules vfModules = null;
+ List<ConfigVfModules> configVfModules = configVfModulesRepository.findBySvcInstanceIdAndVnfId(svcInstanceId, vnfId);
+ if ((configVfModules != null) && !configVfModules.isEmpty()) {
+ vfModules = new GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules();
+ for (ConfigVfModules configVfModule : configVfModules) {
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule = new GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule();
+ vfModule.setVfModuleId(configVfModule.getVfModuleId());
+ String vfModuleDataAsString = configVfModule.getVfModuleData();
+ if (vfModuleDataAsString != null) {
+ vfModule.setVfModuleData(objectMapper.readValue(vfModuleDataAsString, GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfmoduleVfModuleData.class));
+ }
+ vfModules.addVfModuleItem(vfModule);
+ }
+ }
+ return(vfModules);
+ }
+
+ public GenericResourceApiServicedataServicedataVnfsVnf getVnf(String svcInstanceId, String vnfId) throws JsonProcessingException {
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+ List<ConfigVnfs> configVnfs = configVnfsRepository.findBySvcInstanceIdAndVnfId(svcInstanceId, vnfId);
+ if ((configVnfs != null) && !configVnfs.isEmpty()) {
+ ConfigVnfs configVnf = configVnfs.get(0);
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(configVnf.getVnfId());
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfDataAsObject = null;
+ String vnfDataAsString = configVnf.getVnfData();
+ if (vnfDataAsString != null) {
+ vnfDataAsObject = objectMapper.readValue(vnfDataAsString, GenericResourceApiServicedataServicedataVnfsVnfVnfData.class);
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules vfModules = getVfModules(svcInstanceId, vnfId);
+ if (vfModules != null) {
+ if (vnfDataAsObject == null) {
+ vnfDataAsObject = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+ vnfDataAsObject.setVfModules(vfModules);
+ }
+ vnf.setVnfData(vnfDataAsObject);
+ }
+ return(vnf);
+ }
+
+ public GenericResourceApiServicedataServicedataVnfs getVnfs(String svcInstanceId) throws JsonProcessingException {
+
+ GenericResourceApiServicedataServicedataVnfs vnfs = null;
+
+ List<ConfigVnfs> configVnfs = configVnfsRepository.findBySvcInstanceId(svcInstanceId);
+ if ((configVnfs != null) && !configVnfs.isEmpty()) {
+ vnfs = new GenericResourceApiServicedataServicedataVnfs();
+ for (ConfigVnfs configVnf : configVnfs) {
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(configVnf.getVnfId());
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfDataAsObject = null;
+ String vnfDataAsString = configVnf.getVnfData();
+ if (vnfDataAsString != null) {
+ vnfDataAsObject = objectMapper.readValue(vnfDataAsString,
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData.class);
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules vfModules = getVfModules(svcInstanceId, configVnf.getVnfId());
+ if (vfModules != null) {
+ if (vnfDataAsObject == null) {
+ vnfDataAsObject = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+ vnfDataAsObject.setVfModules(vfModules);
+ }
+ vnf.setVnfData(vnfDataAsObject);
+ vnfs.addVnfItem(vnf);
+ }
+ }
+ return (vnfs);
+ }
+
+ public GenericResourceApiServicedataServicedataNetworks getNetworks(String svcInstanceId) throws JsonProcessingException {
+ GenericResourceApiServicedataServicedataNetworks networks = null;
+ List<ConfigNetworks> configNetworks = configNetworksRepository.findBySvcInstanceId(svcInstanceId);
+ if ((configNetworks != null) && !configNetworks.isEmpty()) {
+ networks = new GenericResourceApiServicedataServicedataNetworks();
+
+ for (ConfigNetworks configNetwork : configNetworks) {
+ GenericResourceApiServicedataServicedataNetworksNetwork network = new GenericResourceApiServicedataServicedataNetworksNetwork();
+ network.setNetworkId(configNetwork.getNetworkId());
+ String networkDataAsString = configNetwork.getNetworkData();
+ if (networkDataAsString != null) {
+ network.setNetworkData(objectMapper.readValue(networkDataAsString, GenericResourceApiServicedataServicedataNetworksNetworkNetworkData.class));
+ }
+ networks.addNetworkItem(network);
+ }
+ }
+
+ return(networks);
+ }
+
+ public String getServiceDataAsString(String svcInstanceId) throws JsonProcessingException {
+ GenericResourceApiServicedataServiceData svcData = getServiceData(svcInstanceId);
+ if (svcData == null) {
+ return(null);
+ } else {
+ return(objectMapper.writeValueAsString(getServiceData(svcInstanceId)));
+ }
+ }
+
+ public GenericResourceApiServicedataServiceData getServiceData(String svcInstanceId) throws JsonProcessingException {
+
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ if ((configServices != null) && !configServices.isEmpty()) {
+ return(getServiceData(configServices.get(0)));
+ } else {
+ return(null);
+ }
+ }
+
+ public GenericResourceApiServicedataServiceData getServiceData(ConfigServices configService) throws JsonProcessingException {
+ if (configService == null) {
+ return(null);
+ }
+
+ GenericResourceApiServicedataServiceData svcData;
+ String svcInstanceId = configService.getSvcInstanceId();
+ String svcDataAsString = configService.getSvcData();
+
+ if ((svcDataAsString != null) && !svcDataAsString.isEmpty()) {
+ svcData = objectMapper.readValue(svcDataAsString, GenericResourceApiServicedataServiceData.class);
+ } else {
+ svcData = new GenericResourceApiServicedataServiceData();
+ }
+
+ // Add networks
+ GenericResourceApiServicedataServicedataNetworks networks = getNetworks(svcInstanceId);
+ if (networks != null) {
+ svcData.setNetworks(networks);
+ }
+
+ //Add Vnfs
+ GenericResourceApiServicedataServicedataVnfs vnfs = getVnfs(svcInstanceId);
+ if (vnfs != null) {
+ svcData.setVnfs(vnfs);
+ }
+
+ return(svcData);
+
+ }
+
+ public void saveVfModule(String svcInstanceId, String vnfId, GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule, ServiceDataTransaction transaction) throws JsonProcessingException {
+ if (vfModule == null) {
+ return;
+ }
+ List<ConfigVfModules> configVfModules = configVfModulesRepository.findBySvcInstanceIdAndVnfIdAndVfModuleId(svcInstanceId, vnfId, vfModule.getVfModuleId());
+ ConfigVfModules configVfModule;
+ if ((configVfModules != null) && !configVfModules.isEmpty()) {
+ configVfModule = configVfModules.get(0);
+ } else {
+ configVfModule = new ConfigVfModules(svcInstanceId, vnfId, vfModule.getVfModuleId());
+ }
+ if (vfModule.getVfModuleData() != null) {
+ configVfModule.setVfModuleData(objectMapper.writeValueAsString(vfModule.getVfModuleData()));
+ }
+ if (transaction != null) {
+ transaction.save(configVfModule);
+ } else {
+ configVfModulesRepository.save(configVfModule);
+ }
+ }
+
+ public void saveVnf(String svcInstanceId, GenericResourceApiServicedataServicedataVnfsVnf vnf, ServiceDataTransaction transaction) throws JsonProcessingException {
+ if (vnf == null) {
+ return;
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+
+ // Make a list of potential vf modules to remove
+ HashMap<String, ConfigVfModules> vfModuleMap = new HashMap<>();
+ List<ConfigVfModules> configVfModuleList = configVfModulesRepository.findBySvcInstanceIdAndVnfId(svcInstanceId, vnf.getVnfId());
+ if ((configVfModuleList != null) && !configVfModuleList.isEmpty()) {
+ for (ConfigVfModules configVfModuleItem : configVfModuleList) {
+ vfModuleMap.put(configVfModuleItem.getVfModuleId(), configVfModuleItem);
+ }
+ }
+
+
+ // Save vf modules
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules vfModules = vnfData.getVfModules();
+ if (vfModules != null) {
+ List<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule> vfModuleList = vfModules.getVfModule();
+ if ((vfModuleList != null) && !vfModuleList.isEmpty()) {
+ for (GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule : vfModuleList) {
+ saveVfModule(svcInstanceId, vnf.getVnfId(), vfModule, transaction);
+ if (vfModuleMap.containsKey(vfModule.getVfModuleId())) {
+ vfModuleMap.remove(vfModule.getVfModuleId());
+ }
+ }
+ }
+
+ // Clear vf modules from vnfData before saving to avoid duplication
+ vnfData.setVfModules(null);
+ }
+ // Remove any vf Modules for this vnf id not in this list
+ for (ConfigVfModules vfModuleToRemove : vfModuleMap.values()) {
+ if (transaction != null) {
+ transaction.remove(vfModuleToRemove);
+ } else {
+ configVfModulesRepository.delete(vfModuleToRemove);
+ }
+ }
+
+ // Save Vnf itself
+ List<ConfigVnfs> configVnfs = configVnfsRepository.findBySvcInstanceIdAndVnfId(svcInstanceId, vnf.getVnfId());
+ ConfigVnfs configVnf;
+ if ((configVnfs != null) && !configVnfs.isEmpty()) {
+ configVnf = configVnfs.get(0);
+ } else {
+ configVnf = new ConfigVnfs(svcInstanceId, vnf.getVnfId());
+ }
+ configVnf.setVnfData(objectMapper.writeValueAsString(vnfData));
+
+ if (transaction != null) {
+ transaction.save(configVnf);
+ } else {
+ configVnfsRepository.save(configVnf);
+ }
+
+ }
+
+ public void saveNetwork(String svcInstanceId, GenericResourceApiServicedataServicedataNetworksNetwork network, ServiceDataTransaction transaction) throws JsonProcessingException {
+ List<ConfigNetworks> configNetworks = configNetworksRepository.findBySvcInstanceIdAndNetworkId(svcInstanceId, network.getNetworkId());
+ ConfigNetworks configNetwork;
+
+ if ((configNetworks != null) && !configNetworks.isEmpty()) {
+ configNetwork = configNetworks.get(0);
+ } else {
+ configNetwork = new ConfigNetworks(svcInstanceId, network.getNetworkId());
+ }
+ configNetwork.setNetworkData(objectMapper.writeValueAsString(network.getNetworkData()));
+ if (transaction != null) {
+ transaction.save(configNetwork);
+ } else {
+ configNetworksRepository.save(configNetwork);
+ }
+ }
+
+ public void saveService(ConfigServices configService, String svcDataAsString) throws JsonMappingException, JsonProcessingException {
+ saveService(configService, svcDataAsString, null);
+ }
+
+
+ public void saveService(ConfigServices configService, String svcDataAsString, ServiceDataTransaction transaction) throws JsonMappingException, JsonProcessingException {
+ if ((svcDataAsString == null) || (svcDataAsString.length() == 0)) {
+ configService.setSvcData(null);
+ configServicesRepository.save(configService);
+ } else {
+ saveService(configService, objectMapper.readValue(svcDataAsString, GenericResourceApiServicedataServiceData.class), transaction);
+ }
+ }
+
+ public void saveService(ConfigServices configService, GenericResourceApiServicedataServiceData svcData) throws JsonProcessingException {
+ saveService(configService, svcData, null);
+ }
+
+ public void saveService(ConfigServices configService, GenericResourceApiServicedataServiceData svcData, ServiceDataTransaction transaction) throws JsonProcessingException {
+
+ if (svcData == null) {
+ configService.setSvcData(null);
+ } else {
+ String svcInstanceId = configService.getSvcInstanceId();
+
+ // Make a list of current networks for this service
+ HashMap<String, ConfigNetworks> networkMap = new HashMap<>();
+ List<ConfigNetworks> configNetworkList = configNetworksRepository.findBySvcInstanceId(svcInstanceId);
+ if ((configNetworkList != null) && !configNetworkList.isEmpty()) {
+ for (ConfigNetworks configNetworkItem : configNetworkList) {
+ networkMap.put(configNetworkItem.getNetworkId(), configNetworkItem);
+ }
+ }
+ // Save networks
+ GenericResourceApiServicedataServicedataNetworks networks = svcData.getNetworks();
+ if (networks != null) {
+ List<GenericResourceApiServicedataServicedataNetworksNetwork> networkList = networks.getNetwork();
+ if ((networkList != null) && !networkList.isEmpty()) {
+ for (GenericResourceApiServicedataServicedataNetworksNetwork networkItem : networkList) {
+ if (networkMap.containsKey(networkItem.getNetworkId())) {
+ networkMap.remove(networkItem.getNetworkId());
+ }
+ saveNetwork(svcInstanceId, networkItem, transaction);
+ }
+ }
+ }
+
+ // Remove networks removed from service object
+ for (ConfigNetworks networkToRemove : networkMap.values()) {
+ if (transaction != null) {
+ transaction.remove(networkToRemove);
+ } else {
+ configNetworksRepository.delete(networkToRemove);
+ }
+ }
+
+ svcData.setNetworks(null);
+
+ // Remove any networks no longer associated with this svcInstanceId
+ HashMap<String, ConfigVnfs> vnfMap = new HashMap<>();
+ List<ConfigVnfs> configVnfList = configVnfsRepository.findBySvcInstanceId(svcInstanceId);
+ if ((configVnfList != null) && !configVnfList.isEmpty()) {
+ for (ConfigVnfs configVnfItem : configVnfList) {
+ vnfMap.put(configVnfItem.getVnfId(), configVnfItem);
+ }
+ }
+
+ // Save vnfs / vfModules
+
+ // Save current vnfs associated with this service
+ GenericResourceApiServicedataServicedataVnfs vnfs = svcData.getVnfs();
+ if (vnfs != null) {
+ List<GenericResourceApiServicedataServicedataVnfsVnf> vnfList = vnfs.getVnf();
+ if ((vnfList != null) && !vnfList.isEmpty()) {
+ for (GenericResourceApiServicedataServicedataVnfsVnf vnfItem : vnfList) {
+ if (vnfMap.containsKey(vnfItem.getVnfId())) {
+ vnfMap.remove(vnfItem.getVnfId());
+ }
+ saveVnf(svcInstanceId, vnfItem, transaction);
+ }
+ }
+ }
+ for (ConfigVnfs vnfToRemove : vnfMap.values()) {
+ if (transaction != null) {
+ transaction.remove(vnfToRemove);
+ } else {
+ configVnfsRepository.delete(vnfToRemove);
+ }
+ }
+ svcData.setVnfs(null);
+
+ configService.setSvcData(objectMapper.writeValueAsString(svcData));
+ }
+ if (transaction != null) {
+ transaction.save(configService);
+ } else {
+ configServicesRepository.save(configService);
+ }
+ }
+
+ public long deleteVfModule(String svcInstanceId, String vnfId, String vfModuleId) {
+ return(configVfModulesRepository.deleteBySvcInstanceIdAndVnfIdAndVfModuleId(svcInstanceId, vnfId, vfModuleId));
+ }
+
+ public long deleteVnf(String svcInstanceId, String vnfId) {
+ configVfModulesRepository.deleteBySvcInstanceIdAndVnfId(svcInstanceId, vnfId);
+ return(configVnfsRepository.deleteBySvcInstanceIdAndVnfId(svcInstanceId, vnfId));
+ }
+
+ public long deleteNetwork(String svcInstanceId, String networkId) {
+ return(configNetworksRepository.deleteBySvcInstanceIdAndNetworkId(svcInstanceId, networkId));
+ }
+
+ public long deleteService(String svcInstanceId) {
+ configVfModulesRepository.deleteBySvcInstanceId(svcInstanceId);
+ configVnfsRepository.deleteBySvcInstanceId(svcInstanceId);
+ configNetworksRepository.deleteBySvcInstanceId(svcInstanceId);
+ return(configServicesRepository.deleteBySvcInstanceId(svcInstanceId));
+ }
+
+ public boolean hasServiceData(ConfigServices service) {
+ if ((service.getSvcData() != null) && (service.getSvcData().length() > 0)) {
+ return(true);
+ }
+
+ List<ConfigNetworks> networks = configNetworksRepository.findBySvcInstanceId(service.getSvcInstanceId());
+ if ((networks != null) && !networks.isEmpty()) {
+ return(true);
+ }
+
+ List<ConfigVnfs> vnfs = configVnfsRepository.findBySvcInstanceId(service.getSvcInstanceId());
+ if ((vnfs != null) && !vnfs.isEmpty()) {
+ return(true);
+ }
+
+ return(false);
+
+ }
+ public void clearServiceData(ConfigServices service) {
+ configVfModulesRepository.deleteBySvcInstanceId(service.getSvcInstanceId());
+ configVnfsRepository.deleteBySvcInstanceId(service.getSvcInstanceId());
+ configNetworksRepository.deleteBySvcInstanceId(service.getSvcInstanceId());
+ service.setSvcData(null);
+ configServicesRepository.save(service);
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResources.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResources.java
new file mode 100644
index 0000000..8fcf6d2
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResources.java
@@ -0,0 +1,181 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiAllottedresourcestatusAllottedResourceStatus;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES")
+@Table(name="CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES")
+public class ConfigContrailRouteAllottedResources {
+ @Id
+ @Length(max = 255)
+ @Column(length = 255)
+ String allottedResourceId;
+
+ @Lob
+ String arData;
+
+ // allottedResource status fields
+ String allottedResourceStatusResponseCode;
+
+ String allottedResourceStatusResponseMessage;
+
+ String allottedResourceStatusFinalIndicator;
+
+ String allottedResourceStatusRequestStatus;
+
+ String allottedResourceStatusAction;
+
+ String allottedResourceStatusRpcName;
+
+ String allottedResourceStatusRpcAction;
+
+ String allottedResourceStatusResponseTimestamp;
+
+
+ public ConfigContrailRouteAllottedResources() {
+ this.allottedResourceId = "";
+ this.arData = "";
+ }
+
+ public ConfigContrailRouteAllottedResources(String allottedResourceId, String arData) {
+ this.allottedResourceId = allottedResourceId;
+ this.arData = arData;
+ }
+
+ public ConfigContrailRouteAllottedResources(String allottedResourceId, String arData, GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus) {
+ this.allottedResourceId = allottedResourceId;
+ this.arData = arData;
+
+ if (allottedResourceStatus != null) {
+ this.allottedResourceStatusAction = allottedResourceStatus.getAction();
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatus.getFinalIndicator();
+ this.allottedResourceStatusRequestStatus = allottedResourceStatus.getRequestStatus().toString();
+ this.allottedResourceStatusResponseCode = allottedResourceStatus.getResponseCode();
+ this.allottedResourceStatusResponseMessage = allottedResourceStatus.getResponseMessage();
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatus.getResponseTimestamp();
+ }
+ }
+
+ public String getAllottedResourceId() {
+ return allottedResourceId;
+ }
+
+ public void setAllottedResourceId(String allottedResourceId) {
+ this.allottedResourceId = allottedResourceId;
+ }
+
+ public String getArData() {
+ return arData;
+ }
+
+ public void setArData(String arData) {
+ this.arData = arData;
+ }
+
+ public String getAllottedResourceStatusResponseCode() {
+ return allottedResourceStatusResponseCode;
+ }
+
+ public void setAllottedResourceStatusResponseCode(String allottedResourceStatusResponseCode) {
+ this.allottedResourceStatusResponseCode = allottedResourceStatusResponseCode;
+ }
+
+ public String getAllottedResourceStatusResponseMessage() {
+ return allottedResourceStatusResponseMessage;
+ }
+
+ public void setAllottedResourceStatusResponseMessage(String allottedResourcesStatusResponseMessage) {
+ this.allottedResourceStatusResponseMessage = allottedResourcesStatusResponseMessage;
+ }
+
+ public String getAllottedResourceStatusFinalIndicator() {
+ return allottedResourceStatusFinalIndicator;
+ }
+
+ public void setAllottedResourceStatusFinalIndicator(String allottedResourceStatusFinalIndicator) {
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatusFinalIndicator;
+ }
+
+ public String getAllottedResourceStatusRequestStatus() {
+ return allottedResourceStatusRequestStatus;
+ }
+
+ public void setAllottedResourceStatusRequestStatus(String allottedResourceStatusRequestStatus) {
+ this.allottedResourceStatusRequestStatus = allottedResourceStatusRequestStatus;
+ }
+
+ public String getAllottedResourceStatusAction() {
+ return allottedResourceStatusAction;
+ }
+
+ public void setAllottedResourceStatusAction(String allottedResourceStatusAction) {
+ this.allottedResourceStatusAction = allottedResourceStatusAction;
+ }
+
+ public String getAllottedResourceStatusRpcName() {
+ return allottedResourceStatusRpcName;
+ }
+
+ public void setAllottedResourceStatusRpcName(String allottedResourceStatusRpcName) {
+ this.allottedResourceStatusRpcName = allottedResourceStatusRpcName;
+ }
+
+ public String getAllottedResourceStatusRpcAction() {
+ return allottedResourceStatusRpcAction;
+ }
+
+ public void setAllottedResourceStatusRpcAction(String allottedResourceStatusRpcAction) {
+ this.allottedResourceStatusRpcAction = allottedResourceStatusRpcAction;
+ }
+
+ public String getAllottedResourceStatusResponseTimestamp() {
+ return allottedResourceStatusResponseTimestamp;
+ }
+
+ public void setAllottedResourceStatusResponseTimestamp(String allottedResourceStatusResponseTimestamp) {
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatusResponseTimestamp;
+ }
+
+ public GenericResourceApiAllottedresourcestatusAllottedResourceStatus getAllottedResourceStatus() {
+
+ if ((allottedResourceStatusAction == null) &&
+ (allottedResourceStatusFinalIndicator == null) &&
+ (allottedResourceStatusRequestStatus == null) &&
+ (allottedResourceStatusResponseCode == null) &&
+ (allottedResourceStatusResponseMessage == null) &&
+ (allottedResourceStatusResponseTimestamp == null)) {
+ return null;
+ }
+
+ GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus = new GenericResourceApiAllottedresourcestatusAllottedResourceStatus();
+ allottedResourceStatus.setAction(allottedResourceStatusAction);
+ allottedResourceStatus.setFinalIndicator(allottedResourceStatusFinalIndicator);
+ allottedResourceStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(allottedResourceStatusRequestStatus));
+ allottedResourceStatus.setResponseCode(allottedResourceStatusResponseCode);
+ allottedResourceStatus.setResponseMessage(allottedResourceStatusResponseMessage);
+ allottedResourceStatus.setResponseTimestamp(allottedResourceStatusResponseTimestamp);
+
+ return(allottedResourceStatus);
+ }
+
+ public void setAllottedResourceStatus(GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus) {
+ if (allottedResourceStatus == null) {
+ this.allottedResourceStatusAction = null;
+ this.allottedResourceStatusFinalIndicator = null;
+ this.allottedResourceStatusRequestStatus = null;
+ this.allottedResourceStatusResponseCode = null;
+ this.allottedResourceStatusResponseMessage = null;
+ this.allottedResourceStatusResponseTimestamp = null;
+ } else {
+ this.allottedResourceStatusAction = allottedResourceStatus.getAction();
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatus.getFinalIndicator();
+ this.allottedResourceStatusRequestStatus = allottedResourceStatus.getRequestStatus().toString();
+ this.allottedResourceStatusResponseCode = allottedResourceStatus.getResponseCode();
+ this.allottedResourceStatusResponseMessage = allottedResourceStatus.getResponseMessage();
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatus.getResponseTimestamp();
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java
new file mode 100644
index 0000000..9c3aa91
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigContrailRouteAllottedResourcesRepository extends CrudRepository<ConfigContrailRouteAllottedResources, Long> {
+
+ List<ConfigContrailRouteAllottedResources> findByAllottedResourceId(String allottedResourceId);
+ long deleteByAllottedResourceId(String allottedResourceId);
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworks.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworks.java
new file mode 100644
index 0000000..1720ac8
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworks.java
@@ -0,0 +1,70 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_NETWORKS")
+@Table(name="CONFIG_GRA_NETWORKS")
+@IdClass(NetworksKey.class)
+public class ConfigNetworks {
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String svcInstanceId;
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String networkId;
+
+ @Lob
+ String networkData;
+
+
+ public ConfigNetworks() {
+ this.svcInstanceId = "";
+ this.networkId = "";
+ this.networkData = "";
+ }
+
+ public ConfigNetworks(String svcInstanceId, String networkId) {
+ this.svcInstanceId = svcInstanceId;
+ this.networkId = networkId;
+ this.networkData = "";
+ }
+
+ public ConfigNetworks(String svcInstanceId, String networkId, String networkData) {
+ this.svcInstanceId = svcInstanceId;
+ this.networkId = networkId;
+ this.networkData = networkData;
+ }
+
+
+
+ public String getSvcInstanceId() {
+ return svcInstanceId;
+ }
+
+ public void setSvcInstanceId(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ }
+
+ public String getNetworkId() {
+ return networkId;
+ }
+
+ public void setNetworkId(String networkId) {
+ this.networkId = networkId;
+ }
+
+ public String getNetworkData() {
+ return networkData;
+ }
+
+ public void setNetworkData(String networkData) {
+ this.networkData = networkData;
+ }
+
+
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworksRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworksRepository.java
new file mode 100644
index 0000000..56fc56c
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigNetworksRepository.java
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigNetworksRepository extends CrudRepository<ConfigNetworks, Long> {
+
+ List<ConfigNetworks> findBySvcInstanceId(String svcInstanceId);
+ List<ConfigNetworks> findBySvcInstanceIdAndNetworkId(String svcInstanceId, String networkId);
+ long deleteBySvcInstanceId(String svcInstanceId);
+ long deleteBySvcInstanceIdAndNetworkId(String svcInstanceId, String networkId);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurations.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurations.java
new file mode 100644
index 0000000..cdc5462
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurations.java
@@ -0,0 +1,181 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiConfigurationstatusConfigurationStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS")
+@Table(name="CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS")
+public class ConfigPortMirrorConfigurations {
+ @Id
+ @Length(max = 255)
+ @Column(length = 255)
+ String configurationId;
+
+ @Lob
+ String pmcData;
+
+ // portMirrorConfiguration status fields
+ String portMirrorConfigurationStatusResponseCode;
+
+ String portMirrorConfigurationStatusResponseMessage;
+
+ String portMirrorConfigurationStatusFinalIndicator;
+
+ String portMirrorConfigurationStatusRequestStatus;
+
+ String portMirrorConfigurationStatusAction;
+
+ String portMirrorConfigurationStatusRpcName;
+
+ String portMirrorConfigurationStatusRpcAction;
+
+ String portMirrorConfigurationStatusResponseTimestamp;
+
+
+ public ConfigPortMirrorConfigurations() {
+ this.configurationId = "";
+ this.pmcData = "";
+ }
+
+ public ConfigPortMirrorConfigurations(String configurationId, String pmcData) {
+ this.configurationId = configurationId;
+ this.pmcData = pmcData;
+ }
+
+ public ConfigPortMirrorConfigurations(String configurationId, String pmcData, GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus) {
+ this.configurationId = configurationId;
+ this.pmcData = pmcData;
+
+ if (portMirrorConfigurationStatus != null) {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatus.getAction();
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatus.getFinalIndicator();
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatus.getRequestStatus().toString();
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatus.getResponseCode();
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationStatus.getResponseMessage();
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatus.getResponseTimestamp();
+ }
+ }
+
+ public String getConfigureationId() {
+ return configurationId;
+ }
+
+ public void setConfigureationId(String configureationId) {
+ this.configurationId = configureationId;
+ }
+
+ public String getPmcData() {
+ return pmcData;
+ }
+
+ public void setPmcData(String pmcData) {
+ this.pmcData = pmcData;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseCode() {
+ return portMirrorConfigurationStatusResponseCode;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseCode(String portMirrorConfigurationStatusResponseCode) {
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatusResponseCode;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseMessage() {
+ return portMirrorConfigurationStatusResponseMessage;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseMessage(String portMirrorConfigurationsStatusResponseMessage) {
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationsStatusResponseMessage;
+ }
+
+ public String getPortMirrorConfigurationStatusFinalIndicator() {
+ return portMirrorConfigurationStatusFinalIndicator;
+ }
+
+ public void setPortMirrorConfigurationStatusFinalIndicator(String portMirrorConfigurationStatusFinalIndicator) {
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatusFinalIndicator;
+ }
+
+ public String getPortMirrorConfigurationStatusRequestStatus() {
+ return portMirrorConfigurationStatusRequestStatus;
+ }
+
+ public void setPortMirrorConfigurationStatusRequestStatus(String portMirrorConfigurationStatusRequestStatus) {
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatusRequestStatus;
+ }
+
+ public String getPortMirrorConfigurationStatusAction() {
+ return portMirrorConfigurationStatusAction;
+ }
+
+ public void setPortMirrorConfigurationStatusAction(String portMirrorConfigurationStatusAction) {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatusAction;
+ }
+
+ public String getPortMirrorConfigurationStatusRpcName() {
+ return portMirrorConfigurationStatusRpcName;
+ }
+
+ public void setPortMirrorConfigurationStatusRpcName(String portMirrorConfigurationStatusRpcName) {
+ this.portMirrorConfigurationStatusRpcName = portMirrorConfigurationStatusRpcName;
+ }
+
+ public String getPortMirrorConfigurationStatusRpcAction() {
+ return portMirrorConfigurationStatusRpcAction;
+ }
+
+ public void setPortMirrorConfigurationStatusRpcAction(String portMirrorConfigurationStatusRpcAction) {
+ this.portMirrorConfigurationStatusRpcAction = portMirrorConfigurationStatusRpcAction;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseTimestamp() {
+ return portMirrorConfigurationStatusResponseTimestamp;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseTimestamp(String portMirrorConfigurationStatusResponseTimestamp) {
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatusResponseTimestamp;
+ }
+
+ public GenericResourceApiConfigurationstatusConfigurationStatus getPortMirrorConfigurationStatus() {
+
+ if ((portMirrorConfigurationStatusAction == null) &&
+ (portMirrorConfigurationStatusFinalIndicator == null) &&
+ (portMirrorConfigurationStatusRequestStatus == null) &&
+ (portMirrorConfigurationStatusResponseCode == null) &&
+ (portMirrorConfigurationStatusResponseMessage == null) &&
+ (portMirrorConfigurationStatusResponseTimestamp == null)) {
+ return null;
+ }
+
+ GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus = new GenericResourceApiConfigurationstatusConfigurationStatus();
+ portMirrorConfigurationStatus.setAction(portMirrorConfigurationStatusAction);
+ portMirrorConfigurationStatus.setFinalIndicator(portMirrorConfigurationStatusFinalIndicator);
+ portMirrorConfigurationStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(portMirrorConfigurationStatusRequestStatus));
+ portMirrorConfigurationStatus.setResponseCode(portMirrorConfigurationStatusResponseCode);
+ portMirrorConfigurationStatus.setResponseMessage(portMirrorConfigurationStatusResponseMessage);
+ portMirrorConfigurationStatus.setResponseTimestamp(portMirrorConfigurationStatusResponseTimestamp);
+
+ return(portMirrorConfigurationStatus);
+ }
+
+ public void setPortMirrorConfigurationStatus(GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus) {
+ if (portMirrorConfigurationStatus == null) {
+ this.portMirrorConfigurationStatusAction = null;
+ this.portMirrorConfigurationStatusFinalIndicator = null;
+ this.portMirrorConfigurationStatusRequestStatus = null;
+ this.portMirrorConfigurationStatusResponseCode = null;
+ this.portMirrorConfigurationStatusResponseMessage = null;
+ this.portMirrorConfigurationStatusResponseTimestamp = null;
+ } else {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatus.getAction();
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatus.getFinalIndicator();
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatus.getRequestStatus().toString();
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatus.getResponseCode();
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationStatus.getResponseMessage();
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatus.getResponseTimestamp();
+ }
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java
new file mode 100644
index 0000000..9ca148b
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigPortMirrorConfigurationsRepository extends CrudRepository<ConfigPortMirrorConfigurations, Long> {
+
+ List<ConfigPortMirrorConfigurations> findByConfigurationId(String configurationId);
+ long deleteByConfigurationId(String configurationId);
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadData.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadData.java
new file mode 100644
index 0000000..a23884d
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadData.java
@@ -0,0 +1,81 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+
+@Entity(name = "CONFIG_PRELOAD_DATA")
+@Table(name="CONFIG_PRELOAD_DATA")
+@IdClass(PreloadDataKey.class)
+public class ConfigPreloadData {
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ private String preloadId;
+
+ @Id
+ @Length(max = 25)
+ @Column(length = 25)
+ private String preloadType;
+
+ @Lob
+ @Column(length=10000)
+ private String preloadData;
+
+ public ConfigPreloadData() {
+ this.preloadId = "";
+ this.preloadType = "";
+ this.preloadData = "";
+ }
+
+ public ConfigPreloadData(String preloadId, String preloadType, String preloadData) {
+ this.preloadId = preloadId;
+ this.preloadType = preloadType;
+ this.preloadData = preloadData;
+ }
+
+ public String getPreloadId() {
+ return preloadId;
+ }
+
+ public void setPreloadId(String preloadId) {
+ this.preloadId = preloadId;
+ }
+
+ public String getPreloadType() {
+ return preloadType;
+ }
+
+ public void setPreloadType(String preloadType) {
+ this.preloadType = preloadType;
+ }
+
+ public String getPreloadData() {
+ return preloadData;
+ }
+
+ public void setPreloadData(String preloadData) {
+ this.preloadData = preloadData;
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadDataRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadDataRepository.java
new file mode 100644
index 0000000..0ec45b7
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPreloadDataRepository.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Transactional
+public interface ConfigPreloadDataRepository extends CrudRepository<ConfigPreloadData, Long> {
+
+ List<ConfigPreloadData> findByPreloadIdAndPreloadType(String preloadId, String preloadType);
+ long deleteByPreloadIdAndPreloadType(String preloadId, String preloadType);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServices.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServices.java
new file mode 100644
index 0000000..bf5d862
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServices.java
@@ -0,0 +1,201 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicestatusServiceStatus;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_SERVICES")
+@Table(name="CONFIG_GRA_SERVICES")
+public class ConfigServices {
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String svcInstanceId;
+
+ @Lob
+ String svcData;
+
+ // Service status fields
+ String serviceStatusResponseCode;
+
+ String serviceStatusResponseMessage;
+
+ String serviceStatusFinalIndicator;
+
+ String serviceStatusRequestStatus;
+
+ String serviceStatusAction;
+
+ String serviceStatusRpcName;
+
+ String serviceStatusRpcAction;
+
+ String serviceStatusResponseTimestamp;
+
+
+ public ConfigServices() {
+ this.svcInstanceId = "";
+ this.svcData = "";
+ }
+
+ public ConfigServices(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ this.svcData = "";
+ }
+
+ public ConfigServices(String svcInstanceId, String svcData) {
+ this.svcInstanceId = svcInstanceId;
+ this.svcData = svcData;
+ }
+
+ public ConfigServices(String svcInstanceId, GenericResourceApiServicestatusServiceStatus serviceStatus) {
+ this.svcInstanceId = svcInstanceId;
+ this.svcData = "";
+
+ if (serviceStatus != null) {
+ this.serviceStatusAction = serviceStatus.getAction();
+ this.serviceStatusFinalIndicator = serviceStatus.getFinalIndicator();
+ this.serviceStatusRequestStatus = serviceStatus.getRequestStatus().toString();
+ this.serviceStatusResponseCode = serviceStatus.getResponseCode();
+ this.serviceStatusResponseMessage = serviceStatus.getResponseMessage();
+ this.serviceStatusResponseTimestamp = serviceStatus.getResponseTimestamp();
+ }
+ }
+
+ public ConfigServices(String svcInstanceId, String svcData, GenericResourceApiServicestatusServiceStatus serviceStatus) {
+ this.svcInstanceId = svcInstanceId;
+ this.svcData = svcData;
+
+ if (serviceStatus != null) {
+ this.serviceStatusAction = serviceStatus.getAction();
+ this.serviceStatusFinalIndicator = serviceStatus.getFinalIndicator();
+ this.serviceStatusRequestStatus = serviceStatus.getRequestStatus().toString();
+ this.serviceStatusResponseCode = serviceStatus.getResponseCode();
+ this.serviceStatusResponseMessage = serviceStatus.getResponseMessage();
+ this.serviceStatusResponseTimestamp = serviceStatus.getResponseTimestamp();
+ }
+ }
+
+ public String getSvcInstanceId() {
+ return svcInstanceId;
+ }
+
+ public void setSvcInstanceId(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ }
+
+ public String getSvcData() {
+ return svcData;
+ }
+
+ public void setSvcData(String svcData) {
+ this.svcData = svcData;
+ }
+
+ public String getServiceStatusResponseCode() {
+ return serviceStatusResponseCode;
+ }
+
+ public void setServiceStatusResponseCode(String serviceStatusResponseCode) {
+ this.serviceStatusResponseCode = serviceStatusResponseCode;
+ }
+
+ public String getServiceStatusResponseMessage() {
+ return serviceStatusResponseMessage;
+ }
+
+ public void setServiceStatusResponseMessage(String servicesStatusResponseMessage) {
+ this.serviceStatusResponseMessage = servicesStatusResponseMessage;
+ }
+
+ public String getServiceStatusFinalIndicator() {
+ return serviceStatusFinalIndicator;
+ }
+
+ public void setServiceStatusFinalIndicator(String serviceStatusFinalIndicator) {
+ this.serviceStatusFinalIndicator = serviceStatusFinalIndicator;
+ }
+
+ public String getServiceStatusRequestStatus() {
+ return serviceStatusRequestStatus;
+ }
+
+ public void setServiceStatusRequestStatus(String serviceStatusRequestStatus) {
+ this.serviceStatusRequestStatus = serviceStatusRequestStatus;
+ }
+
+ public String getServiceStatusAction() {
+ return serviceStatusAction;
+ }
+
+ public void setServiceStatusAction(String serviceStatusAction) {
+ this.serviceStatusAction = serviceStatusAction;
+ }
+
+ public String getServiceStatusRpcName() {
+ return serviceStatusRpcName;
+ }
+
+ public void setServiceStatusRpcName(String serviceStatusRpcName) {
+ this.serviceStatusRpcName = serviceStatusRpcName;
+ }
+
+ public String getServiceStatusRpcAction() {
+ return serviceStatusRpcAction;
+ }
+
+ public void setServiceStatusRpcAction(String serviceStatusRpcAction) {
+ this.serviceStatusRpcAction = serviceStatusRpcAction;
+ }
+
+ public String getServiceStatusResponseTimestamp() {
+ return serviceStatusResponseTimestamp;
+ }
+
+ public void setServiceStatusResponseTimestamp(String serviceStatusResponseTimestamp) {
+ this.serviceStatusResponseTimestamp = serviceStatusResponseTimestamp;
+ }
+
+ public GenericResourceApiServicestatusServiceStatus getServiceStatus() {
+
+ if ((serviceStatusAction == null) &&
+ (serviceStatusFinalIndicator == null) &&
+ (serviceStatusRequestStatus == null) &&
+ (serviceStatusResponseCode == null) &&
+ (serviceStatusResponseMessage == null) &&
+ (serviceStatusResponseTimestamp == null)) {
+ return null;
+ }
+
+ GenericResourceApiServicestatusServiceStatus serviceStatus = new GenericResourceApiServicestatusServiceStatus();
+ serviceStatus.setAction(serviceStatusAction);
+ serviceStatus.setFinalIndicator(serviceStatusFinalIndicator);
+ serviceStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(serviceStatusRequestStatus));
+ serviceStatus.setResponseCode(serviceStatusResponseCode);
+ serviceStatus.setResponseMessage(serviceStatusResponseMessage);
+ serviceStatus.setResponseTimestamp(serviceStatusResponseTimestamp);
+
+ return(serviceStatus);
+ }
+
+ public void setServiceStatus(GenericResourceApiServicestatusServiceStatus serviceStatus) {
+ if (serviceStatus == null) {
+ this.serviceStatusAction = null;
+ this.serviceStatusFinalIndicator = null;
+ this.serviceStatusRequestStatus = null;
+ this.serviceStatusResponseCode = null;
+ this.serviceStatusResponseMessage = null;
+ this.serviceStatusResponseTimestamp = null;
+ } else {
+ this.serviceStatusAction = serviceStatus.getAction();
+ this.serviceStatusFinalIndicator = serviceStatus.getFinalIndicator();
+ this.serviceStatusRequestStatus = serviceStatus.getRequestStatus().toString();
+ this.serviceStatusResponseCode = serviceStatus.getResponseCode();
+ this.serviceStatusResponseMessage = serviceStatus.getResponseMessage();
+ this.serviceStatusResponseTimestamp = serviceStatus.getResponseTimestamp();
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java
new file mode 100644
index 0000000..5b43947
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigServicesRepository extends CrudRepository<ConfigServices, Long> {
+
+ List<ConfigServices> findBySvcInstanceId(String svcInstanceId);
+ long deleteBySvcInstanceId(String svcInstanceId);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModules.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModules.java
new file mode 100644
index 0000000..d4d5ea5
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModules.java
@@ -0,0 +1,84 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_VF_MODULES")
+@Table(name="CONFIG_GRA_VF_MODULES")
+@IdClass(VfModulesKey.class)
+public class ConfigVfModules {
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String svcInstanceId;
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String vnfId;
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String vfModuleId;
+
+ @Lob
+ String vfModuleData;
+
+
+ public ConfigVfModules() {
+ this.svcInstanceId = "";
+ this.vnfId = "";
+ this.vfModuleId = "";
+ this.vfModuleData = "";
+ }
+
+ public ConfigVfModules(String svcInstanceId, String vnfId, String vfModuleId) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ this.vfModuleId = vfModuleId;
+ this.vfModuleData = "";
+ }
+
+ public ConfigVfModules(String svcInstanceId, String vnfId, String vfModuleId, String vfModuleData) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ this.vfModuleId = vfModuleId;
+ this.vfModuleData = vfModuleData;
+ }
+
+ public String getSvcInstanceId() {
+ return svcInstanceId;
+ }
+
+ public void setSvcInstanceId(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ }
+
+ public String getVnfId() {
+ return vnfId;
+ }
+
+ public void setVnfId(String vnfId) {
+ this.vnfId = vnfId;
+ }
+
+ public String getVfModuleId() {
+ return vfModuleId;
+ }
+
+ public void setVfModuleId(String vfModuleId) {
+ this.vfModuleId = vfModuleId;
+ }
+
+ public String getVfModuleData() {
+ return vfModuleData;
+ }
+
+ public void setVfModuleData(String vfModuleData) {
+ this.vfModuleData = vfModuleData;
+ }
+
+
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModulesRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModulesRepository.java
new file mode 100644
index 0000000..8203483
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVfModulesRepository.java
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigVfModulesRepository extends CrudRepository<ConfigVfModules, Long> {
+
+ List<ConfigVfModules> findBySvcInstanceId(String svcInstanceId);
+ List<ConfigVfModules> findBySvcInstanceIdAndVnfId(String svcInstanceId, String vnfId);
+ List<ConfigVfModules> findBySvcInstanceIdAndVnfIdAndVfModuleId(String svcInstanceId, String vnfId, String vfModuleId);
+ long deleteBySvcInstanceId(String svcInstanceId);
+ long deleteBySvcInstanceIdAndVnfId(String svcInstanceId, String vnfId);
+ long deleteBySvcInstanceIdAndVnfIdAndVfModuleId(String svcInstanceId, String vnfId, String vfModuleId);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfs.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfs.java
new file mode 100644
index 0000000..44337fd
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfs.java
@@ -0,0 +1,66 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+
+@Entity(name="CONFIG_GRA_VNFS")
+@Table(name="CONFIG_GRA_VNFS")
+@IdClass(VnfsKey.class)
+public class ConfigVnfs {
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String svcInstanceId;
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String vnfId;
+
+ @Lob
+ String vnfData;
+
+
+ public ConfigVnfs() {
+ this.svcInstanceId = "";
+ this.vnfId = "";
+ this.vnfData = "";
+ }
+
+ public ConfigVnfs(String svcInstanceId, String vnfId) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ this.vnfData = "";
+ }
+
+ public ConfigVnfs(String svcInstanceId, String vnfId, String vnfData) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ this.vnfData = vnfData;
+ }
+
+ public String getSvcInstanceId() {
+ return svcInstanceId;
+ }
+
+ public void setSvcInstanceId(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ }
+
+ public String getVnfId() {
+ return vnfId;
+ }
+
+ public void setVnfId(String vnfId) {
+ this.vnfId = vnfId;
+ }
+
+ public String getVnfData() {
+ return vnfData;
+ }
+
+ public void setVnfData(String vnfData) {
+ this.vnfData = vnfData;
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfsRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfsRepository.java
new file mode 100644
index 0000000..3909eb3
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigVnfsRepository.java
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface ConfigVnfsRepository extends CrudRepository<ConfigVnfs, Long> {
+
+ List<ConfigVnfs> findBySvcInstanceId(String svcInstanceId);
+ List<ConfigVnfs> findBySvcInstanceIdAndVnfId(String svcInstanceId, String vnfId);
+ long deleteBySvcInstanceId(String svcInstanceId);
+ long deleteBySvcInstanceIdAndVnfId(String svcInstanceId, String vnfId);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/NetworksKey.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/NetworksKey.java
new file mode 100644
index 0000000..61f7602
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/NetworksKey.java
@@ -0,0 +1,30 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import java.io.Serializable;
+
+public class NetworksKey implements Serializable {
+ private String svcInstanceId = "";
+ private String networkId = "";
+
+ public NetworksKey() {
+ this.svcInstanceId = "";
+ this.networkId = "";
+ }
+
+ public NetworksKey(String svcInstanceId, String networkId) {
+ this.svcInstanceId = svcInstanceId;
+ this.networkId = networkId;
+ }
+
+ @Override
+ public int hashCode() {
+ return svcInstanceId.hashCode() + networkId.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof NetworksKey &&
+ svcInstanceId.equals(((NetworksKey)obj).svcInstanceId) &&
+ networkId.equals(((NetworksKey)obj).networkId));
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResources.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResources.java
new file mode 100644
index 0000000..51ab88f
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResources.java
@@ -0,0 +1,181 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiAllottedresourcestatusAllottedResourceStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+
+import javax.persistence.*;
+
+@Entity(name="OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES")
+@Table(name="OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES")
+public class OperationalContrailRouteAllottedResources {
+ @Id
+ @Length(max = 255)
+ @Column(length = 255)
+ String allottedResourceId;
+
+ @Lob
+ String arData;
+
+ // allottedResource status fields
+ String allottedResourceStatusResponseCode;
+
+ String allottedResourceStatusResponseMessage;
+
+ String allottedResourceStatusFinalIndicator;
+
+ String allottedResourceStatusRequestStatus;
+
+ String allottedResourceStatusAction;
+
+ String allottedResourceStatusRpcName;
+
+ String allottedResourceStatusRpcAction;
+
+ String allottedResourceStatusResponseTimestamp;
+
+
+ public OperationalContrailRouteAllottedResources() {
+ this.allottedResourceId = "";
+ this.arData = "";
+ }
+
+ public OperationalContrailRouteAllottedResources(String allottedResourceId, String arData) {
+ this.allottedResourceId = allottedResourceId;
+ this.arData = arData;
+ }
+
+ public OperationalContrailRouteAllottedResources(String allottedResourceId, String arData, GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus) {
+ this.allottedResourceId = allottedResourceId;
+ this.arData = arData;
+
+ if (allottedResourceStatus != null) {
+ this.allottedResourceStatusAction = allottedResourceStatus.getAction();
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatus.getFinalIndicator();
+ this.allottedResourceStatusRequestStatus = allottedResourceStatus.getRequestStatus().toString();
+ this.allottedResourceStatusResponseCode = allottedResourceStatus.getResponseCode();
+ this.allottedResourceStatusResponseMessage = allottedResourceStatus.getResponseMessage();
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatus.getResponseTimestamp();
+ }
+ }
+
+ public String getAllottedResourceId() {
+ return allottedResourceId;
+ }
+
+ public void setAllottedResourceId(String allottedResourceId) {
+ this.allottedResourceId = allottedResourceId;
+ }
+
+ public String getArData() {
+ return arData;
+ }
+
+ public void setArData(String arData) {
+ this.arData = arData;
+ }
+
+ public String getAllottedResourceStatusResponseCode() {
+ return allottedResourceStatusResponseCode;
+ }
+
+ public void setAllottedResourceStatusResponseCode(String allottedResourceStatusResponseCode) {
+ this.allottedResourceStatusResponseCode = allottedResourceStatusResponseCode;
+ }
+
+ public String getAllottedResourceStatusResponseMessage() {
+ return allottedResourceStatusResponseMessage;
+ }
+
+ public void setAllottedResourceStatusResponseMessage(String allottedResourcesStatusResponseMessage) {
+ this.allottedResourceStatusResponseMessage = allottedResourcesStatusResponseMessage;
+ }
+
+ public String getAllottedResourceStatusFinalIndicator() {
+ return allottedResourceStatusFinalIndicator;
+ }
+
+ public void setAllottedResourceStatusFinalIndicator(String allottedResourceStatusFinalIndicator) {
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatusFinalIndicator;
+ }
+
+ public String getAllottedResourceStatusRequestStatus() {
+ return allottedResourceStatusRequestStatus;
+ }
+
+ public void setAllottedResourceStatusRequestStatus(String allottedResourceStatusRequestStatus) {
+ this.allottedResourceStatusRequestStatus = allottedResourceStatusRequestStatus;
+ }
+
+ public String getAllottedResourceStatusAction() {
+ return allottedResourceStatusAction;
+ }
+
+ public void setAllottedResourceStatusAction(String allottedResourceStatusAction) {
+ this.allottedResourceStatusAction = allottedResourceStatusAction;
+ }
+
+ public String getAllottedResourceStatusRpcName() {
+ return allottedResourceStatusRpcName;
+ }
+
+ public void setAllottedResourceStatusRpcName(String allottedResourceStatusRpcName) {
+ this.allottedResourceStatusRpcName = allottedResourceStatusRpcName;
+ }
+
+ public String getAllottedResourceStatusRpcAction() {
+ return allottedResourceStatusRpcAction;
+ }
+
+ public void setAllottedResourceStatusRpcAction(String allottedResourceStatusRpcAction) {
+ this.allottedResourceStatusRpcAction = allottedResourceStatusRpcAction;
+ }
+
+ public String getAllottedResourceStatusResponseTimestamp() {
+ return allottedResourceStatusResponseTimestamp;
+ }
+
+ public void setAllottedResourceStatusResponseTimestamp(String allottedResourceStatusResponseTimestamp) {
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatusResponseTimestamp;
+ }
+
+ public GenericResourceApiAllottedresourcestatusAllottedResourceStatus getAllottedResourceStatus() {
+
+ if ((allottedResourceStatusAction == null) &&
+ (allottedResourceStatusFinalIndicator == null) &&
+ (allottedResourceStatusRequestStatus == null) &&
+ (allottedResourceStatusResponseCode == null) &&
+ (allottedResourceStatusResponseMessage == null) &&
+ (allottedResourceStatusResponseTimestamp == null)) {
+ return null;
+ }
+
+ GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus = new GenericResourceApiAllottedresourcestatusAllottedResourceStatus();
+ allottedResourceStatus.setAction(allottedResourceStatusAction);
+ allottedResourceStatus.setFinalIndicator(allottedResourceStatusFinalIndicator);
+ allottedResourceStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(allottedResourceStatusRequestStatus));
+ allottedResourceStatus.setResponseCode(allottedResourceStatusResponseCode);
+ allottedResourceStatus.setResponseMessage(allottedResourceStatusResponseMessage);
+ allottedResourceStatus.setResponseTimestamp(allottedResourceStatusResponseTimestamp);
+
+ return(allottedResourceStatus);
+ }
+
+ public void setAllottedResourceStatus(GenericResourceApiAllottedresourcestatusAllottedResourceStatus allottedResourceStatus) {
+ if (allottedResourceStatus == null) {
+ this.allottedResourceStatusAction = null;
+ this.allottedResourceStatusFinalIndicator = null;
+ this.allottedResourceStatusRequestStatus = null;
+ this.allottedResourceStatusResponseCode = null;
+ this.allottedResourceStatusResponseMessage = null;
+ this.allottedResourceStatusResponseTimestamp = null;
+ } else {
+ this.allottedResourceStatusAction = allottedResourceStatus.getAction();
+ this.allottedResourceStatusFinalIndicator = allottedResourceStatus.getFinalIndicator();
+ this.allottedResourceStatusRequestStatus = allottedResourceStatus.getRequestStatus().toString();
+ this.allottedResourceStatusResponseCode = allottedResourceStatus.getResponseCode();
+ this.allottedResourceStatusResponseMessage = allottedResourceStatus.getResponseMessage();
+ this.allottedResourceStatusResponseTimestamp = allottedResourceStatus.getResponseTimestamp();
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java
new file mode 100644
index 0000000..c737721
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface OperationalContrailRouteAllottedResourcesRepository extends CrudRepository<OperationalContrailRouteAllottedResources, Long> {
+
+ List<OperationalContrailRouteAllottedResources> findByAllottedResourceId(String allottedResourceId);
+ long deleteByAllottedResourceId(String allottedResourceId);
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurations.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurations.java
new file mode 100644
index 0000000..da9c0ce
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurations.java
@@ -0,0 +1,181 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiConfigurationstatusConfigurationStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+
+import javax.persistence.*;
+
+@Entity(name="OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS")
+@Table(name="OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS")
+public class OperationalPortMirrorConfigurations {
+ @Id
+ @Length(max = 255)
+ @Column(length = 255)
+ String configurationId;
+
+ @Lob
+ String pmcData;
+
+ // portMirrorConfiguration status fields
+ String portMirrorConfigurationStatusResponseCode;
+
+ String portMirrorConfigurationStatusResponseMessage;
+
+ String portMirrorConfigurationStatusFinalIndicator;
+
+ String portMirrorConfigurationStatusRequestStatus;
+
+ String portMirrorConfigurationStatusAction;
+
+ String portMirrorConfigurationStatusRpcName;
+
+ String portMirrorConfigurationStatusRpcAction;
+
+ String portMirrorConfigurationStatusResponseTimestamp;
+
+
+ public OperationalPortMirrorConfigurations() {
+ this.configurationId = "";
+ this.pmcData = "";
+ }
+
+ public OperationalPortMirrorConfigurations(String configurationId, String pmcData) {
+ this.configurationId = configurationId;
+ this.pmcData = pmcData;
+ }
+
+ public OperationalPortMirrorConfigurations(String configurationId, String pmcData, GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus) {
+ this.configurationId = configurationId;
+ this.pmcData = pmcData;
+
+ if (portMirrorConfigurationStatus != null) {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatus.getAction();
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatus.getFinalIndicator();
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatus.getRequestStatus().toString();
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatus.getResponseCode();
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationStatus.getResponseMessage();
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatus.getResponseTimestamp();
+ }
+ }
+
+ public String getConfigurationId() {
+ return configurationId;
+ }
+
+ public void setConfigurationId(String configurationId) {
+ this.configurationId = configurationId;
+ }
+
+ public String getPmcData() {
+ return pmcData;
+ }
+
+ public void setPmcData(String pmcData) {
+ this.pmcData = pmcData;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseCode() {
+ return portMirrorConfigurationStatusResponseCode;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseCode(String portMirrorConfigurationStatusResponseCode) {
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatusResponseCode;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseMessage() {
+ return portMirrorConfigurationStatusResponseMessage;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseMessage(String portMirrorConfigurationsStatusResponseMessage) {
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationsStatusResponseMessage;
+ }
+
+ public String getPortMirrorConfigurationStatusFinalIndicator() {
+ return portMirrorConfigurationStatusFinalIndicator;
+ }
+
+ public void setPortMirrorConfigurationStatusFinalIndicator(String portMirrorConfigurationStatusFinalIndicator) {
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatusFinalIndicator;
+ }
+
+ public String getPortMirrorConfigurationStatusRequestStatus() {
+ return portMirrorConfigurationStatusRequestStatus;
+ }
+
+ public void setPortMirrorConfigurationStatusRequestStatus(String portMirrorConfigurationStatusRequestStatus) {
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatusRequestStatus;
+ }
+
+ public String getPortMirrorConfigurationStatusAction() {
+ return portMirrorConfigurationStatusAction;
+ }
+
+ public void setPortMirrorConfigurationStatusAction(String portMirrorConfigurationStatusAction) {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatusAction;
+ }
+
+ public String getPortMirrorConfigurationStatusRpcName() {
+ return portMirrorConfigurationStatusRpcName;
+ }
+
+ public void setPortMirrorConfigurationStatusRpcName(String portMirrorConfigurationStatusRpcName) {
+ this.portMirrorConfigurationStatusRpcName = portMirrorConfigurationStatusRpcName;
+ }
+
+ public String getPortMirrorConfigurationStatusRpcAction() {
+ return portMirrorConfigurationStatusRpcAction;
+ }
+
+ public void setPortMirrorConfigurationStatusRpcAction(String portMirrorConfigurationStatusRpcAction) {
+ this.portMirrorConfigurationStatusRpcAction = portMirrorConfigurationStatusRpcAction;
+ }
+
+ public String getPortMirrorConfigurationStatusResponseTimestamp() {
+ return portMirrorConfigurationStatusResponseTimestamp;
+ }
+
+ public void setPortMirrorConfigurationStatusResponseTimestamp(String portMirrorConfigurationStatusResponseTimestamp) {
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatusResponseTimestamp;
+ }
+
+ public GenericResourceApiConfigurationstatusConfigurationStatus getPortMirrorConfigurationStatus() {
+
+ if ((portMirrorConfigurationStatusAction == null) &&
+ (portMirrorConfigurationStatusFinalIndicator == null) &&
+ (portMirrorConfigurationStatusRequestStatus == null) &&
+ (portMirrorConfigurationStatusResponseCode == null) &&
+ (portMirrorConfigurationStatusResponseMessage == null) &&
+ (portMirrorConfigurationStatusResponseTimestamp == null)) {
+ return null;
+ }
+
+ GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus = new GenericResourceApiConfigurationstatusConfigurationStatus();
+ portMirrorConfigurationStatus.setAction(portMirrorConfigurationStatusAction);
+ portMirrorConfigurationStatus.setFinalIndicator(portMirrorConfigurationStatusFinalIndicator);
+ portMirrorConfigurationStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(portMirrorConfigurationStatusRequestStatus));
+ portMirrorConfigurationStatus.setResponseCode(portMirrorConfigurationStatusResponseCode);
+ portMirrorConfigurationStatus.setResponseMessage(portMirrorConfigurationStatusResponseMessage);
+ portMirrorConfigurationStatus.setResponseTimestamp(portMirrorConfigurationStatusResponseTimestamp);
+
+ return(portMirrorConfigurationStatus);
+ }
+
+ public void setPortMirrorConfigurationStatus(GenericResourceApiConfigurationstatusConfigurationStatus portMirrorConfigurationStatus) {
+ if (portMirrorConfigurationStatus == null) {
+ this.portMirrorConfigurationStatusAction = null;
+ this.portMirrorConfigurationStatusFinalIndicator = null;
+ this.portMirrorConfigurationStatusRequestStatus = null;
+ this.portMirrorConfigurationStatusResponseCode = null;
+ this.portMirrorConfigurationStatusResponseMessage = null;
+ this.portMirrorConfigurationStatusResponseTimestamp = null;
+ } else {
+ this.portMirrorConfigurationStatusAction = portMirrorConfigurationStatus.getAction();
+ this.portMirrorConfigurationStatusFinalIndicator = portMirrorConfigurationStatus.getFinalIndicator();
+ this.portMirrorConfigurationStatusRequestStatus = portMirrorConfigurationStatus.getRequestStatus().toString();
+ this.portMirrorConfigurationStatusResponseCode = portMirrorConfigurationStatus.getResponseCode();
+ this.portMirrorConfigurationStatusResponseMessage = portMirrorConfigurationStatus.getResponseMessage();
+ this.portMirrorConfigurationStatusResponseTimestamp = portMirrorConfigurationStatus.getResponseTimestamp();
+ }
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java
new file mode 100644
index 0000000..1d57c86
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+
+@Transactional
+public interface OperationalPortMirrorConfigurationsRepository extends CrudRepository<OperationalPortMirrorConfigurations, Long> {
+
+ List<OperationalPortMirrorConfigurations> findByConfigurationId(String configurationId);
+ long deleteByConfigurationId(String configurationId);
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadData.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadData.java
new file mode 100644
index 0000000..c63926d
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadData.java
@@ -0,0 +1,81 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+
+@Entity(name = "OPERATIONAL_PRELOAD_DATA")
+@Table(name="OPERATIONAL_PRELOAD_DATA")
+@IdClass(PreloadDataKey.class)
+public class OperationalPreloadData {
+
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ private String preloadId;
+
+ @Id
+ @Length(max = 25)
+ @Column(length = 25)
+ private String preloadType;
+
+ @Lob
+ @Column(length=10000)
+ private String preloadData;
+
+ public OperationalPreloadData() {
+ this.preloadId = "";
+ this.preloadType = "";
+ this.preloadData = "";
+ }
+
+ public OperationalPreloadData(String preloadId, String preloadType, String preloadData) {
+ this.preloadId = preloadId;
+ this.preloadType = preloadType;
+ this.preloadData = preloadData;
+ }
+
+ public String getPreloadId() {
+ return preloadId;
+ }
+
+ public void setPreloadId(String preloadId) {
+ this.preloadId = preloadId;
+ }
+
+ public String getPreloadType() {
+ return preloadType;
+ }
+
+ public void setPreloadType(String preloadType) {
+ this.preloadType = preloadType;
+ }
+
+ public String getPreloadData() {
+ return preloadData;
+ }
+
+ public void setPreloadData(String preloadData) {
+ this.preloadData = preloadData;
+ }
+
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadDataRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadDataRepository.java
new file mode 100644
index 0000000..34df132
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPreloadDataRepository.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+
+public interface OperationalPreloadDataRepository extends CrudRepository<OperationalPreloadData, Long> {
+
+ List<OperationalPreloadData> findByPreloadIdAndPreloadType(String preloadId, String preloadType);
+ long deleteByPreloadIdAndPreloadType(String preloadId, String preloadType);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServices.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServices.java
new file mode 100644
index 0000000..5686c4c
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServices.java
@@ -0,0 +1,159 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.hibernate.validator.constraints.Length;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiRequestStatusEnumeration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicestatusServiceStatus;
+
+import javax.persistence.*;
+
+@Entity(name="OPERATIONAL_GRA_SERVICES")
+@Table(name="OPERATIONAL_GRA_SERVICES")
+public class OperationalServices {
+ @Id
+ @Length(max = 100)
+ @Column(length = 100)
+ String svcInstanceId;
+
+ @Lob
+ String svcData;
+
+ // Service status fields
+ String serviceStatusResponseCode;
+
+ String serviceStatusResponseMessage;
+
+ String serviceStatusFinalIndicator;
+
+ String serviceStatusRequestStatus;
+
+ String serviceStatusAction;
+
+ String serviceStatusRpcName;
+
+ String serviceStatusRpcAction;
+
+ String serviceStatusResponseTimestamp;
+
+ public String getSvcInstanceId() {
+ return svcInstanceId;
+ }
+
+ public OperationalServices() {
+ this.svcInstanceId = "";
+ this.svcData = "";
+ }
+
+ public OperationalServices(String svcInstanceId, String svcData, GenericResourceApiServicestatusServiceStatus serviceStatus) {
+ this.svcInstanceId = svcInstanceId;
+ this.svcData = svcData;
+ if (serviceStatus != null) {
+ this.serviceStatusAction = serviceStatus.getAction();
+ this.serviceStatusFinalIndicator = serviceStatus.getFinalIndicator();
+ this.serviceStatusRequestStatus = serviceStatus.getRequestStatus().toString();
+ this.serviceStatusResponseCode = serviceStatus.getResponseCode();
+ this.serviceStatusResponseMessage = serviceStatus.getResponseMessage();
+ this.serviceStatusResponseTimestamp = serviceStatus.getResponseTimestamp();
+ }
+ }
+
+ public void setSvcInstanceId(String svcInstanceId) {
+ this.svcInstanceId = svcInstanceId;
+ }
+
+ public String getSvcData() {
+ return svcData;
+ }
+
+ public void setSvcData(String svcData) {
+ this.svcData = svcData;
+ }
+
+ public String getServiceStatusResponseCode() {
+ return serviceStatusResponseCode;
+ }
+
+ public void setServiceStatusResponseCode(String serviceStatusResponseCode) {
+ this.serviceStatusResponseCode = serviceStatusResponseCode;
+ }
+
+ public String getServiceStatusResponseMessage() {
+ return serviceStatusResponseMessage;
+ }
+
+ public void setServiceStatusResponseMessage(String serviceStatusResponseMessage) {
+ this.serviceStatusResponseMessage = serviceStatusResponseMessage;
+ }
+
+ public String getServiceStatusFinalIndicator() {
+ return serviceStatusFinalIndicator;
+ }
+
+ public void setServiceStatusFinalIndicator(String serviceStatusFinalIndicator) {
+ this.serviceStatusFinalIndicator = serviceStatusFinalIndicator;
+ }
+
+ public String getServiceStatusRequestStatus() {
+ return serviceStatusRequestStatus;
+ }
+
+ public void setServiceStatusRequestStatus(String serviceStatusRequestStatus) {
+ this.serviceStatusRequestStatus = serviceStatusRequestStatus;
+ }
+
+ public String getServiceStatusAction() {
+ return serviceStatusAction;
+ }
+
+ public void setServiceStatusAction(String serviceStatusAction) {
+ this.serviceStatusAction = serviceStatusAction;
+ }
+
+ public String getServiceStatusRpcName() {
+ return serviceStatusRpcName;
+ }
+
+ public void setServiceStatusRpcName(String serviceStatusRpcName) {
+ this.serviceStatusRpcName = serviceStatusRpcName;
+ }
+
+ public String getServiceStatusRpcAction() {
+ return serviceStatusRpcAction;
+ }
+
+ public void setServiceStatusRpcAction(String serviceStatusRpcAction) {
+ this.serviceStatusRpcAction = serviceStatusRpcAction;
+ }
+
+ public String getServiceStatusResponseTimestamp() {
+ return serviceStatusResponseTimestamp;
+ }
+
+ public void setServiceStatusResponseTimestamp(String serviceStatusResponseTimestamp) {
+ this.serviceStatusResponseTimestamp = serviceStatusResponseTimestamp;
+ }
+
+
+ public GenericResourceApiServicestatusServiceStatus getServiceStatus() {
+ GenericResourceApiServicestatusServiceStatus serviceStatus = new GenericResourceApiServicestatusServiceStatus();
+ serviceStatus.setAction(serviceStatusAction);
+ serviceStatus.setFinalIndicator(serviceStatusFinalIndicator);
+ serviceStatus.setRequestStatus(GenericResourceApiRequestStatusEnumeration.fromValue(serviceStatusRequestStatus));
+ serviceStatus.setResponseCode(serviceStatusResponseCode);
+ serviceStatus.setResponseMessage(serviceStatusResponseMessage);
+ serviceStatus.setResponseTimestamp(serviceStatusResponseTimestamp);
+
+ return(serviceStatus);
+ }
+
+ public void setServiceStatus(GenericResourceApiServicestatusServiceStatus serviceStatus) {
+ this.serviceStatusAction = serviceStatus.getAction();
+ this.serviceStatusFinalIndicator = serviceStatus.getFinalIndicator();
+ if (serviceStatus.getRequestStatus() != null) {
+ this.serviceStatusRequestStatus = serviceStatus.getRequestStatus().toString();
+ }
+
+ this.serviceStatusResponseCode = serviceStatus.getResponseCode();
+ this.serviceStatusResponseMessage = serviceStatus.getResponseMessage();
+ this.serviceStatusResponseTimestamp = serviceStatus.getResponseTimestamp();
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServicesRepository.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServicesRepository.java
new file mode 100644
index 0000000..15b2acc
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalServicesRepository.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SDNC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdnc.apps.ms.gra.data;
+
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+
+public interface OperationalServicesRepository extends CrudRepository<OperationalServices, Long> {
+
+ List<OperationalServices> findBySvcInstanceId(String svcInstanceId);
+ long deleteBySvcInstanceId(String svcInstanceId);
+
+}
+
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/PreloadDataKey.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/PreloadDataKey.java
new file mode 100644
index 0000000..34f010c
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/PreloadDataKey.java
@@ -0,0 +1,30 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import java.io.Serializable;
+
+public class PreloadDataKey implements Serializable {
+ private String preloadId = "";
+ private String preloadType = "";
+
+ public PreloadDataKey() {
+ this.preloadId = "";
+ this.preloadType = "";
+ }
+
+ public PreloadDataKey(String preloadId, String preloadType) {
+ this.preloadId = preloadId;
+ this.preloadType = preloadType;
+ }
+
+ @Override
+ public int hashCode() {
+ return preloadId.hashCode() + preloadType.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof PreloadDataKey &&
+ preloadId.equals(((PreloadDataKey)obj).preloadId) &&
+ preloadType.equals(((PreloadDataKey)obj).preloadType));
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VfModulesKey.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VfModulesKey.java
new file mode 100644
index 0000000..bf44cc9
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VfModulesKey.java
@@ -0,0 +1,34 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import java.io.Serializable;
+
+public class VfModulesKey implements Serializable {
+ private String svcInstanceId = "";
+ private String vnfId = "";
+ private String vfModuleId = "";
+
+ public VfModulesKey() {
+ this.svcInstanceId = "";
+ this.vnfId = "";
+ this.vfModuleId = "";
+ }
+
+ public VfModulesKey(String svcInstanceId, String vnfId, String vfModuleId) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ this.vfModuleId = vfModuleId;
+ }
+
+ @Override
+ public int hashCode() {
+ return svcInstanceId.hashCode() + vnfId.hashCode()+vfModuleId.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof VfModulesKey &&
+ svcInstanceId.equals(((VfModulesKey)obj).svcInstanceId) &&
+ vnfId.equals(((VfModulesKey)obj).vnfId) &&
+ vfModuleId.equals(((VfModulesKey)obj).vfModuleId));
+ }
+}
diff --git a/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VnfsKey.java b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VnfsKey.java
new file mode 100644
index 0000000..f19c95e
--- /dev/null
+++ b/ms/gra/gra-app/src/main/java/org/onap/sdnc/apps/ms/gra/data/VnfsKey.java
@@ -0,0 +1,30 @@
+package org.onap.sdnc.apps.ms.gra.data;
+
+import java.io.Serializable;
+
+public class VnfsKey implements Serializable {
+ private String svcInstanceId = "";
+ private String vnfId = "";
+
+ public VnfsKey() {
+ this.svcInstanceId = "";
+ this.vnfId = "";
+ }
+
+ public VnfsKey(String svcInstanceId, String vnfId) {
+ this.svcInstanceId = svcInstanceId;
+ this.vnfId = vnfId;
+ }
+
+ @Override
+ public int hashCode() {
+ return svcInstanceId.hashCode() + vnfId.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof VnfsKey &&
+ svcInstanceId.equals(((VnfsKey)obj).svcInstanceId) &&
+ vnfId.equals(((VnfsKey)obj).vnfId));
+ }
+}
diff --git a/ms/gra/gra-app/src/main/resources/application.properties b/ms/gra/gra-app/src/main/resources/application.properties
new file mode 100644
index 0000000..2be250b
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/application.properties
@@ -0,0 +1,24 @@
+
+springfox.documentation.swagger.v2.path=/api-docs
+server.servlet.context-path=/restconf
+server.port=8080
+spring.jackson.date-format=org.onap.sdnc.apps.ms.gra.swagger.RFC3339DateFormat
+spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
+logging.level.com.att=${LOG_LEVEL}
+logging.level.org.onap=${LOG_LEVEL}
+spring.datasource.url=jdbc:mariadb://${MYSQL_DB_HOST}:3306/${MYSQL_DATABASE}
+spring.datasource.hikari.data-source-properties.useUnicode=true
+spring.datasource.hikari.data-source-properties.characterEncoding=UTF-8
+spring.datasource.username=${MYSQL_USER}
+spring.datasource.password=${MYSQL_PASSWORD}
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.datasource.platform=mysql
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.default_schema=${MYSQL_DATABASE}
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+# spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+
+spring.jpa.database=mysql
diff --git a/ms/gra/gra-app/src/main/resources/db/changelog/db.changelog-master.yaml b/ms/gra/gra-app/src/main/resources/db/changelog/db.changelog-master.yaml
new file mode 100644
index 0000000..087c324
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/db/changelog/db.changelog-master.yaml
@@ -0,0 +1,546 @@
+databaseChangeLog:
+- changeSet:
+ id: 20210211-1
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ columns:
+ - column:
+ name: allottedResourceId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: allottedResourceStatusAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: arData
+ type: clob
+- changeSet:
+ id: 20210211-2
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS
+ columns:
+ - column:
+ name: configurationId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: pmcData
+ type: clob
+ - column:
+ name: portMirrorConfigurationStatusAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcName
+ type: varchar(255)
+- changeSet:
+ id: 20210211-3
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_SERVICES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_SERVICES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: serviceStatusAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: serviceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: svcData
+ type: clob
+- changeSet:
+ id: 20210211-4
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_PRELOAD_DATA
+ changes:
+ - createTable:
+ tableName: CONFIG_PRELOAD_DATA
+ columns:
+ - column:
+ name: preloadId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: preloadType
+ type: varchar(25)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: preloadData
+ type: clob
+- changeSet:
+ id: 20210211-5
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: NODE_TYPES
+ changes:
+ - createTable:
+ tableName: NODE_TYPES
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: nodetype
+ type: varchar(80)
+- changeSet:
+ id: 20210211-6
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ columns:
+ - column:
+ name: allottedResourceId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: allottedResourceStatusAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: arData
+ type: clob
+- changeSet:
+ id: 20210211-7
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS
+ columns:
+ - column:
+ name: configurationId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: pmcData
+ type: clob
+ - column:
+ name: portMirrorConfigurationStatusAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcName
+ type: varchar(255)
+- changeSet:
+ id: 20210211-8
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_SERVICES
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_SERVICES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: serviceStatusAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: serviceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: svcData
+ type: clob
+- changeSet:
+ id: 20210211-9
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_PRELOAD_DATA
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_PRELOAD_DATA
+ columns:
+ - column:
+ name: preloadId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: preloadType
+ type: varchar(25)
+ - column:
+ name: preloadData
+ type: clob
+- changeSet:
+ id: 20210211-10
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: SVC_LOGIC
+ changes:
+ - createTable:
+ tableName: SVC_LOGIC
+ columns:
+ - column:
+ name: module
+ type: varchar(80)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: rpc
+ type: varchar(80)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: version
+ type: varchar(40)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: mode
+ type: varchar(5)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: active
+ type: varchar(1)
+ constraints:
+ nullable: false
+ - column:
+ name: graph
+ type: longblob
+ - column:
+ name: modified_timestamp
+ type: timestamp
+ constraints:
+ nullable: false
+ defaultValueComputed: CURRENT_TIMESTAMP
+ - column:
+ name: md5sum
+ type: varchar(128)
+- changeSet:
+ id: 20210211-11
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: TEST_RESULT_CONFIG
+ changes:
+ - createTable:
+ tableName: TEST_RESULT_CONFIG
+ columns:
+ - column:
+ name: id
+ type: bigint
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: results
+ type: varchar(255)
+ - column:
+ name: testIdentifier
+ type: varchar(255)
+- changeSet:
+ id: 20210211-12
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: TEST_RESULT_OPERATIONAL
+ changes:
+ - createTable:
+ tableName: TEST_RESULT_OPERATIONAL
+ columns:
+ - column:
+ name: id
+ type: bigint
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: results
+ type: varchar(255)
+ - column:
+ name: testIdentifier
+ type: varchar(255)
+- changeSet:
+ id: 20210211-13
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: hibernate_sequence
+ changes:
+ - createTable:
+ tableName: hibernate_sequence
+ columns:
+ - column:
+ name: next_val
+ type: bigint
+- changeSet:
+ id: 20210216-1
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_NETWORKS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_NETWORKS
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: networkId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: networkData
+ type: clob
+- changeSet:
+ id: 20210216-2
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_VNFS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_VNFS
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfData
+ type: clob
+- changeSet:
+ id: 20210216-3
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_VF_MODULES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_VF_MODULES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vfModuleId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vfModuleData
+ type: clob
diff --git a/ms/gra/gra-app/src/main/resources/dblib.properties b/ms/gra/gra-app/src/main/resources/dblib.properties
new file mode 100644
index 0000000..568a9c4
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=dbhost
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user=${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password=${MYSQL_PASSWORD}
+org.onap.ccsdk.sli.jdbc.connection.name=dbhost
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/ms/gra/gra-app/src/main/resources/generic-resource-api-dg.properties b/ms/gra/gra-app/src/main/resources/generic-resource-api-dg.properties
new file mode 100644
index 0000000..3751142
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/generic-resource-api-dg.properties
@@ -0,0 +1,77 @@
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+controller.url=http://localhost:8080
+controller.user=${ODL_USER}
+controller.pwd=${ODL_PASSWORD}
+honeycomb.url=http://{honeycomb-instance-ip}:8183
+honeycomb.user=${HONEYCOMB_USER}
+honeycomb.pwd=${HONEYCOMB_PASSWORD}
+restapi.trustStoreFileName=/opt/onap/sdnc/config/truststoreONAPall.jks
+restapi.trustStorePassword=${TRUSTSTORE_PASSWORD}
+restapi.keyStoreFileName=/opt/onap/sdnc/config/org.onap.sdnc.p12
+restapi.keyStorePassword=${KEYSTORE_PASSWORD}
+restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=ccsdkapps
+naming.gen-name.pwd=ccsdkapps
+so.user=${SO_USER}
+so.pwd=${SO_PASSWORD}
+cds.url=http://cds-blueprints-processor-http:8080
+cds.user=${CDS_USER}
+cds.pwd=${CDS_PASSWORD}
+
+# Templates
+restapi.sz.templatefile=security-zone-allotted-resource.json
+restapi.cr.templatefile=contrail-route-allotted-resource.json
+restapi.brg.templatefile=brg-allotted-resource.json
+restapi.vpp.vxlan-tunnel.templatefile=vcpe-vxlan-tunnel.json
+restapi.vpp.bridge-domain.templatefile=vcpe-vpp-bridge-domain.json
+restapi.vpp.xconnect.templatefile=vcpe-l2-interface.json
+restapi.tx.templatefile=tunnelxconn-allotted-resource.json
+restapi.parentsvc.templatefile=parent-provided-allotted-resource.json
+restapi.network-ar.templatefile=network-provided-allotted-resources.json
+restapi.vnf-ar.templatefile=vnf-provided-allotted-resources.json
+restapi.services.templatefile=vcpe-services-service.json
+restapi.services.vnf.vfmodule.templatefile=vfmodule-vim-parameters.vgw.json
+restapi.sotn-attachment.templatefile=sotn-attachment-allotted-resource.json
+restapi.sdwan-attachment.templatefile=sdwan-attachment-allotted-resource.json
+restapi.oof-getpath.templatefile=oof-getpath.json
+restapi.naming.gen-name.templatefile=naming-ms-post-gen-name.json
+restapi.ss.pnf.templatefile=self-serve-pnf-assignments.json
+restapi.ss.vnf.templatefile=self-serve-vnf-assignments.json
+restapi.ss.vfmodule.templatefile=self-serve-vfmodule-assignments.json
+restapi.ss.mS.vlan.tag.assign.templatefile=self-serve-mS-vlan-tag-assignments.json
+restapi.ss.mS.vlan.tag.unassign.templatefile=self-serve-mS-vlan-tag-unassignments.json
+restapi.ss.mS.mac.address.assign.templatefile=self-serve-mS-mac-address-assign.json
+restapi.ss.mS.mac.address.unassign.templatefile=self-serve-mS-mac-address-unassign.json
+
+# Default cloud owner
+cloud-region.cloud-owner=CloudOwner
+
+# URLs
+restapi.cr-allottedresource=/restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/
+restapi.sz-allottedresource=/restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/{allotted-resource-id}/
+restapi.brg-allottedresource=/restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/{allotted-resource-id}/
+restapi.vpp-honeycomb=/restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}/
+restapi.tx-allottedresource=/restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/{allotted-resource-id}/
+restapi.vnf-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.network-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.pm-configuration=/restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+restapi.network=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/
+restapi.vnf=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/
+restapi.vnf-api.service-information=/restconf/config/VNF-API:vnfs/vnf-list/{vnf-id}/service-data/
+restapi.parent-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource/{allotted-resource-id}/
+restapi.network-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/network/{network-id}/network-data/network-provided-allotted-resources/
+restapi.services=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/
+restapi.service.vnf.vfmodule-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.connection-attachment-allottedresource=/restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/{allotted-resource-id}/
+restapi.naming.gen-name.service=/web/service/v1/genNetworkElementName
+restapi.ss-pnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/pnfs/pnf/{pnf-id}/
+restapi.ss-vnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+restapi.ss-vfmodule-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.ss-mS-vlan-tag-assign=/vlantagapi/v1/{action}
+restapi.ss-mS-mac-address-assign=/api/macaddress/v1/service/assign/
+restapi.ss-mS-mac-address-unassign=/api/macaddress/v1/service/unassign/
+restapi.preload-network=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/{network-name}/network/preload-data/preload-network-topology-information/
+restapi.preloadinformation=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/
+restapi.vf-module=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.vnf-assign=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
diff --git a/ms/gra/gra-app/src/main/resources/log4j2.properties b/ms/gra/gra-app/src/main/resources/log4j2.properties
new file mode 100644
index 0000000..9bc78a3
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/log4j2.properties
@@ -0,0 +1,163 @@
+ #-
+ # ============LICENSE_START=======================================================
+ # ONAP - CCSDK
+ # ================================================================================
+ # Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ # ================================================================================
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ # ============LICENSE_END=========================================================
+ #
+
+property.logDir = ${env:LOG_PATH:-./target}
+property.logLevel = ${env:LOG_LEVEL:-INFO}
+
+property.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{currentGraph} - %X{nodeId} | %m%n
+
+#default mdc values
+property.ServiceName = INTERNAL
+property.ErrorCode = 900
+property.ErrorDesc = UnknownError
+
+rootLogger.level = ${logLevel}
+rootLogger.appenderRef.AppFile.ref = AppFile
+rootLogger.appenderRef.Console.ref = Console
+rootLogger.appenderRef.DebugFile.ref = DebugFile
+rootLogger.appenderRef.ErrorFile.ref = ErrorFile
+rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter
+rootLogger.appenderRef.Console.filter.threshold.level = ${logLevel}
+
+appender.console.type = Console
+appender.console.name = Console
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = ${pattern}
+
+appender.app.type = RollingRandomAccessFile
+appender.app.name = AppFile
+appender.app.fileName = ${logDir}/app.log
+appender.app.filePattern = ${logDir}/app.log.%i
+appender.app.immediateFlush = true
+appender.app.append = true
+appender.app.layout.type = PatternLayout
+appender.app.layout.pattern = ${pattern}
+appender.app.policies.type = Policies
+appender.app.policies.size.type = SizeBasedTriggeringPolicy
+appender.app.policies.size.size = 10MB
+appender.app.strategy.type = DefaultRolloverStrategy
+appender.app.strategy.max = 100
+appender.app.strategy.fileIndex = min
+
+appender.debug.type = RollingRandomAccessFile
+appender.debug.name = DebugFile
+appender.debug.fileName = ${logDir}/debug.log
+appender.debug.filePattern = ${logDir}/debug.log.%i
+appender.debug.immediateFlush = true
+appender.debug.append = true
+appender.debug.layout.type = PatternLayout
+appender.debug.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|%-5.5p|%-32.32c{1}|%X{currentGraph} - %X{nodeId}|%m%n
+appender.debug.policies.type = Policies
+appender.debug.policies.size.type = SizeBasedTriggeringPolicy
+appender.debug.policies.size.size = 10MB
+appender.debug.strategy.type = DefaultRolloverStrategy
+appender.debug.strategy.max = 200
+appender.debug.strategy.fileIndex = min
+appender.error.filter.threshold.type = ThresholdFilter
+appender.error.filter.threshold.level = DEBUG
+
+appender.error.type = RollingRandomAccessFile
+appender.error.name = ErrorFile
+appender.error.fileName = ${logDir}/error.log
+appender.error.filePattern = ${logDir}/error.log.%i
+appender.error.immediateFlush = true
+appender.error.append = true
+appender.error.layout.type = PatternLayout
+appender.error.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|$${ctx:ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%p|$${ctx:ErrorCode}|$${ctx:ErrorDesc}|%m%n
+
+appender.error.policies.type = Policies
+appender.error.policies.size.type = SizeBasedTriggeringPolicy
+appender.error.policies.size.size = 10MB
+appender.error.strategy.type = DefaultRolloverStrategy
+appender.error.strategy.max = 100
+appender.error.strategy.fileIndex = min
+appender.error.filter.threshold.type = ThresholdFilter
+appender.error.filter.threshold.level = WARN
+
+appender.metric.type = RollingRandomAccessFile
+appender.metric.name = MetricFile
+appender.metric.fileName = ${logDir}/metric.log
+appender.metric.filePattern = ${logDir}/metric.log.%i
+appender.metric.immediateFlush = true
+appender.metric.append = true
+appender.metric.layout.type = PatternLayout
+appender.metric.layout.pattern=%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|%p|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|||%X{TargetElement}|%markerSimpleName|%X|%X{currentGraph} - %X{nodeId}||%m%n
+appender.metric.policies.type = Policies
+appender.metric.policies.size.type = SizeBasedTriggeringPolicy
+appender.metric.policies.size.size = 10MB
+appender.metric.strategy.type = DefaultRolloverStrategy
+appender.metric.strategy.max = 100
+appender.metric.strategy.fileIndex = min
+
+appender.audit.type = RollingRandomAccessFile
+appender.audit.name = AuditFile
+appender.audit.fileName = ${logDir}/audit.log
+appender.audit.filePattern = ${logDir}/audit.log.%i
+appender.audit.immediateFlush = true
+appender.audit.append = true
+appender.audit.layout.type = PatternLayout
+appender.audit.layout.pattern=%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|INFO|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|%X{AUDIT-Unused}|%X{AUDIT-ProcessKey}|%markerSimpleName|%X|||%m%n
+appender.audit.policies.type = Policies
+appender.audit.policies.size.type = SizeBasedTriggeringPolicy
+appender.audit.policies.size.size = 10MB
+appender.audit.strategy.type = DefaultRolloverStrategy
+appender.audit.strategy.max = 200
+appender.audit.strategy.fileIndex = min
+
+appender.rr.name = RequestResponseFile
+appender.rr.type = RollingRandomAccessFile
+appender.rr.fileName = ${logDir}/request-response.log
+appender.rr.filePattern = ${logDir}/request-response.log.%i
+appender.rr.immediateFlush = true
+appender.rr.append = true
+appender.rr.layout.type = PatternLayout
+appender.rr.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%X{PartnerName}|%m%n
+appender.rr.policies.type = Policies
+appender.rr.policies.size.type = SizeBasedTriggeringPolicy
+appender.rr.policies.size.size = 10MB
+appender.rr.strategy.type = DefaultRolloverStrategy
+appender.rr.strategy.max = 100
+appender.rr.strategy.fileIndex = min
+
+logger.metric.name = org.onap.ccsdk.sli.core.filters.metric
+logger.metric.level = INFO
+logger.metric.additivity = false
+logger.metric.appenderRef.MetricFile.ref = MetricFile
+
+logger.metric2.name = org.onap.logging.filter.base.AbstractMetricLogFilter
+logger.metric2.level = INFO
+logger.metric2.additivity = false
+logger.metric2.appenderRef.MetricFile.ref = MetricFile
+
+logger.audit.name = org.onap.logging.filter.base.AbstractAuditLogFilter
+logger.audit.level = INFO
+logger.audit.additivity = false
+logger.audit.appenderRef.AuditFile.ref = AuditFile
+
+logger.rr.name = org.onap.logging.filter.base.PayloadLoggingServletFilter
+logger.rr.level = INFO
+logger.rr.additivity = false
+logger.rr.appenderRef.RequestResponseFile.ref = RequestResponseFile
+
+logger.ccsdk.name = org.onap.ccsdk
+logger.ccsdk.level = DEBUG
+
+logger.onaplogging.name = org.onap.logging
+logger.onaplogging.level = DEBUG \ No newline at end of file
diff --git a/ms/gra/gra-app/src/main/resources/svclogic.properties b/ms/gra/gra-app/src/main/resources/svclogic.properties
new file mode 100644
index 0000000..8e49400
--- /dev/null
+++ b/ms/gra/gra-app/src/main/resources/svclogic.properties
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : CCSDK
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.dbtype = jdbc
+org.onap.ccsdk.sli.jdbc.url=jdbc:mariadb://dbhost:3306/${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database = ${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user = ${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password = ${MYSQL_PASSWORD}
+
+sliapi.serviceLogicDirectory=/opt/onap/sdnc/svclogic/graphs
diff --git a/ms/gra/gra-app/src/main/templates/api.mustache b/ms/gra/gra-app/src/main/templates/api.mustache
new file mode 100644
index 0000000..c28642c
--- /dev/null
+++ b/ms/gra/gra-app/src/main/templates/api.mustache
@@ -0,0 +1,136 @@
+/**
+* NOTE: This class is auto generated by the swagger code generator program ({{{generatorVersion}}}).
+* https://github.com/swagger-api/swagger-codegen
+* Do not edit the class manually.
+*/
+package {{package}};
+
+{{#imports}}import {{import}};
+{{/imports}}
+{{#jdk8-no-delegate}}
+ import com.fasterxml.jackson.databind.ObjectMapper;
+{{/jdk8-no-delegate}}
+import io.swagger.annotations.*;
+{{#jdk8-no-delegate}}
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.http.HttpStatus;
+{{/jdk8-no-delegate}}
+import org.springframework.http.ResponseEntity;
+{{#useBeanValidation}}
+ import org.springframework.validation.annotation.Validated;
+{{/useBeanValidation}}
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+import org.onap.ccsdk.apps.services.RestException;
+
+{{#jdk8-no-delegate}}
+ import javax.servlet.http.HttpServletRequest;
+{{/jdk8-no-delegate}}
+{{#useBeanValidation}}
+ import javax.validation.Valid;
+ import javax.validation.constraints.*;
+{{/useBeanValidation}}
+{{#jdk8-no-delegate}}
+ import java.io.IOException;
+{{/jdk8-no-delegate}}
+import java.util.List;
+{{#jdk8-no-delegate}}
+ import java.util.Optional;
+{{/jdk8-no-delegate}}
+{{^jdk8-no-delegate}}
+ {{#useOptional}}
+ import java.util.Optional;
+ {{/useOptional}}
+{{/jdk8-no-delegate}}
+{{#async}}
+ import java.util.concurrent.{{^jdk8}}Callable{{/jdk8}}{{#jdk8}}CompletableFuture{{/jdk8}};
+{{/async}}
+{{>generatedAnnotation}}
+@Api(value = "{{{baseName}}}", description = "the {{{baseName}}} API")
+{{#operations}}
+ public interface {{classname}} {
+ {{#jdk8}}
+
+ {{^isDelegate}}
+ Logger log = LoggerFactory.getLogger({{classname}}.class);
+
+ default Optional<ObjectMapper> getObjectMapper() {
+ return Optional.empty();
+ }
+
+ default Optional<HttpServletRequest> getRequest() {
+ return Optional.empty();
+ }
+
+ default Optional<String> getAcceptHeader() {
+ return getRequest().map(r -> r.getHeader("Accept"));
+ }
+ {{/isDelegate}}
+ {{#isDelegate}}
+ {{classname}}Delegate getDelegate();
+ {{/isDelegate}}
+ {{/jdk8}}
+ {{#operation}}
+
+ @ApiOperation(value = "{{{summary}}}", nickname = "{{{operationId}}}", notes = "{{{notes}}}"{{#returnBaseType}}, response = {{{returnBaseType}}}.class{{/returnBaseType}}{{#returnContainer}}, responseContainer = "{{{returnContainer}}}"{{/returnContainer}}{{#hasAuthMethods}}, authorizations = {
+ {{#authMethods}}@Authorization(value = "{{name}}"{{#isOAuth}}, scopes = {
+ {{#scopes}}@AuthorizationScope(scope = "{{scope}}", description = "{{description}}"){{#hasMore}},
+ {{/hasMore}}{{/scopes}}
+ }{{/isOAuth}}){{#hasMore}},
+ {{/hasMore}}{{/authMethods}}
+ }{{/hasAuthMethods}}, tags={ {{#vendorExtensions.x-tags}}"{{tag}}",{{/vendorExtensions.x-tags}} })
+ @ApiResponses(value = { {{#responses}}
+ @ApiResponse(code = {{{code}}}, message = "{{{message}}}"{{#baseType}}, response = {{{baseType}}}.class{{/baseType}}{{#containerType}}, responseContainer = "{{{containerType}}}"{{/containerType}}){{#hasMore}},{{/hasMore}}{{/responses}} })
+ {{#implicitHeaders}}
+ @ApiImplicitParams({
+ {{#headerParams}}
+ {{>implicitHeader}}
+ {{/headerParams}}
+ })
+ {{/implicitHeaders}}
+ @RequestMapping(value = "{{{path}}}",{{#singleContentTypes}}
+ produces = "{{{vendorExtensions.x-accepts}}}",
+ consumes = "{{{vendorExtensions.x-contentType}}}",{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}}
+ produces = { {{#produces}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}}{{#hasConsumes}}
+ consumes = { {{#consumes}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}}{{/singleContentTypes}}
+ method = RequestMethod.{{httpMethod}})
+ {{#jdk8}}default {{/jdk8}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{#delegate-method}}_{{/delegate-method}}{{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}},{{/hasMore}}{{/allParams}}){{^jdk8}};{{/jdk8}}{{#jdk8}} throws RestException {
+ {{#delegate-method}}
+ return {{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
+ }
+
+ // Override this method
+ default {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{{dataType}}}{{/isFile}}{{#isFile}}MultipartFile{{/isFile}} {{paramName}}{{#hasMore}},{{/hasMore}}{{/allParams}}) throws RestException {
+ {{/delegate-method}}
+ {{^isDelegate}}
+ if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
+ {{#examples}}
+ if (getAcceptHeader().get().contains("{{{contentType}}}")) {
+ try {
+ return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(getObjectMapper().get().readValue("{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{example}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{>exampleReturnTypes}}.class), HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
+ } catch (IOException e) {
+ log.error("Couldn't serialize response for content type {{{contentType}}}", e);
+ return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR){{#async}}){{/async}};
+ }
+ }
+ {{/examples}}
+ } else {
+ log.warn("ObjectMapper or HttpServletRequest not configured in default {{classname}} interface so no example is generated");
+ }
+ return {{#async}}CompletableFuture.completedFuture({{/async}}new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED){{#async}}){{/async}};
+ {{/isDelegate}}
+ {{#isDelegate}}
+ return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
+ {{/isDelegate}}
+ }{{/jdk8}}
+
+ {{/operation}}
+ }
+{{/operations}} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsIT.java b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsIT.java
new file mode 100644
index 0000000..7f00c6b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/GenericResourceMsIT.java
@@ -0,0 +1,31 @@
+package org.onap.sdnc.apps.ms.gra;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.junit.Test;
+
+public class GenericResourceMsIT {
+ @Test
+ public void healthcheckTest() throws ClientProtocolException, IOException {
+ String graPort = System.getenv("GRA_PORT");
+ if ((graPort == null) || (graPort.length() == 0)) {
+ graPort = "8080";
+ }
+
+ String testUrl = "http://localhost:" + graPort + "/restconf/operations/SLI-API:healthcheck/";
+
+ CloseableHttpClient client = HttpClients.createDefault();
+ HttpPost postCmd = new HttpPost(testUrl);
+ postCmd.addHeader("Content-Type", "application/json");
+
+ CloseableHttpResponse resp = client.execute(postCmd);
+ assertEquals(200, resp.getStatusLine().getStatusCode());
+ }
+}
diff --git a/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiPreloadControllerTest.java b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiPreloadControllerTest.java
new file mode 100644
index 0000000..95226f7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiPreloadControllerTest.java
@@ -0,0 +1,470 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadData;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.transaction.annotation.Transactional;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes={GenericResourceMsApp.class})
+@AutoConfigureMockMvc
+@Transactional
+public class ConfigApiPreloadControllerTest {
+
+ private final static String CONFIG_PRELOAD_URL = "/config/GENERIC-RESOURCE-API:preload-information/";
+ private final static String CONFIG_PRELOAD_LIST_URL = "/config/GENERIC-RESOURCE-API:preload-information/preload-list/";
+
+
+ @Autowired
+ private MockMvc mvc;
+
+ @Autowired
+ ConfigPreloadDataRepository configPreloadDataRepository;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ System.out.println("ConfigApiPreloadControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
+ System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
+ System.setProperty("serviceLogicDirectory", "src/test/resources/svclogic");
+ System.setProperty("sdnc.config.dir", "src/test/resources");
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationDelete() throws Exception {
+
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Load test data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+
+ assertEquals(1, configPreloadDataRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ // Test with no data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGet() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPreloadDataRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationPost() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/preload1-net-model-info.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationPut() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/preload1-net-model-info.json");
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPost() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/preload1-net-model-info.json");
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeDelete() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ // Test without data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGet() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPreloadDataRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePostNoData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/preload1-net-list-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePostExistingData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+ String content = readFileContent("src/test/resources/preload1-net-list-item.json");
+
+ // Test with existing data - should return 409
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePut() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
+ String goodContent = readFileContent("src/test/resources/preload1-net-list-item.json");
+
+ // Test with bad file content
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(badContent))
+ .andReturn();
+ assertEquals(400, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ // Test with no data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ // Test with existing data - should return 204
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataDelete() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ // Test without data
+ configPreloadDataRepository.deleteAll();
+ assertEquals(0, configPreloadDataRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataGet() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPreloadDataRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostNoData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostBadContent() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
+
+ // Load single entry with no preloadData
+ ConfigPreloadData preloadData = new ConfigPreloadData();
+ preloadData.setPreloadId("preload1");
+ preloadData.setPreloadType("network");
+ preloadData.setPreloadData(null);
+ configPreloadDataRepository.save(preloadData);
+
+ // Test with bad file content
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(badContent))
+ .andReturn();
+ assertEquals(400, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostGoodData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+ // Load single entry with no preloadData
+ ConfigPreloadData preloadData = new ConfigPreloadData();
+ preloadData.setPreloadId("preload1");
+ preloadData.setPreloadType("network");
+ preloadData.setPreloadData(null);
+ configPreloadDataRepository.save(preloadData);
+
+
+ // Test with no existing preload data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostExistingRecord() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+
+ // Test with existing preload dat
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutNoData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutBadContent() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
+
+ // Load single entry with no preloadData
+ ConfigPreloadData preloadData = new ConfigPreloadData();
+ preloadData.setPreloadId("preload1");
+ preloadData.setPreloadType("network");
+ preloadData.setPreloadData(null);
+ configPreloadDataRepository.save(preloadData);
+
+ // Test with bad file content
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(badContent))
+ .andReturn();
+ assertEquals(400, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutGoodData() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+ // Load single entry with no preloadData
+ ConfigPreloadData preloadData = new ConfigPreloadData();
+ preloadData.setPreloadId("preload1");
+ preloadData.setPreloadType("network");
+ preloadData.setPreloadData(null);
+ configPreloadDataRepository.save(preloadData);
+
+
+ // Test with no existing preload data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutExistingRecord() throws Exception {
+ // Clean up data
+ configPreloadDataRepository.deleteAll();
+
+ String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
+
+
+ // Test with data
+ loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
+ assert(configPreloadDataRepository.count() > 0);
+
+
+ // Test with existing preload dat
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+ private String readFileContent(String path) throws IOException {
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ return content;
+ }
+
+ private void deleteData(String url) throws Exception {
+ mvc.perform(MockMvcRequestBuilders.delete(url).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ }
+
+ private void loadData(String url, String path) throws Exception {
+ String content = readFileContent(path);
+ mvc.perform(MockMvcRequestBuilders.post(url).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+
+
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java
new file mode 100644
index 0000000..6a1b708
--- /dev/null
+++ b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java
@@ -0,0 +1,1168 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNull;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
+import org.onap.sdnc.apps.ms.gra.controllers.ServiceDataHelper.ServiceDataTransaction;
+import org.onap.sdnc.apps.ms.gra.data.*;
+import org.onap.sdnc.apps.ms.gra.swagger.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.transaction.annotation.Transactional;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes={GenericResourceMsApp.class})
+@AutoConfigureMockMvc
+@Transactional
+public class ConfigApiServicesControllerTest {
+
+ private final static String TEST_SVC_INSTANCE_ID = "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca";
+ private final static String TEST_VNF_ID = "fae319cc-68d6-496f-be1e-a09e133c71d4";
+ private final static String TEST_VF_MODULE_ID = "45841173-3729-4a1d-a811-a3bde399e22d";
+ private final static String CONFIG_SERVICES_URL = "/config/GENERIC-RESOURCE-API:services/";
+ private final static String CONFIG_SERVICES_SERVICE_URL = "/config/GENERIC-RESOURCE-API:services/service/";
+ private final static String CONFIG_CR_ARS_CR_AR_URL = "/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/";
+ private final static String CONFIG_PM_CONFIGS_PM_CONFIG_URL = "/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/";
+
+ @Autowired
+ private MockMvc mvc;
+
+ @Autowired
+ ConfigServicesRepository configServicesRepository;
+
+ @Autowired
+ ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ ConfigVfModulesRepository configVfModulesRepository;
+
+ @Autowired
+ ConfigContrailRouteAllottedResourcesRepository configContrailRouteAllottedResourcesRepository;
+
+ @Autowired
+ ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
+ @Autowired
+ ServiceDataHelper serviceDataHelper;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ System.out.println("ConfigApiServicesControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
+ System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
+ System.setProperty("serviceLogicDirectory", "src/test/resources/svclogic");
+ System.setProperty("sdnc.config.dir", "src/test/resources");
+
+ }
+
+ @Test
+ public void serviceDataLoadTest() throws Exception {
+ // Clear service data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Add service data - just service
+ loadServicesData("src/test/resources/service1-service.json");
+ assertEquals(1, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Clear service data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Add service data - service, vnf, vf-module
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(1, configVnfsRepository.count());
+ assertEquals(1, configVfModulesRepository.count());
+
+
+
+ }
+
+ @Test
+ public void VnfDataLoadTest() throws Exception {
+ // Clear service data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Add vnf data
+ loadVnfData("src/test/resources/vnf-data.json");
+ assertEquals(1, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(1, configVnfsRepository.count());
+ assertEquals(1, configVfModulesRepository.count());
+
+ // Clear service data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesDelete() throws Exception {
+
+ // Clean up data
+ clearServicesData();
+
+ // Load test data
+ loadServicesData( "src/test/resources/service1.json");
+
+ assertEquals(1, configServicesRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Test with no data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesPost() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ clearServicesData();
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ clearServicesData();
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdDelete() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdPost() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-serviceitem.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ clearServicesData();
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-serviceitem.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceDataDelete() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, services.size());
+ assertEquals(null, services.get(0).getSvcData());
+
+
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceDataGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceDataPost() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-servicedata.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Test with empty service data
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(TEST_SVC_INSTANCE_ID);
+ configServicesRepository.save(service);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> updatedService = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, updatedService.size());
+ assertNotEquals(null, updatedService.get(0).getSvcData());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceDataPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-servicedata.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Test with empty service data
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(TEST_SVC_INSTANCE_ID);
+ configServicesRepository.save(service);
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> updatedService = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, updatedService.size());
+ assertNotEquals(null, updatedService.get(0).getSvcData());
+
+ // Test with existing data - should return 204
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceStatusDelete() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, services.size());
+ assertEquals(null, services.get(0).getServiceStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceStatusGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceStatusPost() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-servicestatus.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Test with empty service data
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(TEST_SVC_INSTANCE_ID);
+ configServicesRepository.save(service);
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> updatedService = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, updatedService.size());
+ assertNotEquals(null, updatedService.get(0).getServiceStatus());
+
+ // Test with existing data - should return 409
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(409, mvcResult.getResponse().getStatus());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesGENERICRESOURCEAPIserviceServiceInstanceIdGENERICRESOURCEAPIserviceStatusPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-servicestatus.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Test with empty service status
+ ConfigServices service = new ConfigServices();
+ service.setSvcInstanceId(TEST_SVC_INSTANCE_ID);
+ configServicesRepository.save(service);
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ List<ConfigServices> updatedService = configServicesRepository.findBySvcInstanceId(TEST_SVC_INSTANCE_ID);
+ assertEquals(1, updatedService.size());
+ assertNotEquals(null, updatedService.get(0).getServiceStatus());
+
+ // Test with existing data - should return 204
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-status/").contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataServiceTopologyGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/service-topology/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/service-topology/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdDelete() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadVnfData("src/test/resources/vnf-data.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with bad data
+
+ clearServicesData();
+ createBadVnfData(true, true);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ clearServicesData();
+ createBadVnfData(false, false);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ clearServicesData();
+ createBadVnfData(false, true);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadVnfData("src/test/resources/vnf-data.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ clearServicesData();
+ createBadVnfData(false, false);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-data.json")))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configVnfsRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-data.json")))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configVnfsRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vnf-topology/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadVnfData("src/test/resources/vnf-data.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vnf-topology/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ clearServicesData();
+ createBadVnfData(false, false);
+ assertEquals(1, configServicesRepository.count());
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get("/config/GENERIC-RESOURCE-API:services/service/"+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vnf-topology/").contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfLevelOperStatusPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-level-oper-status/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-level-oper-status.json")))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-level-oper-status/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-level-oper-status.json")))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyOnapModelInformationPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/onap-model-information/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-onap-model-info.json")))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/onap-model-information/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-onap-model-info.json")))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyVnfResourceAssignmentsVnfNetworksPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-vnf-networks.json")))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-vnf-networks.json")))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyVnfResourceAssignmentsVnfNetworksVnfNetworkNetworkRolePut() throws Exception {
+ // Clean up data
+ clearServicesData();
+ assertEquals(0, configServicesRepository.count());
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/vnf-network/test-network-role/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-vnf-networks-network-role.json")))
+ .andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put("/config/GENERIC-RESOURCE-API:services/service/test-siid/service-data/vnfs/vnf/2a3bfc93-cd4c-4845-8919-434b2d999ada/vnf-data/vnf-topology/vnf-resource-assignments/vnf-networks/vnf-network/test-network-role/").contentType(MediaType.APPLICATION_JSON).content(readFileContent("src/test/resources/vnf-vnf-networks-network-role.json")))
+ .andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdPut() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/port-mirror-configuration-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+
+ // Test with existing port-mirror-configuration
+ // Load data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assertEquals(2, configPortMirrorConfigurationsRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(2, configPortMirrorConfigurationsRepository.count());
+
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdDelete() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPortMirrorConfigurationsRepository.count());
+
+ // Load data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assertEquals(1, configPortMirrorConfigurationsRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPortMirrorConfigurationsRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdGet() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assert(configPortMirrorConfigurationsRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad allotted-resource-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"dummy/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdConfigurationDataPortMirrorConfigurationTopologyGet() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assert(configPortMirrorConfigurationsRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with dummy allotted-resource-id
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"dummy/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdPut() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/allotted-resource-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_CR_ARS_CR_AR_URL+"ar2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+
+ // Test with existing allotted-resource
+ // Load data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assertEquals(1, configContrailRouteAllottedResourcesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_CR_ARS_CR_AR_URL+"ar2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(2, configContrailRouteAllottedResourcesRepository.count());
+
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdDelete() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configContrailRouteAllottedResourcesRepository.count());
+
+ // Load data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assertEquals(1, configContrailRouteAllottedResourcesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configContrailRouteAllottedResourcesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdGet() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assert(configContrailRouteAllottedResourcesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad allotted-resource-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"dummy/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdAllottedResourceDataContrailRouteTopologyGet() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assert(configContrailRouteAllottedResourcesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/allotted-resource-data/contrail-route-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with dummy allotted-resource-id
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"dummy/allotted-resource-data/contrail-route-topology/").contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/allotted-resource-data/contrail-route-topology/").contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdPut() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ String content = readFileContent("src/test/resources/service1-vfmodule-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/"+TEST_VF_MODULE_ID+"/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(400, mvcResult.getResponse().getStatus());
+
+ // Test with existing service and vnf
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/"+TEST_VF_MODULE_ID+"/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ clearServicesData();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdDelete() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(400, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad vf-module-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/dummyid/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdVfModuleDataVfModuleTopologyGet() throws Exception {
+ // Clean up data
+ clearServicesData();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with existing service and vnf but with dummy vf-module-id in input
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/dummy/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ clearServicesData();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+TEST_SVC_INSTANCE_ID+"/service-data/vnfs/vnf/"+TEST_VNF_ID+"/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ private String readFileContent(String path) throws IOException {
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ return content;
+ }
+
+ private void deleteData(String url) throws Exception {
+ mvc.perform(MockMvcRequestBuilders.delete(url).contentType(MediaType.APPLICATION_JSON).content(""))
+ .andReturn();
+ }
+
+ private void clearServicesData() {
+ configServicesRepository.deleteAll();
+ configNetworksRepository.deleteAll();
+ configVnfsRepository.deleteAll();
+ configVfModulesRepository.deleteAll();
+ }
+
+ private void loadServicesData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServiceModelInfrastructure services = objectMapper.readValue(content, GenericResourceApiServiceModelInfrastructure.class);
+
+ for (GenericResourceApiServicemodelinfrastructureService service : services.getService()) {
+ ConfigServices newService = new ConfigServices();
+ newService.setSvcInstanceId(service.getServiceInstanceId());
+ newService.setServiceStatus(service.getServiceStatus());
+ serviceDataHelper.saveService(newService, service.getServiceData());
+ }
+ }
+
+ private void loadServicesData(String path, ServiceDataTransaction transaction) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServiceModelInfrastructure services = objectMapper.readValue(content, GenericResourceApiServiceModelInfrastructure.class);
+
+ for (GenericResourceApiServicemodelinfrastructureService service : services.getService()) {
+ ConfigServices newService = new ConfigServices();
+ newService.setSvcInstanceId(service.getServiceInstanceId());
+ newService.setServiceStatus(service.getServiceStatus());
+ serviceDataHelper.saveService(newService, service.getServiceData(), transaction);
+ }
+ transaction.commit();
+ }
+
+ private void loadVnfData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServicedataServicedataVnfsVnf vnfData = objectMapper.readValue(content, GenericResourceApiServicedataServicedataVnfsVnf.class);
+ String svcInstanceId = TEST_SVC_INSTANCE_ID;
+ ConfigServices newService = new ConfigServices(svcInstanceId);
+ configServicesRepository.save(newService);
+ serviceDataHelper.saveVnf(svcInstanceId, vnfData, null);
+ }
+
+ private void loadVnfData(String path, ServiceDataTransaction transaction) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServicedataServicedataVnfsVnf vnfData = objectMapper.readValue(content, GenericResourceApiServicedataServicedataVnfsVnf.class);
+ String svcInstanceId = TEST_SVC_INSTANCE_ID;
+ ConfigServices newService = new ConfigServices(svcInstanceId);
+ configServicesRepository.save(newService);
+ serviceDataHelper.saveVnf(svcInstanceId, vnfData, transaction);
+ if (transaction != null) {
+ transaction.commit();
+ }
+ }
+
+ private void createBadVnfData(boolean useNullSvc, boolean useNullVnfs) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ ConfigServices newService = new ConfigServices();
+ GenericResourceApiServicedataServiceData svcData = useNullSvc ? null : new GenericResourceApiServicedataServiceData();
+ GenericResourceApiServicedataServicedataVnfs vnfs = useNullVnfs ? null : new GenericResourceApiServicedataServicedataVnfs();
+
+ // Overrides useNullSvc
+ if(!useNullVnfs) {
+ svcData = new GenericResourceApiServicedataServiceData();
+ vnfs.setVnf(new ArrayList<>());
+ svcData.setVnfs(vnfs);
+ }
+
+ newService.setSvcInstanceId("test-siid");
+ newService.setSvcData(objectMapper.writeValueAsString(svcData));
+ configServicesRepository.save(newService);
+ }
+
+ private void loadContrailRouteAllottedResourceData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiContrailRouteAllottedResources allottedResources = objectMapper.readValue(content, GenericResourceApiContrailRouteAllottedResources.class);
+
+ for (GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource allottedResource : allottedResources.getContrailRouteAllottedResource()) {
+ ConfigContrailRouteAllottedResources newContrailRouteAllottedResource = new ConfigContrailRouteAllottedResources();
+ newContrailRouteAllottedResource.setAllottedResourceId(allottedResource.getAllottedResourceId());
+ newContrailRouteAllottedResource.setArData(objectMapper.writeValueAsString(allottedResource.getAllottedResourceData()));
+ newContrailRouteAllottedResource.setAllottedResourceStatus(allottedResource.getAllottedResourceStatus());
+ configContrailRouteAllottedResourcesRepository.save(newContrailRouteAllottedResource);
+ }
+ }
+
+ private void loadPortMirrorConfigurationData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiPortMirrorConfigurations pmConfigurations = objectMapper.readValue(content, GenericResourceApiPortMirrorConfigurations.class);
+
+ for (GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration pmConfig : pmConfigurations.getPortMirrorConfiguration()) {
+ ConfigPortMirrorConfigurations newPmConfig = new ConfigPortMirrorConfigurations();
+ newPmConfig.setConfigureationId(pmConfig.getConfigurationId());
+ newPmConfig.setPmcData(objectMapper.writeValueAsString(pmConfig.getConfigurationData()));
+ newPmConfig.setPortMirrorConfigurationStatus(pmConfig.getConfigurationStatus());
+ configPortMirrorConfigurationsRepository.save(newPmConfig);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
new file mode 100644
index 0000000..0b09f1b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
@@ -0,0 +1,368 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
+import org.onap.sdnc.apps.ms.gra.data.*;
+import org.onap.sdnc.apps.ms.gra.swagger.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.transaction.annotation.Transactional;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes={GenericResourceMsApp.class})
+@AutoConfigureMockMvc
+@Transactional
+public class OperationsApiControllerTest {
+ private final static String TEST_SVC_INSTANCE_ID = "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca";
+ private final static String TEST_VNF_ID = "fae319cc-68d6-496f-be1e-a09e133c71d4";
+ private final static String TEST_VF_MODULE_ID = "45841173-3729-4a1d-a811-a3bde399e22d";
+ private final static String PRELOAD_NETWORK_URL = "/operations/GENERIC-RESOURCE-API:preload-network-topology-operation/";
+ private final static String PRELOAD_VFMODULE_URL = "/operations/GENERIC-RESOURCE-API:preload-vf-module-topology-operation/";
+ private final static String SERVICE_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:service-topology-operation/";
+ private final static String NETWORK_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:network-topology-operation/";
+ private final static String VNF_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:vnf-topology-operation/";
+ private final static String VF_MODULE_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/";
+ private final static String PORT_MIRROR_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:port-mirror-topology-operation/";
+ private final static String VNF_GET_RESOURCE_REQUEST_URL = "/operations/GENERIC-RESOURCE-API:vnf-get-resource-request/";
+ private final static String POLICY_UPDATE_NOTIFY_URL = "/operations/GENERIC-RESOURCE-API:policy-update-notify-operation/";
+
+
+ @Autowired
+ private MockMvc mvc;
+
+ @Autowired
+ ConfigPreloadDataRepository configPreloadDataRepository;
+
+ @Autowired
+ ConfigServicesRepository configServicesRepository;
+
+ @Autowired
+ ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ ConfigVfModulesRepository configVfModulesRepository;
+
+ @Autowired
+ OperationalServicesRepository operationalServicesRepository;
+
+ @Autowired
+ OperationsApiController operationsApiController;
+
+ @Autowired
+ ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
+ @Autowired
+ OperationalPortMirrorConfigurationsRepository operationalPortMirrorConfigurationsRepository;
+
+ @Autowired
+ ServiceDataHelper serviceDataHelper;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ System.out.println("OperationsApiControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
+ System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
+ System.setProperty("serviceLogicDirectory", "src/test/resources/svclogic");
+ System.setProperty("sdnc.config.dir", "src/test/resources");
+
+ }
+
+
+ @Test
+ public void operationsGENERICRESOURCEAPIpreloadNetworkTopologyOperationPost() throws Exception {
+
+ // Remove any existing preload data
+ configPreloadDataRepository.deleteAll();
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_NETWORK_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(403, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/preload1-rpc-network.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_NETWORK_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIpreloadVfModuleTopologyOperationPost() throws Exception {
+ // Remove any existing preload data
+ configPreloadDataRepository.deleteAll();
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-network.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_VFMODULE_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(403, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPreloadDataRepository.count());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_VFMODULE_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(1, configPreloadDataRepository.count());
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIserviceTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ clearServicesData();
+ operationalServicesRepository.deleteAll();
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(SERVICE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, operationalServicesRepository.count());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/service-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(SERVICE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+ assertEquals(0, operationalServicesRepository.count());
+ }
+
+ @Test
+ public void serviceTopologyOperationAsync() throws Exception {
+ clearServicesData();
+ GenericResourceApiVnfOperationInformationBodyparam inputParam = operationsApiController.getObjectMapper().get().readValue(readFileContent("src/test/resources/vnf-assign-rpc.json"), GenericResourceApiVnfOperationInformationBodyparam.class);
+ operationsApiController.processAsyncVnfTopologyOperation("vnf-topology-operation",inputParam);
+
+ loadVnfData("src/test/resources/vnf-data.json");
+ inputParam.getInput().getServiceInformation().setServiceInstanceId("98f189dd-2971-46f5-b4f1-1a9a323f39a4");
+ operationsApiController.processAsyncVnfTopologyOperation("vnf-topology-operation",inputParam);
+ clearServicesData();
+ }
+
+ private void loadVnfData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServicedataServiceData svcData = new GenericResourceApiServicedataServiceData();
+ GenericResourceApiServicedataServicedataVnfsVnf vnfData = objectMapper.readValue(content, GenericResourceApiServicedataServicedataVnfsVnf.class);
+ svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
+ svcData.getVnfs().setVnf(new ArrayList<>());
+ svcData.getVnfs().addVnfItem(vnfData);
+ ConfigServices newService = new ConfigServices();
+ newService.setSvcData(objectMapper.writeValueAsString(svcData));
+ newService.setSvcInstanceId("98f189dd-2971-46f5-b4f1-1a9a323f39a4");
+ configServicesRepository.save(newService);
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPInetworkTopologyOperationAssignPost() throws Exception {
+ System.out.println("OperationsApiControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
+ System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
+ System.setProperty("serviceLogicDirectory", "src/test/resources/svclogic");
+ System.setProperty("sdnc.config.dir", "src/test/resources");
+ // Remove any existing service data
+ clearServicesData();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service1.json");
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(NETWORK_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/network-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(NETWORK_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIvnfTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ clearServicesData();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service1-service.json");
+
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/vnf-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIvfModuleTopologyOperationPost() throws Exception {
+
+ // Remove any existing service data
+ clearServicesData();
+ operationalServicesRepository.deleteAll();
+ assertEquals(0, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(0, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Load services data
+ loadServicesData("src/test/resources/service1-service_vnf.json");
+ assertEquals(1, configServicesRepository.count());
+ assertEquals(0, configNetworksRepository.count());
+ assertEquals(1, configVnfsRepository.count());
+ assertEquals(0, configVfModulesRepository.count());
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VF_MODULE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/vf-module-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(VF_MODULE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Delete content
+ content = readFileContent("src/test/resources/vf-module-unassign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(VF_MODULE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+
+ @Test
+ public void operationsGENERICRESOURCEAPIportMirrorConfigurationTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ operationalPortMirrorConfigurationsRepository.deleteAll();
+
+ // Load port-mirror-configuration data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+
+ // Load services data
+ loadServicesData("src/test/resources/service1.json");
+
+ // Add invalid content for request input
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PORT_MIRROR_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/port-mirror-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(PORT_MIRROR_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIvnfGetResourceRequestPost() throws Exception {
+
+ // Remove any existing service data
+ clearServicesData();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service9.json");
+
+ // Add valid content
+ String content = readFileContent("src/test/resources/vnf-get-resource-request-rpc.json");
+ String expected = readFileContent("src/test/resources/vnf-get-resource-request-expected.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_GET_RESOURCE_REQUEST_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(expected, mvcResult.getResponse().getContentAsString());
+
+ }
+ @Test
+ public void operationsGENERICRESOURCEAPIpolicyUpdateNotifyOperationPost() throws Exception {
+
+ // Add valid content
+ String content = readFileContent("src/test/resources/policy-update-notify-rpc.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(POLICY_UPDATE_NOTIFY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ }
+
+
+ private void loadServicesData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiServiceModelInfrastructure services = objectMapper.readValue(content, GenericResourceApiServiceModelInfrastructure.class);
+
+ for (GenericResourceApiServicemodelinfrastructureService service : services.getService()) {
+ ConfigServices newService = new ConfigServices();
+ newService.setSvcInstanceId(service.getServiceInstanceId());
+ newService.setServiceStatus(service.getServiceStatus());
+ serviceDataHelper.saveService(newService, service.getServiceData());
+ }
+ }
+
+ private void loadPortMirrorConfigurationData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiPortMirrorConfigurations pmConfigurations = objectMapper.readValue(content, GenericResourceApiPortMirrorConfigurations.class);
+
+ for (GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration pmConfig : pmConfigurations.getPortMirrorConfiguration()) {
+ ConfigPortMirrorConfigurations newPmConfig = new ConfigPortMirrorConfigurations();
+ newPmConfig.setConfigureationId(pmConfig.getConfigurationId());
+ newPmConfig.setPmcData(objectMapper.writeValueAsString(pmConfig.getConfigurationData()));
+ newPmConfig.setPortMirrorConfigurationStatus(pmConfig.getConfigurationStatus());
+ configPortMirrorConfigurationsRepository.save(newPmConfig);
+ }
+ }
+
+ private void clearServicesData() {
+ configServicesRepository.deleteAll();
+ configNetworksRepository.deleteAll();
+ configVnfsRepository.deleteAll();
+ configVfModulesRepository.deleteAll();
+ }
+
+ private String readFileContent(String path) throws IOException {
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ return content;
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/GR_API.http b/ms/gra/gra-app/src/test/resources/GR_API.http
new file mode 100644
index 0000000..5c5d827
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/GR_API.http
@@ -0,0 +1,1341 @@
+### preload data (network)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:preload-network-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "vUSP-23804-T-01-wnv1a_int_csdb_net_1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ },
+ "request-information": {
+ "notification-url": "http://dev.null.com",
+ "order-number": "123456",
+ "order-version": "2010.06",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "REQ123456",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http://dev.null.com",
+ "svc-request-id": "SVCREQ123456"
+ }
+ }
+}
+
+### preload data (vf-module)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:preload-vf-module-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "preload-vf-module-topology-information": {
+ "vf-module-topology": {
+ "aic-clli": "AIC12345",
+ "aic-cloud-region": "rdm61a",
+ "cloud-owner": "att-nc",
+ "onap-model-information": {
+ "model-customization-uuid": "123123123",
+ "model-invariant-uuid": "123123123",
+ "model-name": "frankfurt",
+ "model-uuid": "121212",
+ "model-version": "frankfurt"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "tenant",
+ "vf-module-assignments": {
+ "dhcp-subnet-assignments": {
+ "dhcp-subnet-assignment": [
+ {
+ "ip-version": "ipv4",
+ "network-role": "netrole",
+ "neutron-subnet-id": "sub1"
+ }
+ ]
+ },
+ "vf-module-status": "Active",
+ "vlan-vnfc-instance-groups": {
+ "vlan-vnfc-instance-group": [
+ {
+ "instance-group-function": "function",
+ "instance-group-id": "groupid",
+ "vnf-id": "123",
+ "vnfcs": {
+ "vnfc": [
+ {
+ "vnfc-name": "vnc1",
+ "vnic-groups": {
+ "vnic-group": [
+ {
+ "network-instance-group-function": "func1",
+ "vlan-assignment-policy-name": "policy1",
+ "vlan-common-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "10.1.2.1"
+ }
+ },
+ "vlan-tag-index-next": 0,
+ "vlan-vnics": {
+ "vlan-vnic": [
+ {
+ "vnic-port-id": "8080",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.2.1"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.1.2.2"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "role1",
+ "network-role-tag": "tag1",
+ "neutron-network-id": "net1",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnic-interface-role": "vnicrole1"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vms": {
+ "vm": [
+ {
+ "nfc-naming-code": "name1",
+ "onap-model-information": {
+ "model-customization-uuid": "456456456",
+ "model-invariant-uuid": "456456456",
+ "model-name": "model2",
+ "model-uuid": "678678678",
+ "model-version": "version2"
+ },
+ "vm-count": 0,
+ "vm-names": {
+ "vm-name": [
+ "vm1"
+ ],
+ "vnfc-names": [
+ {
+ "vnfc-name": "vnc1",
+ "vnfc-networks": {
+ "vnfc-network-data": [
+ {
+ "connection-point": {
+ "connection-point-id": "conn1",
+ "port-id": "8181",
+ "vlan-data": [
+ {
+ "vlan-role": "role2",
+ "vlan-tag-description": "tag2",
+ "vlan-tag-id": "1",
+ "vlan-uuid": "78789789"
+ }
+ ]
+ },
+ "vnfc-network-role": "role3",
+ "vnfc-ports": {
+ "vnfc-port": [
+ {
+ "common-sub-interface-role": "subrole1",
+ "vnfc-port-id": "8787",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.3.10"
+ ]
+ },
+ "network-id": "net2",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.1.3.4"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "netrole4",
+ "network-role-tag": "tag5",
+ "neutron-network-id": "nnet5",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnfc-subnet": [
+ {
+ "vnfc-ip-assignments": [
+ {
+ "vnfc-address-family": "ipv4",
+ "vnfc-subnet-dhcp": "Y",
+ "vnfc-subnet-ip": [
+ {
+ "ip-type": "FIXED",
+ "vnfc-client-key": "string",
+ "vnfc-ip-address": "10.1.7.1"
+ }
+ ],
+ "vnfc-subnet-ip-count": 0
+ }
+ ],
+ "vnfc-subnet-role": "string"
+ }
+ ],
+ "vnfc-type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vm-networks": {
+ "vm-network": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.9.1"
+ ]
+ },
+ "interface-route-prefixes": {
+ "interface-route-prefix": [
+ "10"
+ ]
+ },
+ "is-trunked": true,
+ "mac-addresses": {
+ "mac-address": [
+ "cafe:beef"
+ ]
+ },
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.2.3.10"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-role": "netrole9",
+ "network-role-tag": "tag9",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "net9",
+ "network-role": "netrole9",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "vlan0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1",
+ "sriov-parameters": {
+ "application-tags": {
+ "c-tags": {
+ "c-tag": [
+ "ctag1"
+ ]
+ },
+ "s-tags": {
+ "s-tag": [
+ "stag1"
+ ]
+ }
+ },
+ "heat-vlan-filters": {
+ "heat-vlan-filter": [
+ "10"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "vm-type": "vmtype1",
+ "vm-type-tag": "vmtag1"
+ }
+ ]
+ }
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "vfmodname",
+ "resource-resolution-data": {
+ "capability-name": "cap1",
+ "payload": "payload1",
+ "resource-key": [
+ {
+ "name": "key1",
+ "value": "value1"
+ }
+ ],
+ "status": "active"
+ },
+ "value": "value1"
+ }
+ ]
+ },
+ "vf-module-topology-identifier": {
+ "vf-module-id": "vfmodule1",
+ "vf-module-name": "vfmodule1",
+ "vf-module-type": "router"
+ }
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "zone1"
+ ],
+ "max-count": 0
+ },
+ "vnf-networks": {
+ "vnf-network": [
+ {
+ "contrail-network-fqdn": "skynet.net",
+ "is-trunked": true,
+ "network-id": "net1",
+ "network-name": "net1",
+ "network-role": "netrole1",
+ "neutron-id": "neutron1",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "net2",
+ "network-role": "netrole2",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "vlan2"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg2",
+ "subnets-data": {
+ "subnet-data": [
+ {
+ "cidr-mask": "255.255",
+ "dhcp-enabled": "Y",
+ "gateway-address": "10.1.2.254",
+ "ip-version": "ipv4",
+ "network-start-address": "10.1.2.1",
+ "sdnc-subnet-id": "sub1",
+ "subnet-id": "sub1",
+ "subnet-name": "sub1",
+ "subnet-role": "subrole1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnf-status": "active"
+ },
+ "vnf-topology-identifier-structure": {
+ "nf-code": "code1",
+ "nf-function": "function1",
+ "nf-role": "role1",
+ "nf-type": "type1",
+ "vnf-id": "preload1",
+ "vnf-name": "vnf1",
+ "vnf-type": "vnftype1"
+ }
+ },
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "order123",
+ "order-version": "1",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "req001",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq001"
+ }
+ }
+}
+
+### service-topology (assign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:service-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateServiceInstance",
+ "request-id": "{{$guid}}",
+ "source": "simulator"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svc-{{$guid}}"
+ },
+ "service-information": {
+ "global-customer-id": "{{$guid}}",
+ "onap-model-information": {
+ "model-customization-uuid": "12341234",
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ }
+ }
+ }
+
+
+### service-topology (changeassign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:service-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateServiceInstance",
+ "request-id": "{{$guid}}",
+ "source": "simulator"
+ },
+ "sdnc-request-header": {
+ "svc-action": "changeassign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svc-{{$guid}}"
+ },
+ "service-information": {
+ "global-customer-id": "{{$guid}}",
+ "onap-model-information": {
+ "model-customization-uuid": "12341234",
+ "model-invariant-uuid": "12341234",
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-version": "1933"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ }
+ }
+ }
+
+### service-topology (deactivate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:service-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "DeleteServiceInstance",
+ "request-id": "{{$guid}}",
+ "source": "simulator"
+ },
+ "sdnc-request-header": {
+ "svc-action": "deactivate",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svc-{{$guid}}"
+ },
+ "service-information": {
+ "global-customer-id": "{{$guid}}",
+ "onap-model-information": {
+ "model-customization-uuid": "12341234",
+ "model-invariant-uuid": "12341234",
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-version": "1933"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ }
+ }
+ }
+
+### service-topology (delete)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:service-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "DeleteServiceInstance",
+ "request-id": "{{$guid}}",
+ "source": "simulator"
+ },
+ "sdnc-request-header": {
+ "svc-action": "delete",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svc-{{$guid}}"
+ },
+ "service-information": {
+ "global-customer-id": "{{$guid}}",
+ "onap-model-information": {
+ "model-customization-uuid": "12341234",
+ "model-invariant-uuid": "12341234",
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-version": "1933"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ }
+ }
+ }
+
+
+### network-topology (assign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:network-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "network-information": {
+ "onap-model-information": {
+ "model-name": "VcpesvcVbng0412a.bng_mux",
+ "model-version": "1.0",
+ "model-customization-uuid": "b0cf3385-a390-488c-b6a0-d879fb4a4825",
+ "model-uuid": "9b7c1cbe-ddcd-458c-8792-d76391419b72",
+ "model-invariant-uuid": "206d5e6c-4cba-4c14-b942-5d946c881869"
+ },
+ "network-id": "2e723205-7f96-49a9-bd60-24168fbd9f07"
+ },
+ "network-request-input": {
+ "aic-cloud-region": "wnv1a",
+ "cloud-owner": "att-nc",
+ "tenant": "1795554216e946af8a3c788f195eb813",
+ "network-name": "vUSP-23804-T-01-wnv1a_int_csdb_net_1"
+ },
+ "request-information": {
+ "request-action": "CreateNetworkInstance",
+ "source": "simulator",
+ "request-id": "{{$guid}}"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "svc-{{$guid}}",
+ "svc-action": "assign"
+ },
+ "service-information": {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ }
+ }
+}
+
+
+### network-topology (activate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:network-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "network-information": {
+ "onap-model-information": {
+ "model-name": "VcpesvcVbng0412a.bng_mux",
+ "model-version": "1.0",
+ "model-customization-uuid": "b0cf3385-a390-488c-b6a0-d879fb4a4825",
+ "model-uuid": "9b7c1cbe-ddcd-458c-8792-d76391419b72",
+ "model-invariant-uuid": "206d5e6c-4cba-4c14-b942-5d946c881869"
+ },
+ "network-technology": "",
+ "network-id": "2e723205-7f96-49a9-bd60-24168fbd9f07",
+ "network-type": ""
+ },
+ "network-request-input": {
+ "aic-cloud-region": "wnv1a",
+ "cloud-owner": "att-nc",
+ "tenant": "1795554216e946af8a3c788f195eb813",
+ "network-name": "vUSP-23804-T-01-wnv1a_int_ccfx_net_1"
+ },
+ "request-information": {
+ "request-action": "CreateNetworkInstance",
+ "source": "simulator",
+ "request-id": "{{$guid}}"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "svc-{{$guid}}",
+ "svc-action": "activate"
+ },
+ "service-information": {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ }
+ }
+}
+
+### network-topology (deactivate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:network-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "network-information": {
+ "onap-model-information": {
+ "model-name": "VcpesvcVbng0412a.bng_mux",
+ "model-version": "1.0",
+ "model-customization-uuid": "b0cf3385-a390-488c-b6a0-d879fb4a4825",
+ "model-uuid": "9b7c1cbe-ddcd-458c-8792-d76391419b72",
+ "model-invariant-uuid": "206d5e6c-4cba-4c14-b942-5d946c881869"
+ },
+ "network-technology": "",
+ "network-id": "2e723205-7f96-49a9-bd60-24168fbd9f07",
+ "network-type": ""
+ },
+ "network-request-input": {
+ "aic-cloud-region": "wnv1a",
+ "cloud-owner": "att-nc",
+ "tenant": "1795554216e946af8a3c788f195eb813",
+ "network-name": "vUSP-23804-T-01-wnv1a_int_ccfx_net_1"
+ },
+ "request-information": {
+ "request-action": "DeleteNetworkInstance",
+ "source": "simulator",
+ "request-id": "{{$guid}}"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "svc-{{$guid}}",
+ "svc-action": "deactivate"
+ },
+ "service-information": {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ }
+ }
+}
+
+### network-topology (unassign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:network-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input": {
+ "network-information": {
+ "onap-model-information": {
+ "model-name": "VcpesvcVbng0412a.bng_mux",
+ "model-version": "1.0",
+ "model-customization-uuid": "b0cf3385-a390-488c-b6a0-d879fb4a4825",
+ "model-uuid": "9b7c1cbe-ddcd-458c-8792-d76391419b72",
+ "model-invariant-uuid": "206d5e6c-4cba-4c14-b942-5d946c881869"
+ },
+ "network-technology": "",
+ "network-id": "2e723205-7f96-49a9-bd60-24168fbd9f07",
+ "network-type": ""
+ },
+ "network-request-input": {
+ "aic-cloud-region": "wnv1a",
+ "cloud-owner": "att-nc",
+ "tenant": "1795554216e946af8a3c788f195eb813",
+ "network-name": "vUSP-23804-T-01-wnv1a_int_ccfx_net_1"
+ },
+ "request-information": {
+ "request-action": "DeleteNetworkInstance",
+ "source": "simulator",
+ "request-id": "{{$guid}}"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "svc-{{$guid}}",
+ "svc-action": "unassign"
+ },
+ "service-information": {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ }
+ }
+}
+
+### vnf-topology (assign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vnf-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVnfInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "assign"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vnf-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vnf-network-instance-group-ids" : [ ],
+ "vnf-input-parameters" : { },
+ "vnf-name" : "zrdm61asmsf01"
+ }
+ }
+}
+
+### vnf-topology (activate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vnf-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVnfInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "activate"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vnf-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vnf-network-instance-group-ids" : [ ],
+ "vnf-input-parameters" : { },
+ "vnf-name" : "zrdm61asmsf01"
+ }
+ }
+}
+
+### vnf-topology (deactivate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vnf-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "DeleteVnfInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "deactivate"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vnf-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vnf-network-instance-group-ids" : [ ],
+ "vnf-input-parameters" : { },
+ "vnf-name" : "zrdm61asmsf01"
+ }
+ }
+}
+
+### vnf-topology (unassign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vnf-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "DeleteVnfInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "unassign"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vnf-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vnf-network-instance-group-ids" : [ ],
+ "vnf-input-parameters" : { },
+ "vnf-name" : "zrdm61asmsf01"
+ }
+ }
+}
+
+### vf-module-topology (assign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVfModuleInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "assign"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid" : "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid" : "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "vfmodule1",
+ "vf-module-input-parameters" : { }
+ }
+ }
+}
+
+### vf-module-topology (activate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVfModuleInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "activate"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid" : "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid" : "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "vfmodule1",
+ "vf-module-input-parameters" : { }
+ }
+ }
+}
+### vf-module-topology (deactivate)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "DeleteVfModuleInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "deactivate"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid" : "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid" : "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "vfmodule1",
+ "vf-module-input-parameters" : { }
+ }
+ }
+}
+
+### vf-module-topology (unassign)
+POST {{hostname}}/restconf/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "DeleteVfModuleInstance",
+ "source" : "simulator",
+ "request-id" : "{{$guid}}"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "svc-{{$guid}}",
+ "svc-action" : "unassign"
+ },
+ "service-information" : {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "svc-{{$guid}}",
+ "global-customer-id": "{{$guid}}",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "afb0dae3-85f0-4804-89a8-063204e61c1c",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid" : "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid" : "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "vfmodule1",
+ "vf-module-input-parameters" : { }
+ }
+ }
+}
+
+### Healthcheck
+POST {{hostname}}/restconf/operations/SLI-API:healthcheck/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+{ input: {}}
+
+### get preload information (top)
+GET {{hostname}}/restconf/config/GENERIC-RESOURCE-API:preload-information/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+### get vfmodule1 preload information
+GET {{hostname}}/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/vfmodule1/vf-module/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+### get service instance / topology
+GET {{hostname}}/restconf/config/GENERIC-RESOURCE-API:services/service/5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca/service-data/service-topology/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+### top level single service get
+GET {{hostname}}/restconf/config/GENERIC-RESOURCE-API:services/service/5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json
+
+### top level all services get
+GET {{hostname}}/restconf/config/GENERIC-RESOURCE-API:services/
+Authorization: Basic {{token}}
+Content-Type: application/json
+Accept: application/json \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/allotted-resource-item.json b/ms/gra/gra-app/src/test/resources/allotted-resource-item.json
new file mode 100644
index 0000000..5aa3371
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/allotted-resource-item.json
@@ -0,0 +1,29 @@
+{
+ "allotted-resource-id": "ar2",
+ "allotted-resource-data": {
+ "allotted-resource-oper-status": {
+ "create-timestamp": "2020-11-24T12:41:01.796Z",
+ "order-status": "Active"
+ },
+ "contrail-route-topology": {
+ "contrail-route-assignments": {
+ "contrail-id": "cr2",
+ "dest-network": {
+ "network-id": "19cdfce4-9124-4bbf-83bd-5140931bb519",
+ "network-role": "pktmirror"
+ },
+ "fq-name": "default-domain.GRP-27529-T-IST-13C.GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "source-network": {
+ "network-id": "1610d17a-fb91-48ac-9d4c-43f739fdbe54",
+ "network-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP"
+ }
+ },
+ "allotted-resource-identifiers": {
+ "allotted-resource-id": "ar2",
+ "allotted-resource-type": "contrail-route",
+ "allotted-resource-name": "GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "parent-service-instance-id": "service1"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/application.properties b/ms/gra/gra-app/src/test/resources/application.properties
new file mode 100644
index 0000000..04dd625
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/application.properties
@@ -0,0 +1,23 @@
+springfox.documentation.swagger.v2.path=/api-docs
+server.servlet.context-path=/restconf
+server.port=8080
+spring.jackson.date-format=org.onap.sdnc.apps.ms.gra.swagger.RFC3339DateFormat
+spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
+logging.level.com.att=TRACE
+logging.level.org.onap=TRACE
+spring.datasource.url=jdbc:derby:memory:${MYSQL_DATABASE};create=true
+spring.datasource.platform=derby
+spring.datasource.username=${MYSQL_USER}
+spring.datasource.password=${MYSQL_PASSWORD}
+spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+spring.datasource.continue-on-error=true
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.default_schema=${MYSQL_DATABASE}
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+#spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+spring.jpa.database=derby
+serviceLogicProperties=src/test/resources/svclogic.properties
+serviceLogicDirectory=target/svclogic/graphs/generic-resource-api
diff --git a/ms/gra/gra-app/src/test/resources/contrail-route-allotted-resource-1.json b/ms/gra/gra-app/src/test/resources/contrail-route-allotted-resource-1.json
new file mode 100644
index 0000000..193002a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/contrail-route-allotted-resource-1.json
@@ -0,0 +1,33 @@
+{
+ "contrail-route-allotted-resource" : [
+ {
+ "allotted-resource-id": "ar1",
+ "allotted-resource-data": {
+ "allotted-resource-oper-status": {
+ "create-timestamp": "2020-11-24T12:41:01.796Z",
+ "order-status": "Active"
+ },
+ "contrail-route-topology": {
+ "contrail-route-assignments": {
+ "contrail-id": "cr1",
+ "dest-network": {
+ "network-id": "19cdfce4-9124-4bbf-83bd-5140931bb519",
+ "network-role": "pktmirror"
+ },
+ "fq-name": "default-domain.GRP-27529-T-IST-13C.GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "source-network": {
+ "network-id": "1610d17a-fb91-48ac-9d4c-43f739fdbe54",
+ "network-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP"
+ }
+ },
+ "allotted-resource-identifiers": {
+ "allotted-resource-id": "ar1",
+ "allotted-resource-type": "contrail-route",
+ "allotted-resource-name": "GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "parent-service-instance-id": "service1"
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/db/changelog/db.changelog-master.yaml b/ms/gra/gra-app/src/test/resources/db/changelog/db.changelog-master.yaml
new file mode 100644
index 0000000..29d98e6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/db/changelog/db.changelog-master.yaml
@@ -0,0 +1,55358 @@
+databaseChangeLog:
+- changeSet:
+ id: 20210211-1
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ columns:
+ - column:
+ name: allottedResourceId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: allottedResourceStatusAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: arData
+ type: clob
+- changeSet:
+ id: 20210211-2
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS
+ columns:
+ - column:
+ name: configurationId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: pmcData
+ type: clob
+ - column:
+ name: portMirrorConfigurationStatusAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcName
+ type: varchar(255)
+- changeSet:
+ id: 20210211-3
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_SERVICES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_SERVICES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: serviceStatusAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: serviceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: svcData
+ type: clob
+- changeSet:
+ id: 20210211-4
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_PRELOAD_DATA
+ changes:
+ - createTable:
+ tableName: CONFIG_PRELOAD_DATA
+ columns:
+ - column:
+ name: preloadId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: preloadType
+ type: varchar(25)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: preloadData
+ type: clob
+- changeSet:
+ id: 20210211-5
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: NODE_TYPES
+ changes:
+ - createTable:
+ tableName: NODE_TYPES
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: nodetype
+ type: varchar(80)
+- changeSet:
+ id: 20210211-6
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES
+ columns:
+ - column:
+ name: allottedResourceId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: allottedResourceStatusAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: allottedResourceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: arData
+ type: clob
+- changeSet:
+ id: 20210211-7
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS
+ columns:
+ - column:
+ name: configurationId
+ type: varchar(255)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: pmcData
+ type: clob
+ - column:
+ name: portMirrorConfigurationStatusAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: portMirrorConfigurationStatusRpcName
+ type: varchar(255)
+- changeSet:
+ id: 20210211-8
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_GRA_SERVICES
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_GRA_SERVICES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: serviceStatusAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusFinalIndicator
+ type: varchar(255)
+ - column:
+ name: serviceStatusRequestStatus
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseCode
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseMessage
+ type: varchar(255)
+ - column:
+ name: serviceStatusResponseTimestamp
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcAction
+ type: varchar(255)
+ - column:
+ name: serviceStatusRpcName
+ type: varchar(255)
+ - column:
+ name: svcData
+ type: clob
+- changeSet:
+ id: 20210211-9
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: OPERATIONAL_PRELOAD_DATA
+ changes:
+ - createTable:
+ tableName: OPERATIONAL_PRELOAD_DATA
+ columns:
+ - column:
+ name: preloadId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: preloadType
+ type: varchar(25)
+ - column:
+ name: preloadData
+ type: clob
+- changeSet:
+ id: 20210211-11
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: TEST_RESULT_CONFIG
+ changes:
+ - createTable:
+ tableName: TEST_RESULT_CONFIG
+ columns:
+ - column:
+ name: id
+ type: bigint
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: results
+ type: varchar(255)
+ - column:
+ name: testIdentifier
+ type: varchar(255)
+- changeSet:
+ id: 20210211-12
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: TEST_RESULT_OPERATIONAL
+ changes:
+ - createTable:
+ tableName: TEST_RESULT_OPERATIONAL
+ columns:
+ - column:
+ name: id
+ type: bigint
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: results
+ type: varchar(255)
+ - column:
+ name: testIdentifier
+ type: varchar(255)
+- changeSet:
+ id: 20210211-13
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: hibernate_sequence
+ changes:
+ - createTable:
+ tableName: hibernate_sequence
+ columns:
+ - column:
+ name: next_val
+ type: bigint
+- changeSet:
+ id: 20210216-1
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_NETWORKS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_NETWORKS
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: networkId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: networkData
+ type: clob
+- changeSet:
+ id: 20210216-2
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_VNFS
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_VNFS
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfData
+ type: clob
+- changeSet:
+ id: 20210216-3
+ author: dtimoney@att.com
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: CONFIG_GRA_VF_MODULES
+ changes:
+ - createTable:
+ tableName: CONFIG_GRA_VF_MODULES
+ columns:
+ - column:
+ name: svcInstanceId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vnfId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vfModuleId
+ type: varchar(100)
+ constraints:
+ nullable: false
+ primaryKey: true
+ - column:
+ name: vfModuleData
+ type: clob
+- changeSet:
+ id: 1616530536098-1
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: ALLOTTED_RESOURCE_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: customization_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: uuid
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ - column:
+ name: naming_policy
+ type: VARCHAR(255)
+ - column:
+ name: ecomp_generated_naming
+ type: CHAR(1)
+ - column:
+ name: depending_service
+ type: VARCHAR(255)
+ - column:
+ name: role
+ type: VARCHAR(255)
+ - column:
+ name: type
+ type: VARCHAR(255)
+ - column:
+ name: service_dependency
+ type: VARCHAR(255)
+ - column:
+ name: allotted_resource_type
+ type: VARCHAR(255)
+ tableName: ALLOTTED_RESOURCE_MODEL
+- changeSet:
+ id: 1616530536098-2
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: NETWORK_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: customization_uuid
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: service_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: uuid
+ type: VARCHAR(255)
+ - column:
+ name: network_type
+ type: VARCHAR(255)
+ - column:
+ name: network_role
+ type: VARCHAR(255)
+ - column:
+ name: network_technology
+ type: VARCHAR(255)
+ - column:
+ name: trunk_network_indicator
+ type: CHAR(1)
+ - column:
+ name: network_scope
+ type: VARCHAR(255)
+ - column:
+ name: naming_policy
+ type: VARCHAR(255)
+ - column:
+ name: ecomp_generated_naming
+ type: CHAR(1)
+ - column:
+ name: is_shared_network
+ type: CHAR(1)
+ - column:
+ name: is_external_network
+ type: CHAR(1)
+ - column:
+ name: is_provider_network
+ type: CHAR(1)
+ - column:
+ name: physical_network_name
+ type: VARCHAR(255)
+ - column:
+ name: is_bound_to_vpn
+ type: CHAR(1)
+ - column:
+ name: vpn_binding
+ type: VARCHAR(255)
+ - column:
+ name: use_ipv4
+ type: CHAR(1)
+ - column:
+ name: ipv4_dhcp_enabled
+ type: CHAR(1)
+ - column:
+ name: ipv4_ip_version
+ type: CHAR(1)
+ - column:
+ name: ipv4_cidr_mask
+ type: VARCHAR(255)
+ - column:
+ name: eipam_v4_address_plan
+ type: VARCHAR(255)
+ - column:
+ name: use_ipv6
+ type: CHAR(1)
+ - column:
+ name: ipv6_dhcp_enabled
+ type: CHAR(1)
+ - column:
+ name: ipv6_ip_version
+ type: CHAR(1)
+ - column:
+ name: ipv6_cidr_mask
+ type: VARCHAR(255)
+ - column:
+ name: eipam_v6_address_plan
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ tableName: NETWORK_MODEL
+- changeSet:
+ id: 1616530536098-3
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: SERVICE_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: service_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ - column:
+ name: name
+ type: VARCHAR(255)
+ - column:
+ name: description
+ type: VARCHAR(1024)
+ - column:
+ name: type
+ type: VARCHAR(255)
+ - column:
+ name: category
+ type: VARCHAR(255)
+ - column:
+ name: ecomp_naming
+ type: CHAR(1)
+ - column:
+ name: service_instance_name_prefix
+ type: VARCHAR(255)
+ - column:
+ name: filename
+ type: VARCHAR(100)
+ - column:
+ name: naming_policy
+ type: VARCHAR(255)
+ tableName: SERVICE_MODEL
+- changeSet:
+ id: 1616530536098-4
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VFC_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: customization_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: uuid
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ - column:
+ name: naming_policy
+ type: VARCHAR(255)
+ - column:
+ name: ecomp_generated_naming
+ type: CHAR(1)
+ - column:
+ name: nfc_function
+ type: VARCHAR(255)
+ - column:
+ name: nfc_naming_code
+ type: VARCHAR(255)
+ - column:
+ name: vm_type
+ type: VARCHAR(255)
+ - column:
+ name: vm_type_tag
+ type: VARCHAR(255)
+ - column:
+ name: vm_image_name
+ type: VARCHAR(255)
+ - column:
+ name: vm_flavor_name
+ type: VARCHAR(255)
+ - column:
+ name: high_availability
+ type: VARCHAR(255)
+ - column:
+ name: nfc_naming
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: min_instances
+ type: INT
+ - column:
+ defaultValueComputed: 'NULL'
+ name: max_instances
+ type: INT
+ tableName: VFC_MODEL
+- changeSet:
+ id: 1616530536098-5
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ changes:
+ - createTable:
+ columns:
+ - column:
+ autoIncrement: true
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: seq
+ type: INT
+ - column:
+ constraints:
+ nullable: false
+ name: vfc_customization_uuid
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: network_role
+ type: VARCHAR(255)
+ - column:
+ name: vm_type
+ type: VARCHAR(255)
+ - column:
+ name: network_role_tag
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: ipv4_count
+ type: INT
+ - column:
+ constraints:
+ nullable: false
+ name: ipv6_count
+ type: INT
+ - column:
+ name: ipv4_use_dhcp
+ type: CHAR(1)
+ - column:
+ name: ipv6_use_dhcp
+ type: CHAR(1)
+ - column:
+ name: ipv4_ip_version
+ type: CHAR(1)
+ - column:
+ name: ipv6_ip_version
+ type: CHAR(1)
+ - column:
+ name: extcp_subnetpool_id
+ type: VARCHAR(512)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: ipv4_floating_count
+ type: INT
+ - column:
+ defaultValueComputed: 'NULL'
+ name: ipv6_floating_count
+ type: INT
+ - column:
+ name: ipv4_address_plan_name
+ type: VARCHAR(512)
+ - column:
+ name: ipv6_address_plan_name
+ type: VARCHAR(512)
+ - column:
+ name: ipv4_vrf_name
+ type: VARCHAR(512)
+ - column:
+ name: ipv6_vrf_name
+ type: VARCHAR(512)
+ - column:
+ name: subnet_role
+ type: VARCHAR(255)
+ - column:
+ name: subinterface_indicator
+ type: CHAR(1)
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+- changeSet:
+ id: 1616530536098-6
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VF_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: customization_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: uuid
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ - column:
+ name: name
+ type: VARCHAR(255)
+ - column:
+ name: naming_policy
+ type: VARCHAR(255)
+ - column:
+ name: ecomp_generated_naming
+ type: CHAR(1)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: avail_zone_max_count
+ type: INT
+ - column:
+ name: nf_function
+ type: VARCHAR(255)
+ - column:
+ name: nf_code
+ type: VARCHAR(255)
+ - column:
+ name: nf_type
+ type: VARCHAR(255)
+ - column:
+ name: nf_role
+ type: VARCHAR(255)
+ - column:
+ name: vendor
+ type: VARCHAR(255)
+ - column:
+ name: vendor_version
+ type: VARCHAR(255)
+ - column:
+ name: sdnc_model_name
+ type: VARCHAR(255)
+ - column:
+ name: sdnc_model_version
+ type: VARCHAR(255)
+ - column:
+ name: sdnc_artifact_name
+ type: VARCHAR(255)
+ tableName: VF_MODEL
+- changeSet:
+ id: 1616530536098-7
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VF_MODULE_MODEL
+ changes:
+ - createTable:
+ columns:
+ - column:
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: customization_uuid
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: model_yaml
+ type: LONGBLOB
+ - column:
+ name: invariant_uuid
+ type: VARCHAR(255)
+ - column:
+ name: uuid
+ type: VARCHAR(255)
+ - column:
+ name: version
+ type: VARCHAR(255)
+ - column:
+ name: vf_module_type
+ type: VARCHAR(255)
+ - column:
+ defaultValueComputed: 'NULL'
+ name: availability_zone_count
+ type: INT
+ - column:
+ name: ecomp_generated_vm_assignments
+ type: CHAR(1)
+ - column:
+ name: vf_customization_uuid
+ type: VARCHAR(255)
+ - column:
+ name: vf_module_label
+ type: VARCHAR(255)
+ tableName: VF_MODULE_MODEL
+- changeSet:
+ id: 1616530536098-8
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ changes:
+ - createTable:
+ columns:
+ - column:
+ autoIncrement: true
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: seq
+ type: INT
+ - column:
+ constraints:
+ nullable: false
+ name: vf_module_customization_uuid
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: vfc_customization_uuid
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: vm_type
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: vm_count
+ type: INT
+ tableName: VF_MODULE_TO_VFC_MAPPING
+- changeSet:
+ id: 1616530536098-9
+ author: dt5972 (generated)
+ preConditions:
+ - onFail: MARK_RAN
+ - not:
+ - tableExists:
+ tableName: VF_TO_NETWORK_ROLE_MAPPING
+ changes:
+ - createTable:
+ columns:
+ - column:
+ autoIncrement: true
+ constraints:
+ nullable: false
+ primaryKey: true
+ name: seq
+ type: INT
+ - column:
+ constraints:
+ nullable: false
+ name: vf_customization_uuid
+ type: VARCHAR(255)
+ - column:
+ constraints:
+ nullable: false
+ name: network_role
+ type: VARCHAR(255)
+ tableName: VF_TO_NETWORK_ROLE_MAPPING
+- changeSet:
+ id: 1616530536098-10
+ author: dt5972 (generated)
+ changes:
+ - createIndex:
+ columns:
+ - column:
+ name: service_uuid
+ indexName: FK_NETWORK_MODEL
+ tableName: NETWORK_MODEL
+- changeSet:
+ id: 1616530536098-11
+ author: dt5972 (generated)
+ changes:
+ - createIndex:
+ columns:
+ - column:
+ name: vfc_customization_uuid
+ indexName: IX1_VFC_TO_NETWORK_ROLE_MAPPING
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+- changeSet:
+ id: 1616530536098-12
+ author: dt5972 (generated)
+ changes:
+ - createIndex:
+ columns:
+ - column:
+ name: vf_module_customization_uuid
+ indexName: IX1_VF_MODULE_TO_VFC_MAPPING
+ tableName: VF_MODULE_TO_VFC_MAPPING
+- changeSet:
+ id: 1616530536098-13
+ author: dt5972 (generated)
+ changes:
+ - createIndex:
+ columns:
+ - column:
+ name: vf_customization_uuid
+ indexName: IX1_VF_TO_NETWORK_ROLE_MAPPING
+ tableName: VF_TO_NETWORK_ROLE_MAPPING
+- changeSet:
+ id: 1616613628341-10
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0ac79616-4f69-4936-8f31-5ce982282be2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f
+ - column:
+ name: uuid
+ value: 2abcec58-fe97-478e-a58f-35c8cdc3ec3d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: Tunnel XConnect
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: Tunnel XConnect
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1b8908b1-0af7-4fa2-980d-a43bc85ef8f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 176f26ba-9bf8-46b6-b54d-53cd0c14183d
+ - column:
+ name: uuid
+ value: d848e8a2-5360-445a-b98d-6f3d2a787dc5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ value: TunnelXConn
+ - column:
+ name: type
+ value: TunnelXConn
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1e7a8782-7bf6-4726-a26e-a5e4eca6cba1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5255679f-0d50-49e3-82f1-e51bca8cf6d1
+ - column:
+ name: uuid
+ value: f6d6767d-c015-4924-9052-97659f8a16e3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: IP Mux Demux
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: IP Mux Demux
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 28978eea-6b39-497a-9ee8-ce2f92159235
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 19c5417a-fead-41f2-a29e-c1bd7593601f
+ - column:
+ name: uuid
+ value: 5cd256a5-64a5-46cf-bc8f-4131533cc8e2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ value: BRG
+ - column:
+ name: type
+ value: BRG
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8892322d-8797-4ecd-a4b1-bf0cdc426541
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 176f26ba-9bf8-46b6-b54d-53cd0c14183d
+ - column:
+ name: uuid
+ value: d848e8a2-5360-445a-b98d-6f3d2a787dc5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ value: TunnelXConn
+ - column:
+ name: type
+ value: TunnelXConn
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f8dbc4f-d7f6-421b-a2fe-3c09b1068622
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b8064c7c-2390-4eab-9472-f0cdde3b1b9e
+ - column:
+ name: uuid
+ value: 1bba1911-e393-46fb-a773-a93d29261cc2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: IP Mux Demux
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: IP Mux Demux
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: acc15553-e8fa-41f1-a260-e4588290dd9d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b8064c7c-2390-4eab-9472-f0cdde3b1b9e
+ - column:
+ name: uuid
+ value: 1bba1911-e393-46fb-a773-a93d29261cc2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: IP Mux Demux
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: IP Mux Demux
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ad07a460-4224-4b55-8aab-cbd3d3c3310b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b5bbf19a-9fed-4fc0-a61e-e44d246f37b8
+ - column:
+ name: uuid
+ value: f59db7f5-74fb-4dbd-94aa-90b2ce4ac627
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: Tunnel XConnect
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: Tunnel XConnect
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb50f135-22d2-4b64-98ab-e6aed28608e8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f
+ - column:
+ name: uuid
+ value: 2abcec58-fe97-478e-a58f-35c8cdc3ec3d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: Tunnel XConnect
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: Tunnel XConnect
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cc1e0245-fd9c-407a-9199-bcfa247d7718
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 19c5417a-fead-41f2-a29e-c1bd7593601f
+ - column:
+ name: uuid
+ value: 5cd256a5-64a5-46cf-bc8f-4131533cc8e2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ value: BRG
+ - column:
+ name: type
+ value: BRG
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ tableName: ALLOTTED_RESOURCE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f66a5a6a-30f4-40ef-a3b6-ba779a522fd0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5d623af7-1ae4-4e7d-933b-b09bd4407f40
+ - column:
+ name: uuid
+ value: dac644a3-2b2c-4586-862d-9a9a4b1eb5e1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: depending_service
+ - column:
+ name: role
+ - column:
+ name: type
+ value: Allotted Resource
+ - column:
+ name: service_dependency
+ - column:
+ name: allotted_resource_type
+ value: Allotted Resource
+ tableName: ALLOTTED_RESOURCE_MODEL
+- changeSet:
+ id: 1616613628341-11
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 367a8ba9-057a-4506-b106-fbae818597c6
+ - column:
+ name: service_uuid
+ value: 6794ec22-95ff-4b00-8846-b1148e90df54
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b7a1b78e-6b6b-4b36-9698-8c9530da14af
+ - column:
+ name: uuid
+ value: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1
+ - column:
+ name: network_type
+ - column:
+ name: network_role
+ - column:
+ name: network_technology
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ tableName: NETWORK_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4138175b-d013-4b8a-a0d4-c94ec2657205
+ - column:
+ name: service_uuid
+ value: f0d19319-a926-4f5c-bf63-06d417c8f3ab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 206d5e6c-4cba-4c14-b942-5d946c881869
+ - column:
+ name: uuid
+ value: 9b7c1cbe-ddcd-458c-8792-d76391419b72
+ - column:
+ name: network_type
+ value: NEUTRON
+ - column:
+ name: network_role
+ value: VcpesvcInfra0412a.cpe_public
+ - column:
+ name: network_technology
+ value: NEUTRON
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ value: N
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ value: N
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ value: '1.0'
+ tableName: NETWORK_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 61daffc9-c35d-4c04-b0c7-e9b460d6ae5a
+ - column:
+ name: service_uuid
+ value: f0d19319-a926-4f5c-bf63-06d417c8f3ab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 206d5e6c-4cba-4c14-b942-5d946c881869
+ - column:
+ name: uuid
+ value: 9b7c1cbe-ddcd-458c-8792-d76391419b72
+ - column:
+ name: network_type
+ value: NEUTRON
+ - column:
+ name: network_role
+ value: VcpesvcInfra0412a.cpe_signal
+ - column:
+ name: network_technology
+ value: NEUTRON
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ value: N
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ value: N
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ value: '1.0'
+ tableName: NETWORK_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b0cf3385-a390-488c-b6a0-d879fb4a4825
+ - column:
+ name: service_uuid
+ value: 12eb33fa-b221-4d87-939c-d808b5799a7c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 206d5e6c-4cba-4c14-b942-5d946c881869
+ - column:
+ name: uuid
+ value: 9b7c1cbe-ddcd-458c-8792-d76391419b72
+ - column:
+ name: network_type
+ value: NEUTRON
+ - column:
+ name: network_role
+ value: VcpesvcVbng0412a.bng_mux
+ - column:
+ name: network_technology
+ value: NEUTRON
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ value: N
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ value: N
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ value: '1.0'
+ tableName: NETWORK_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e2d7ba3f-5e86-49ad-a2f3-46f24b046f41
+ - column:
+ name: service_uuid
+ value: 12eb33fa-b221-4d87-939c-d808b5799a7c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 206d5e6c-4cba-4c14-b942-5d946c881869
+ - column:
+ name: uuid
+ value: 9b7c1cbe-ddcd-458c-8792-d76391419b72
+ - column:
+ name: network_type
+ value: NEUTRON
+ - column:
+ name: network_role
+ value: VcpesvcVbng0412a.brg_bng
+ - column:
+ name: network_technology
+ value: NEUTRON
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ value: N
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ value: N
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ value: '1.0'
+ tableName: NETWORK_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fe4cdfc8-6415-428f-91f0-c0b34a7f3128
+ - column:
+ name: service_uuid
+ value: b4c3eac7-9f57-4330-9a05-c7d5595505ea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 206d5e6c-4cba-4c14-b942-5d946c881869
+ - column:
+ name: uuid
+ value: 9b7c1cbe-ddcd-458c-8792-d76391419b72
+ - column:
+ name: network_type
+ value: NEUTRON
+ - column:
+ name: network_role
+ value: VcpesvcVgmux0412a.mux_gw
+ - column:
+ name: network_technology
+ value: NEUTRON
+ - column:
+ name: trunk_network_indicator
+ - column:
+ name: network_scope
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: is_shared_network
+ - column:
+ name: is_external_network
+ value: N
+ - column:
+ name: is_provider_network
+ - column:
+ name: physical_network_name
+ - column:
+ name: is_bound_to_vpn
+ value: N
+ - column:
+ name: vpn_binding
+ - column:
+ name: use_ipv4
+ - column:
+ name: ipv4_dhcp_enabled
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv4_cidr_mask
+ - column:
+ name: eipam_v4_address_plan
+ - column:
+ name: use_ipv6
+ - column:
+ name: ipv6_dhcp_enabled
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: ipv6_cidr_mask
+ - column:
+ name: eipam_v6_address_plan
+ - column:
+ name: version
+ value: '1.0'
+ tableName: NETWORK_MODEL
+- changeSet:
+ id: 1616613628341-12
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: '0'
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ - column:
+ name: version
+ - column:
+ name: name
+ - column:
+ name: description
+ - column:
+ name: type
+ - column:
+ name: category
+ - column:
+ name: ecomp_naming
+ - column:
+ name: service_instance_name_prefix
+ - column:
+ name: filename
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 00e50cbd-ef0f-4b28-821e-f2b583752dd3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dbf9288d-18ef-4d28-82cb-29373028f367
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vBNG_0202
+ - column:
+ name: description
+ value: Virtual
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: N
+ - column:
+ name: service_instance_name_prefix
+ value: Vbng0202
+ - column:
+ name: filename
+ value: service-Vbng0202-template.yml
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 083b57cd-4b76-4924-a64c-610445528063
+ - column:
+ name: version
+ - column:
+ name: name
+ value: BK-012317-UUID-Service
+ - column:
+ name: description
+ value: BK-012317-UUID-Service
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: N
+ - column:
+ name: service_instance_name_prefix
+ value: Bk012317UuidService
+ - column:
+ name: filename
+ value: service-Bk012317UuidService-template.yml
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 0b72b486-91cb-4734-a72d-d2a43f25771c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 28286960-3f83-4c37-b40b-8915d8582ee3
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-04 16:17:40
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060416:17:40
+ - column:
+ name: filename
+ value: service-Vfw20180604161740-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 11018d47-e8d8-42f6-8162-a691be055e18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e4f07ad9-155e-437b-88d4-b7b8d8a4e078
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vCPE 2018-06-05 02:53:1
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpe2018060502:53:1
+ - column:
+ name: filename
+ value: service-Vcpe2018060502531-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 1207105c-c1fc-4b2b-a94d-ac56522b70fb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 66bbfebb-c97a-4841-b0ff-fbede0e905b4
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLB 2018-06-05 02:37:19
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vlb2018060502:37:19
+ - column:
+ name: filename
+ value: service-Vlb20180605023719-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 12eb33fa-b221-4d87-939c-d808b5799a7c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ead151e2-e18a-44fc-b6ac-3ae3d819dcd6
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_vbng_0412a
+ - column:
+ name: description
+ value: bng
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcVbng0412a
+ - column:
+ name: filename
+ value: service-VcpesvcVbng0412a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 16b0f456-4ddd-4b0e-ad4f-7783224043dc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 620b7ab3-423b-4a39-8c98-e78fba42d178
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-05 02:43:09
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060502:43:09
+ - column:
+ name: filename
+ value: service-Vfw20180605024309-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 1794adc8-2481-4ca7-9d5d-b3d3be9c686e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bc690cb9-8fec-4eef-a98e-580bdfed1ed6
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_rescust_0529a
+ - column:
+ name: description
+ value: vcpe res cust
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcRescust0529a
+ - column:
+ name: filename
+ value: service-VcpesvcRescust0529a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 1af22bad-a297-448b-9f5c-ce6ca843f8ee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 750ac797-4f08-4334-8d34-100ae2b59907
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-04 16:43:30
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060416:43:30
+ - column:
+ name: filename
+ value: service-Vfw20180604164330-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 20040dc7-65ec-414b-a77a-f7c1f935b5ae
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5351da04-b415-4a6e-877a-3e879ec01178
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vVG 2018-05-31 20:36:27
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vvg2018053120:36:27
+ - column:
+ name: filename
+ value: service-Vvg20180531203627-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 27a090ca-7a20-46c4-9698-eb1dae25bddb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d0bd924e-6d96-4ac8-a036-a6354f7d7e34
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-04 21:54:41
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060421:54:41
+ - column:
+ name: filename
+ value: service-Vfw20180604215441-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 28681887-d259-46b1-8259-152b86dd1252
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7cb9ddad-9597-4165-8dd1-04421368ffcf
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vVG 2018-06-05 02:48:17
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vvg2018060502:48:17
+ - column:
+ name: filename
+ value: service-Vvg20180605024817-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 2a6ee979-d07b-4ace-89d3-eda308283a12
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b173f7ba-e618-44d9-b179-962b0e33578e
+ - column:
+ name: version
+ - column:
+ name: name
+ value: 'vFWCL 2018-06-01 16:30:'
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: 'Vfwcl2018060116:30:'
+ - column:
+ name: filename
+ value: service-Vfwcl201806011630-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 3cd128f5-75c1-497f-97cd-fbc8f0c2e711
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c811b5ef-8512-4cd6-b8ab-90e31e73c833
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vIMSService20180608a
+ - column:
+ name: description
+ value: '143124'
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: VoIP Call Control
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vimsservice20180608a
+ - column:
+ name: filename
+ value: service-Vimsservice20180608a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 52174fb4-be73-4f23-b706-a574d48022a8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 40be5e3d-1185-4bed-b8ea-26cd65a461aa
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vIMSService20180607
+ - column:
+ name: description
+ value: dafdasfsa
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: VoIP Call Control
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vimsservice20180607
+ - column:
+ name: filename
+ value: service-Vimsservice20180607-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 6b586613-4e3f-4bc7-b0b5-2a7408d9d6a6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5afd7dd4-d2e5-4fb3-a8c0-75cce1a225ab
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesb7
+ - column:
+ name: description
+ value: hello
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpesb7
+ - column:
+ name: filename
+ value: service-Vcpesb7-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 6f691fb7-e38c-4256-81d2-bf5c8c1e3ba5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7a43a399-2134-45b3-b610-a9bfcc136c32
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vIMSService20180608
+ - column:
+ name: description
+ value: '11111'
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L4+
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vimsservice20180608
+ - column:
+ name: filename
+ value: service-Vimsservice20180608-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 8686e9e2-6790-464a-a746-efd37b809c17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 056a5391-2f6b-4c0f-b4ee-593641a52a9e
+ - column:
+ name: version
+ - column:
+ name: name
+ value: 'vFWCL 2018-06-01 18:23:'
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: 'Vfwcl2018060118:23:'
+ - column:
+ name: filename
+ value: service-Vfwcl201806011823-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 87665c89-2b6d-4d35-ba74-d477c0cafbeb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c12550e2-8a33-4924-a612-7fac61778a42
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLB 2018-06-01 16:15:38
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vlb2018060116:15:38
+ - column:
+ name: filename
+ value: service-Vlb20180601161538-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 87fba18b-c8dc-4a3f-b578-dd79354eb9f1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 90dbea8d-3a8c-4135-8d24-e054d5f5da05
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-05 02:33:36
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060502:33:36
+ - column:
+ name: filename
+ value: service-Vfw20180605023336-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 8cf77de9-06a2-429b-b7db-cf3f4d122a46
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3f7c1350-5233-48e0-a2aa-00c1038469f5
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpeservice
+ - column:
+ name: description
+ value: hello
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpeservice
+ - column:
+ name: filename
+ value: service-Vcpeservice-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 8d6335d8-3883-483d-9e45-fdcd9e11c351
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 93008484-8d5e-41b2-9e29-6c86ac2d0b36
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpe7service
+ - column:
+ name: description
+ value: hello
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpe7service
+ - column:
+ name: filename
+ value: service-Vcpe7service-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 8dde7703-773d-4e2f-9f15-896ddac78be0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6011136e-597f-4f7a-8d43-f9827383d146
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-05 02:25:46
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060502:25:46
+ - column:
+ name: filename
+ value: service-Vfw20180605022546-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: 8f8e5a56-eec8-4a16-b866-0c934323a006
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86e96538-cb4d-4975-8af3-ed075d3f52fa
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLoadBalancerMS
+ - column:
+ name: description
+ value: vLBMS
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L4+
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vloadbalancerms
+ - column:
+ name: filename
+ value: service-Vloadbalancerms-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: a64f918a-7028-4760-a0dc-521c66ae56fa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 057961dd-b436-41d2-86e1-ded5e4c335e8
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLB 2018-05-31 20:26:41
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vlb2018053120:26:41
+ - column:
+ name: filename
+ value: service-Vlb20180531202641-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: aa8812f9-06bd-4c26-8099-9a98d0229f19
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 670c4959-3cfa-43c6-b8b7-5998fa20d116
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_vbrg_0412a
+ - column:
+ name: description
+ value: vbrg
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcVbrg0412a
+ - column:
+ name: filename
+ value: service-VcpesvcVbrg0412a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: abd7a199-c445-4324-b57c-3b2af348273c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ce6cc49e-ea8d-4b90-9cc3-444c7f8d5550
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFirewall
+ - column:
+ name: description
+ value: vFW
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L4+
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfirewall
+ - column:
+ name: filename
+ value: service-Vfirewall-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: adcbcc7a-6685-4b78-9b4c-61e49e15bf45
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 963bda29-af3f-4f2c-8650-3ee4a39606e0
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vVG 2018-05-31 20:19:12
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vvg2018053120:19:12
+ - column:
+ name: filename
+ value: service-Vvg20180531201912-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: afdb3920-b9be-4626-910b-f5c1a2ab5eb4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 54a49baf-c7f6-4838-a3a4-9c25a96be2fc
+ - column:
+ name: version
+ - column:
+ name: name
+ value: 'vFWCL 2018-05-31 20:22:'
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: 'Vfwcl2018053120:22:'
+ - column:
+ name: filename
+ value: service-Vfwcl201805312022-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: b1cc4717-cfdb-428c-a93b-a7d8c746e706
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fb17d0c1-2189-471a-aabb-75380361daff
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vVG 2018-06-01 14:05:20
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vvg2018060114:05:20
+ - column:
+ name: filename
+ value: service-Vvg20180601140520-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: b241ec41-d98d-4a03-a54c-b52791a9c3cb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a3ebfaf2-3dea-43b0-bb8e-566f95735230
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_rescust_0412a
+ - column:
+ name: description
+ value: rescust service
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcRescust0412a
+ - column:
+ name: filename
+ value: service-VcpesvcRescust0412a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: b321ed9e-1bd5-4271-a8f0-ee663b820cfc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd97264b-4115-480d-ac76-a9e15fe19936
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vIMSServcie20180608b
+ - column:
+ name: description
+ value: dafdsaf
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: VoIP Call Control
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vimsservcie20180608b
+ - column:
+ name: filename
+ value: service-Vimsservcie20180608b-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: b47f8de0-860f-4202-bfdc-5cf3659092b7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9793a762-266f-4a79-87ca-df9f720ecb87
+ - column:
+ name: version
+ - column:
+ name: name
+ value: firewall3
+ - column:
+ name: description
+ value: hello
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L4+
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Firewall3
+ - column:
+ name: filename
+ value: service-Firewall3-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: b4c3eac7-9f57-4330-9a05-c7d5595505ea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 655e15b6-1821-46d0-8c56-6b24d9afca31
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_vgmux_0412a
+ - column:
+ name: description
+ value: gmux
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcVgmux0412a
+ - column:
+ name: filename
+ value: service-VcpesvcVgmux0412a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: bc2e2de4-25dc-4dd3-a67d-f96412045492
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 84e95ace-4674-405c-b228-6cd550ff8ac6
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpeservice9
+ - column:
+ name: description
+ value: demo
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpeservice9
+ - column:
+ name: filename
+ value: service-Vcpeservice9-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: c4080e72-8db8-47b1-87ac-479d37062265
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 84c2fcfe-3629-4e64-a80f-1b13135dbe44
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLB 2018-06-01 13:55:12
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vlb2018060113:55:12
+ - column:
+ name: filename
+ value: service-Vlb20180601135512-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: d891d858-c805-4fc2-b38c-ebda6c1c9a7b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: af88c762-2776-4164-881d-6cf0f2cd2360
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vVG 2018-06-01 16:25:09
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vvg2018060116:25:09
+ - column:
+ name: filename
+ value: service-Vvg20180601162509-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: dbeed4a7-1536-4110-8e6a-2dc1e57f9c26
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3b373ae2-b14c-4468-986b-78284ec952bc
+ - column:
+ name: version
+ - column:
+ name: name
+ value: 'vFWCL 2018-05-31 20:42:'
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: 'Vfwcl2018053120:42:'
+ - column:
+ name: filename
+ value: service-Vfwcl201805312042-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: e4e7ae06-5a32-4278-b0ff-282ac0952910
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4cadc250-9bda-49b4-9c4e-7baedf9b88d3
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpeservice2
+ - column:
+ name: description
+ value: good service
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpeservice2
+ - column:
+ name: filename
+ value: service-Vcpeservice2-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: e523f567-8bfd-4e7b-b9e4-07d466272166
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 08a5a162-bf25-40a6-b3a2-3537afd83ed0
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-04 17:32:02
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060417:32:02
+ - column:
+ name: filename
+ value: service-Vfw20180604173202-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: e6e82074-e7c0-4096-82e5-46114f6116de
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f6fbc972-04ed-4958-a5d2-84c1c5e0b66b
+ - column:
+ name: version
+ - column:
+ name: name
+ value: 'vFWCL 2018-06-01 14:11:'
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: 'Vfwcl2018060114:11:'
+ - column:
+ name: filename
+ value: service-Vfwcl201806011411-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: f0d19319-a926-4f5c-bf63-06d417c8f3ab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dc729baa-c5a1-4ed0-89b9-3af55cf201ff
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpesvc_infra_0412a
+ - column:
+ name: description
+ value: infra
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: VcpesvcInfra0412a
+ - column:
+ name: filename
+ value: service-VcpesvcInfra0412a-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: f3bb7dfa-824a-4034-8760-0bc7dc8a9530
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dec3f43d-ffb1-4367-9827-9183801fdba9
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vLB 2018-05-31 20:16:23
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vlb2018053120:16:23
+ - column:
+ name: filename
+ value: service-Vlb20180531201623-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: f84b3649-6e42-4ff3-8550-4f7dff594ba0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1cd28fd6-7b62-4378-8a41-187fc0ea5c6f
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vcpegoodservice
+ - column:
+ name: description
+ value: hello
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vcpegoodservice
+ - column:
+ name: filename
+ value: service-Vcpegoodservice-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: service_uuid
+ value: f943d194-9cba-4d4a-9cb9-8b88737f7cbc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 03b65058-d396-4ce9-8eda-b0d8875e2394
+ - column:
+ name: version
+ - column:
+ name: name
+ value: vFW 2018-06-04 16:26:42
+ - column:
+ name: description
+ value: catalog service description
+ - column:
+ name: type
+ value: Service
+ - column:
+ name: category
+ value: Network L1-3
+ - column:
+ name: ecomp_naming
+ value: Y
+ - column:
+ name: service_instance_name_prefix
+ value: Vfw2018060416:26:42
+ - column:
+ name: filename
+ value: service-Vfw20180604162642-csar.csar
+ - column:
+ name: naming_policy
+ tableName: SERVICE_MODEL
+- changeSet:
+ id: 1616613628341-13
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0062f5d9-eee4-4660-b08b-b1c63500b6ec
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0063a07b-6eb7-4ed0-a0fd-5a2877cf1b11
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 629e5ac3-c75d-475f-8262-f53f6f761c2f
+ - column:
+ name: uuid
+ value: dec80f28-f12d-4ade-be99-d3ebf7635ecd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: virc_cc
+ - column:
+ name: vm_type
+ value: virc_cc
+ - column:
+ name: vm_type_tag
+ value: virc_cc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 00b2ed93-e2c8-468b-aa39-bd77a2f3e4ac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aa2c90ad-56a3-417e-bfac-a16d52855861
+ - column:
+ name: uuid
+ value: a053db31-b6e6-4268-9d64-f3f26f630671
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: schemamanager
+ - column:
+ name: vm_type
+ value: schemamanager
+ - column:
+ name: vm_type_tag
+ value: schemamanager
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0137c30b-93c3-49cd-ac2b-eff8eeaae0c9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 48ecf111-2b9a-491b-9a25-55fb39117ea0
+ - column:
+ name: uuid
+ value: ef7ad35d-0f5f-4016-900a-51ed005ca693
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cognosccm
+ - column:
+ name: vm_type
+ value: cognosccm
+ - column:
+ name: vm_type_tag
+ value: cognosccm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0142d2b6-d79d-459e-a414-4a68e18d554c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d8e95546-60f7-4d74-9bc3-97326e57f9bf
+ - column:
+ name: uuid
+ value: d003593a-de80-4202-9a80-bc5338c679c4
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r8d0
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 014a9370-210a-491e-badb-2831f7ebc6d1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c9b52c32-2e53-47f5-9250-650d5380764f
+ - column:
+ name: uuid
+ value: 33befda2-c9fc-4b49-9202-393fb8130277
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 01984773-9b8c-4a9e-ac78-7a6715abea41
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 94a6c3d9-fda8-435a-9e77-4eff0258b7d6
+ - column:
+ name: uuid
+ value: 117022fd-d404-4d61-8d33-9fe539702eed
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: nems_be
+ - column:
+ name: vm_type
+ value: nems_be
+ - column:
+ name: vm_type_tag
+ value: nems_be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 019ee7d6-97f0-41c1-a9c8-ce753223c258
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 01eb2ef8-2331-4a95-bfe1-d3e4dad3cd4f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 81edb46d-046e-4011-81b4-35abe397885f
+ - column:
+ name: uuid
+ value: cfea6434-95f5-4de2-9823-4615e00f1aba
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 481942e9-104e-4def-95f8-6666d7c1ea69
+ - column:
+ name: uuid
+ value: 6050698d-2c49-4476-af74-e36f9ba3e436
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vgw
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: vm_type_tag
+ value: vgw
+ - column:
+ name: vm_image_name
+ value: vgw-base-ubuntu-16-04
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 037cd524-4b26-4609-8fd0-3aa61ed1a2e2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 03993dc2-e8ae-4b48-a5d9-33811fe820dc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 03a5b04e-ebb1-4d2e-bc69-d4f88706086b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd05c4b4-e316-4dfe-8299-e80171bf48b8
+ - column:
+ name: uuid
+ value: 9fa396db-273d-4fc2-90f7-05462023c744
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 03ac3cb1-60fc-4ae1-bd5a-68c478bf6a8e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3c0d2220-739d-4696-90e3-5ffd283c2b02
+ - column:
+ name: uuid
+ value: 3d4e2721-6f89-4bf2-89d7-64ed08942465
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ellis
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_type_tag
+ value: ellis
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 04080672-2d81-4f9d-a58f-78d4380d9a18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0447d25b-a3e3-4c51-809b-81a55b052bd4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0448c405-43f6-4514-8ce7-57f46ec47f55
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7d603e14-9f59-4948-964d-df8bbccdc467
+ - column:
+ name: uuid
+ value: 04d01856-ae41-487a-9919-b309a95309ae
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0471e477-09c1-43e2-a26a-7839d81475ee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1f00292a-0da3-4862-82c2-a606f9e2bf9a
+ - column:
+ name: uuid
+ value: ffa107f2-20ea-4264-8aa0-34a4dcd9e33c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0533df13-256d-4aa5-8123-3ed4cd067a00
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0540f0aa-408e-414e-a00f-f5fc603edaef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9cef0352-fbe0-47df-87d5-62ed44ba5608
+ - column:
+ name: uuid
+ value: d2990b48-bc98-492f-b5cc-963db16b5ee9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0561ec40-601c-41bb-bce5-04feae250e09
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 05d29ec2-ac26-4b6f-9687-9898c6c18910
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: facde21f-6dfe-47d1-beb5-003fae6a0651
+ - column:
+ name: uuid
+ value: 462efc3d-a1ca-4925-a982-1dbd8d3dfbaa
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: msrp_msc_b
+ - column:
+ name: vm_type
+ value: msrp_msc_b
+ - column:
+ name: vm_type_tag
+ value: msrp_msc_b
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 05d36951-3d07-4255-8058-5bfc65b62d38
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1ba0abe4-897c-4d22-a039-b6af2fea476b
+ - column:
+ name: uuid
+ value: f00fb687-7cdf-4fe7-aaf9-3836c793ffaa
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 05fda582-6802-4e21-ba32-610c7fb1d1b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55372be2-6074-4793-92b1-e0fe1afb08b7
+ - column:
+ name: uuid
+ value: d03e16a8-becc-435b-aacd-829f6e3150b3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 063ed102-0d00-4cff-8bff-880ed09ad584
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5fb94500-7c25-4e41-86e3-87e11738a997
+ - column:
+ name: uuid
+ value: 67079eb1-9fe6-4731-955c-e737ac75be56
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rpmrepository
+ - column:
+ name: vm_type
+ value: rpmrepository
+ - column:
+ name: vm_type_tag
+ value: rpmrepository
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 069ef0e7-87d0-439e-846f-097c5d64a94d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 06a1d072-4752-48c8-9c52-dfdd4c09c9e1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 06eb1491-11fb-4e2c-80ed-5f4ad8b83b18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 06f49ac5-7025-4737-bc0d-880371539b49
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0a288050-1f71-4ccf-8661-316720483150
+ - column:
+ name: uuid
+ value: 8ef01225-7484-4d8c-bd31-b7d45c4c8bec
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: qtracelb
+ - column:
+ name: vm_type
+ value: qtracelb
+ - column:
+ name: vm_type_tag
+ value: qtracelb
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 071a1959-8203-4e9d-8c2f-d3dd67076353
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1acc9e6a-8984-4cc5-8d72-3bfb793ed325
+ - column:
+ name: uuid
+ value: 83fd2e6e-3c8f-478f-a940-0bf3913d2cf6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ value: vdbe_node
+ - column:
+ name: vm_type_tag
+ value: vdbe_node
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 078e0007-2e68-4472-9506-d5910e167fa2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 079379c5-41fa-4acb-b058-dd762213f48c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d8ae042a-d48f-4d1c-963f-b928f9c5dded
+ - column:
+ name: uuid
+ value: b4ac350f-d421-4d7e-a45f-44f0b3dde082
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmsc
+ - column:
+ name: vm_type
+ value: mmsc
+ - column:
+ name: vm_type_tag
+ value: mmsc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 07be8d64-8e5a-4de6-96e7-41782560df6a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 08372faa-bc18-4211-9fd3-19e3841ddc94
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 08559203-1f1e-4424-ac5f-6ec24bb8bf6d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c4930be0-706b-4d8a-b062-6e5b4dd2af84
+ - column:
+ name: uuid
+ value: 0b6648c5-027c-4e26-98da-59bb62d30a23
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0863ccbd-cfdf-4f71-b8ef-e37a045aef7b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 08f086e2-a710-42e1-944d-ac8fa4118040
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 08f2b087-4b49-41ff-b4f5-a36c6d2cd92e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0a2882a0-eb50-4c05-a99b-97b6f4308620
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6af6139f-fdad-4b92-a60c-1e121b05bcaf
+ - column:
+ name: uuid
+ value: 8c85080c-5e9a-44ab-9a50-e2f7347abaec
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: uir
+ - column:
+ name: vm_type
+ value: uir
+ - column:
+ name: vm_type_tag
+ value: uir
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0a941339-667f-49b7-bf71-58f952cecbb8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cfc8c02a-5018-4b58-8216-87dd38c72bfa
+ - column:
+ name: uuid
+ value: edd9bea9-efe1-4c15-a415-f7ddc83d4bd1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0abe9a8d-2437-4d82-92e5-d8190a8e2240
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8dd6d443-245e-4836-b008-cffdd1ed7f92
+ - column:
+ name: uuid
+ value: 9db9362c-0fbd-4621-ab74-6571903dcd8a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0b221466-3962-42cd-b241-e08093869999
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 313d829f-d955-4489-8beb-d46dfd8a458d
+ - column:
+ name: uuid
+ value: 2f2bac38-753a-46c7-a4e2-6b781a84c3a4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0b390d3f-7089-45c9-8726-c69bdb7ee963
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0b552ace-2f72-4d78-8adc-3f6e7032dcf2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6e0975ad-7f9a-4dfb-b4b9-0bc7f42dc8b2
+ - column:
+ name: uuid
+ value: 0f294f57-03d6-4348-83ae-4ede8f9430ec
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: processing
+ - column:
+ name: vm_type
+ value: processing
+ - column:
+ name: vm_type_tag
+ value: processing
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0bc31a69-5e59-492c-a40b-e954d98b0809
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0bc7260b-0572-4a47-bd84-b7bdb549a64c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 47efe716-c94d-4d1e-9739-d90a0110f62a
+ - column:
+ name: uuid
+ value: 418c85aa-4f64-4cad-a106-c22bcee7316e
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0cd419ed-508f-4dc6-bcd7-a18787161255
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0d5f6296-2725-4ddf-a5f5-4ec2b2bfa2fe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6f46fe0c-e467-413f-98c6-45aef5b7e33f
+ - column:
+ name: uuid
+ value: 5a0d5695-bd83-423d-b9a2-c241528ecb89
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0d9e290a-d6ad-4211-a11d-18b4792297f9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0dd132b5-f92e-4171-98ab-f22fb7695ba0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0f284f86-fddf-49c3-9a33-bf0ede0a361d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0f34a065-f043-401f-b0ef-d33dd77eb1e4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 788edb40-2174-4722-8756-9c61b20484ec
+ - column:
+ name: uuid
+ value: e98433e9-6ca5-436d-aa17-4d7385ed99ec
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rdn
+ - column:
+ name: vm_type
+ value: rdn
+ - column:
+ name: vm_type_tag
+ value: rdn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0f4ca5e1-0f10-4550-a815-4f1a7ce05c32
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: feb4bb3b-accc-4396-8649-0898f4863d33
+ - column:
+ name: uuid
+ value: 203caf20-132f-406b-95b0-ef8a35112dcc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pcm
+ - column:
+ name: vm_type
+ value: pcm
+ - column:
+ name: vm_type_tag
+ value: pcm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0f61f955-e80d-43a4-8ce1-b74193595e95
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e33903e2-7bc2-4393-b185-87f5907539f2
+ - column:
+ name: uuid
+ value: 47157d39-6286-4037-88e5-2f616ff751bf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pcm
+ - column:
+ name: vm_type
+ value: pcm
+ - column:
+ name: vm_type_tag
+ value: pcm
+ - column:
+ name: vm_image_name
+ value: NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nv.c8r12d100
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0f6f72f5-c86c-4b79-988b-4c0b5f18ce9a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: '1'
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: inv-uuid
+ - column:
+ name: uuid
+ value: fe6985cd-ea33-3346-ac12-ab1214812345
+ - column:
+ name: version
+ value: version
+ - column:
+ name: naming_policy
+ value: policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: naming-code-1
+ - column:
+ name: vm_type
+ value: vm-type-1
+ - column:
+ name: vm_type_tag
+ value: vm-type-tag-1
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 10dc2bc5-8ab4-4477-930c-c6796781efd3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1139adfd-89e7-4f25-95a3-1c600ff48e59
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 113b3b51-2d7d-4c1c-bffd-cef0a2c56035
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 11955383-eca3-4375-b8ee-07897373db19
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0a83b10f-8eea-498a-83f3-7df8780a8f68
+ - column:
+ name: uuid
+ value: 8a74fa52-ab11-414a-92e2-5908d72f405a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 119ec191-89dc-492c-a713-fb45f5364cbb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 99fe50cc-cadf-403f-a959-f481234a167c
+ - column:
+ name: uuid
+ value: 2f95d643-f250-422a-9dcc-1b3c3f732525
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 11e735ff-de23-4a31-8e8c-c8af0cc37ed9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 11e7e845-7975-4e03-9eb1-b61c8a37f361
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1203cf96-76de-4325-bb58-0053f1c6ddb1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2ec4feac-d67a-4b9f-b95a-f9f65e3ad4e3
+ - column:
+ name: uuid
+ value: b875f1c3-0308-4f32-b87c-856d19293f96
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 12375bce-022c-4842-9321-dfedcf42a359
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 12b65d89-eaf3-4353-9810-d9d0848539e0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 12cee19b-3c7e-4a61-9c3e-123702c6a2f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 46ab3cd7-6880-416d-b8e3-a9f3fbf197cb
+ - column:
+ name: uuid
+ value: b246c2ea-905a-4707-b191-29c752b76a5e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 130faa79-9b52-456c-b21c-ad45c8bb9db4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 18f47678-e346-4149-96fb-ebe50cda4f04
+ - column:
+ name: uuid
+ value: 63cd6a88-45fc-4da0-b118-91641b9a2a9c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: TEST_server
+ - column:
+ name: vm_type
+ value: TEST_server
+ - column:
+ name: vm_type_tag
+ value: TEST_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 134626fe-118d-426a-82d3-fb0619fbc475
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 74cb4bec-db68-4888-9c40-5e26776541ef
+ - column:
+ name: uuid
+ value: c1ce217b-343f-4d43-a7b3-95ac392aced0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cm
+ - column:
+ name: vm_type
+ value: cm
+ - column:
+ name: vm_type_tag
+ value: cm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 13e3d5d9-dcf2-4a8d-bb66-5a2ea61f79ba
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 13ec94e1-b04c-4fd1-99e6-c982020e453f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c4e5fb37-2a68-4687-9f4d-939b6501fea3
+ - column:
+ name: uuid
+ value: acb904f1-c258-4e78-8d27-850c995d9fa3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 142e0921-694a-473e-b5b6-b974a4b5b0d2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 39fca8db-3cde-4c23-b61a-508c4d0641fd
+ - column:
+ name: uuid
+ value: 23fd690c-ceac-4847-b61d-a4621ea834ad
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 14fdd90f-1dfc-4227-9c88-28e1ed111b34
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 153c72a6-3ad3-410e-b0e9-b2b6a4ffa66f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 156f559f-0e61-4940-a0d4-d45639833b9d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 157fccbd-2462-4370-bbb4-786c9b2e0815
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ca34c00-47ad-407b-8b31-d209843f7a07
+ - column:
+ name: uuid
+ value: a6a47256-5dad-44bb-afd3-a3dcb58b6493
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 15a549ee-36fa-4775-9d22-e12cafb1cc22
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 936ae33b-9cbc-429f-8517-6c540f884fef
+ - column:
+ name: uuid
+ value: 19236636-177c-4ae5-b8bb-fcd5a29fefa5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 16412ab7-109f-4c1f-beec-8a447255290d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f596ba90-dab9-4be9-8002-e8ecd3906d5f
+ - column:
+ name: uuid
+ value: ab087889-fb19-4973-bb9e-2fd1c25be0b1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cognos
+ - column:
+ name: vm_type
+ value: cognos
+ - column:
+ name: vm_type_tag
+ value: cognos
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1669c0c1-40ec-48dd-825e-ec50916968f0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2bad24a8-c657-4b83-9418-86f2384b9b8e
+ - column:
+ name: uuid
+ value: dac6007d-c20b-46ed-8d7d-fa8fab319e4e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 168fe2e1-4cd2-4d4a-b647-2045d10b878b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 16b581a8-30b8-4cf2-a199-70e0b1311c18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 16b9c577-9176-4df4-8e74-39fce3c4ae92
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a334ea62-22d3-4b33-8cc0-c84b77344a30
+ - column:
+ name: uuid
+ value: 8e01babb-d2c8-4e4d-bd63-e139c3549599
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ldap
+ - column:
+ name: vm_type
+ value: ldap
+ - column:
+ name: vm_type_tag
+ value: ldap
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 16e20667-0700-4aa2-882d-cebdbe650ef1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5a315346-8d3e-4a2a-b4ff-a466fe54366e
+ - column:
+ name: uuid
+ value: d1c62b46-7a23-49aa-81c1-574694a4f33e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 16f679a4-35c3-4485-9ede-4042dfe1c201
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0cb480f6-dfbd-4af2-84b0-52b212694070
+ - column:
+ name: uuid
+ value: ec33342f-14ce-45b6-96d2-ac4403ade6f9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1782c476-7f94-4c01-9921-02459a6ce3cb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fa8bd3a6-bfc2-4c0f-b8c4-a21fc121e18a
+ - column:
+ name: uuid
+ value: cfe2bb58-8c31-4395-b632-ad82f3f24c3f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 17bd986c-d4ac-42dd-9618-0073427967a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 17d5c405-cfcb-4abc-96e4-a0e6fce100cb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f1217a3a-8fcc-46bd-a331-c120e9044260
+ - column:
+ name: uuid
+ value: 0016a9b9-436a-4969-a629-78b379bad2c3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 17e57524-24b7-4e8e-8425-3ebe49a04ca8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 18981d0b-5d2c-4021-b7d3-a81f8beaa830
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 18ca2316-4d64-4295-8797-cc7599c0be17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 195f76ea-8256-4a07-b525-b40267c37b21
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1b48a3d5-9f28-4e02-80d9-14fccc9908f3
+ - column:
+ name: uuid
+ value: 333d1cc0-954d-40b2-a4ab-a1cc74c3f3c7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 19f675fc-c648-4a7f-94d9-f24fcb47bdc9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1a4909ab-73ee-4088-8cf6-45a99d076991
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1b8c9fc6-be3c-4570-81da-97e76a7bafbb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1bf49c1e-80a7-4039-877b-79da95053258
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 473fb54b-ed67-4725-b7e3-674e96c55649
+ - column:
+ name: uuid
+ value: 37f1531b-a288-4c49-8c02-3ff17212c89e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1c0632cf-4a76-4b17-9194-b294dc1ed460
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1d63438f-8683-481d-af5c-8a440ff6c86e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2ee82e43-6879-4dbd-b720-4feae04a788c
+ - column:
+ name: uuid
+ value: c1b4c88d-e538-4c18-a712-19832db42ed7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1dd16655-f74c-4484-ada0-656484588424
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1ddb4d75-211c-418e-a50b-cd7242ecaa19
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1dfcaa44-2b6f-407c-aa6f-89d12c850a13
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1e262dce-063f-464a-87d6-f7d82910a1c7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5818d233-caf4-4825-a7bb-144bbd731329
+ - column:
+ name: uuid
+ value: b8c28cad-e97a-4ee8-bc64-119b373cf98f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1e3d921e-1df6-4bfa-9a94-939586fc9843
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1f57716e-b0a0-4e25-bf81-7b8c9c1a2593
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1fc2d7f5-036f-4a77-b840-83277e76f13c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6a8ef342-f873-4fa6-87fc-c8315cf1e670
+ - column:
+ name: uuid
+ value: 8ff1df7f-8c97-40fa-9f86-a4a40e0b5e3f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1fc481ad-15cc-4bff-8e32-d4c59bd4e2e6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: 7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935
+ - column:
+ name: version
+ value: '11.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1fdb9130-1cf4-4c50-b72c-3379e4cf0efe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bfc3b33b-6bac-49ef-8d48-f732937bb75c
+ - column:
+ name: uuid
+ value: 3d9006dc-21b9-4ce8-924c-053757611565
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: msrp_msc_a
+ - column:
+ name: vm_type
+ value: msrp_msc_a
+ - column:
+ name: vm_type_tag
+ value: msrp_msc_a
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: '2'
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: inv-uuid
+ - column:
+ name: uuid
+ value: fe6985cd-ea33-3346-ac12-ab1214812345
+ - column:
+ name: version
+ value: version
+ - column:
+ name: naming_policy
+ value: policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: naming-code-1
+ - column:
+ name: vm_type
+ value: vm-type-1
+ - column:
+ name: vm_type_tag
+ value: vm-type-tag-1
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20111295-e578-4039-9adb-5a8443a8a86c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8a8a0fb6-8a01-492c-b131-a6894f41cc74
+ - column:
+ name: uuid
+ value: f57ee0f6-6f98-4ec9-8b04-b03fe0bf6f21
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 202e7744-8c3c-4915-b654-15488c602bd9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20449785-a2f2-4c89-858f-b22a27835136
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20a556fe-312a-41ab-9a03-374063d23aea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 89fe5872-8061-42f6-a707-6bb8323e3055
+ - column:
+ name: uuid
+ value: a24dd75f-2b9d-447c-aa9a-76e2c1e9a6fd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sprout
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_type_tag
+ value: sprout
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20b7262a-15c4-4644-8ebe-7921d6c18123
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20bd05dc-f26b-49c7-8738-f4109b1177d4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1b9d7f98-60f9-476a-bd30-dc200fa89f93
+ - column:
+ name: uuid
+ value: 0318d0e9-d938-4c4a-9157-848e5564f717
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 21352862-eb18-4867-8ea2-d524f2f98647
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d37e1483-cec0-4311-9601-ada3bf5bedea
+ - column:
+ name: uuid
+ value: 2cada292-0bc6-428a-af64-7ec0d28faf02
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: bono
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_type_tag
+ value: bono
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2153c384-b814-4630-8756-e1477228dcb4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 779329c0-9056-4e55-a2bc-4512268f462e
+ - column:
+ name: uuid
+ value: cd30fe8f-6a81-4b02-89c9-38f463a58e3d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 22245ea3-605f-4a9f-94b9-cf39ef7f3c0e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2f21b65a-7513-4bf9-895a-6ed159057121
+ - column:
+ name: uuid
+ value: 04ada531-a377-4488-b8b2-76da20fee49d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2262746d-fac4-490f-8866-a540a6058cbf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2296b1d8-a70c-479e-b8b8-b8a7de9ef44b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 22c63259-70c3-4d19-8f75-47ebef517be4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6993657c-6ea7-4554-90ab-9cc4b01fe929
+ - column:
+ name: uuid
+ value: 347947f2-eec7-42e5-9b2c-46ae2fa38ccf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 22d1c351-6d11-4184-81ac-af81d4de101c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2b60f774-37ee-4121-b28a-8883b20a0fb8
+ - column:
+ name: uuid
+ value: f028b735-c52b-42a7-ad34-bc51d14037ad
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: d2ice
+ - column:
+ name: vm_type
+ value: d2ice
+ - column:
+ name: vm_type_tag
+ value: d2ice
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 23b0fda7-3008-41df-a3c0-b25dd54a3f77
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 240d4bc3-8350-4882-abc6-efa6d477fbff
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 25160afc-3d87-461e-9bcb-5c87cdd14858
+ - column:
+ name: uuid
+ value: 7434e326-25bd-461f-b5b7-2be901a9dfe7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vaaa
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: vm_type_tag
+ value: vaaa
+ - column:
+ name: vm_image_name
+ value: ubuntu-16-04-cloud-amd64
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 244632dd-0eaf-481e-ac16-3c6952434b7b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: af6d9190-974e-4227-86df-ffd517887f61
+ - column:
+ name: uuid
+ value: f69d1c42-f423-4e8d-90c8-afee2f435651
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: TEST_server
+ - column:
+ name: vm_type
+ value: TEST_server
+ - column:
+ name: vm_type_tag
+ value: TEST_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2461f70b-edaa-487d-8bab-1646c4f24515
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5d9c5b7e-bab1-4409-921e-333ecc9f76a1
+ - column:
+ name: uuid
+ value: ad09505d-a09d-47f7-8612-4852046b6ae5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vweb
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: vm_type_tag
+ value: vweb
+ - column:
+ name: vm_image_name
+ value: ubuntu-16-04-cloud-amd64
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 256c73d2-1aaf-49fb-82a9-c5236f139e9c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e2a1695a-4738-45a1-95fb-6b9876d72989
+ - column:
+ name: uuid
+ value: 64eb97fe-401b-44b1-94c6-890e017ba2f9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 25d3be48-fc4b-453f-96de-97e07e6c18f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8a496682-3285-41a1-9a6a-35da76bfeecd
+ - column:
+ name: uuid
+ value: 24dae213-c503-495a-8086-0c4377d5ca70
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 25d55f9e-a84c-49d7-89cf-7a8c8eea8bae
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 260143db-a9ff-4415-bfb0-c35a7b7063af
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 262cbb0f-c6d4-4cf0-9281-1f53c8ffdbc3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4f452541-6af0-42b1-b297-c8f308475a56
+ - column:
+ name: uuid
+ value: dc573479-521a-4ad5-8b6f-8c13b87fc091
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ value: vdbe_node
+ - column:
+ name: vm_type_tag
+ value: vdbe_node
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 27606886-b4ec-48c2-8a55-ba7e551b6b4b
+ - column:
+ name: uuid
+ value: 2ff33bb7-c53e-4829-a7b9-4c698f2d464c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 269a1dc1-96f2-4b0b-a8d6-0b322cd1f7b0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 26c479ff-a252-4510-950c-e8ec996e4f0c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 16646ff5-a6e1-4ffe-b865-0b60d651a858
+ - column:
+ name: uuid
+ value: 823ab43d-b194-43f8-8b02-2146f4b6092e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 27bdc15a-5ed4-4529-97ee-0c1960e5528c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 27f4e949-3263-45d3-a592-20eb8492556c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8e15b51a-5e4d-48bb-8c09-d7a8949ca333
+ - column:
+ name: uuid
+ value: 89678cef-a1b3-4844-beba-4b2c4a34e132
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: qloader
+ - column:
+ name: vm_type
+ value: qloader
+ - column:
+ name: vm_type_tag
+ value: qloader
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 27fde274-45f9-499d-9d7e-7a9196c680b2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 281f4841-4a67-40a8-ba1d-c1971f82ffb7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 284c3ef2-99b1-45c8-a5f7-14e33ee08676
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a8f2f314-d7a8-41f3-9752-a6b22fb15a57
+ - column:
+ name: uuid
+ value: e49cf9e1-a63a-4f9d-9825-06c2661bd33c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 28ed6793-760d-4b33-bf48-367adcbe26fa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51eec557-e371-4af9-b6ab-d09e7ca5d904
+ - column:
+ name: uuid
+ value: 13cf44eb-7dae-48e5-bbee-e8b3bf26e9ef
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 28ff8b3e-486a-4f15-bcd8-5bab711d5c33
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00c0b60a-689d-4840-87d8-4c23ea4656a0
+ - column:
+ name: uuid
+ value: 9cf253eb-b103-422c-a432-f1ee3f7538c3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 299426a1-ece5-4fbe-b449-2cfaa1788c98
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fd2c7c18-aa25-43c6-940d-f496d8e0d3d8
+ - column:
+ name: uuid
+ value: be447d18-0340-4f9c-937f-d742dc8b961e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd_server
+ - column:
+ name: vm_type
+ value: pd_server
+ - column:
+ name: vm_type_tag
+ value: pd_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 29f53689-0d3d-431b-99cc-57fc002f5baf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2a811181-e613-4ec8-95d2-893d4007cbb9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1f3512c6-94f4-4609-905e-267e95addf83
+ - column:
+ name: uuid
+ value: 4696c1b5-3781-4413-b3b0-14082a51da0b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2b44c9db-28e1-45aa-b297-a4511d5317fe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8d111ea9-21e7-46ed-84cc-8cd1f6f5c0f6
+ - column:
+ name: uuid
+ value: 99abdfab-fecf-4332-a080-7889760e3cdc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2b480094-9d68-4a65-966d-af1d89349143
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 915c8ffc-c334-49b2-938a-0d8a6e85f3b0
+ - column:
+ name: uuid
+ value: da4f670c-9a6e-425a-9d0a-791953e8664b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vweb
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: vm_type_tag
+ value: vweb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2ba8635a-b069-4787-910a-9b57043244ab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2c4cb9db-c093-4c7c-ad3d-fae4ffa17486
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 17ee4aa2-cc4d-48d9-8cf0-4680ce60ee76
+ - column:
+ name: uuid
+ value: f5a2ab55-33a0-4a91-8315-cf3e44aeaf00
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: bono
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_type_tag
+ value: bono
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2c5c862d-8e31-4559-bf66-4a396e847b2b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4363ec32-ac12-46b5-a681-da39c9b937ab
+ - column:
+ name: uuid
+ value: 071040aa-79e1-4451-b0f5-582e8e59efda
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2dce2d53-9cd0-40c8-87c7-4318165c4016
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2deb1937-f627-42ea-97d7-ea6df8f525c1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2e708833-1f3d-4653-a0bc-5328b73bbbf6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0cb480f6-dfbd-4af2-84b0-52b212694070
+ - column:
+ name: uuid
+ value: ec33342f-14ce-45b6-96d2-ac4403ade6f9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2ea04d4a-84ce-4641-a879-544477584f72
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2ea978ac-2761-424b-af1f-c0707ccdbfb1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2f381c15-0fe9-4c88-99b7-5e2f165a38db
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2f6e792a-63b3-45a4-b9ae-cc38b4301bb2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2fc889a4-d5a0-46b9-a502-6411db0c4a1c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2c4a5c4-d809-4d19-9c02-308b34e89794
+ - column:
+ name: uuid
+ value: 65d44361-202b-4aeb-bf5d-ba318fc1f34d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 30145f1d-140a-452b-95c9-0530a5ece13d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3018cfbc-fa08-4dbb-b2a1-195267d79b1e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 303059e0-a0b5-463d-8e96-5c85ff0cfc46
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 686d2704-0892-41aa-8b79-b7360fe6903e
+ - column:
+ name: uuid
+ value: e4ac3c72-2437-48fd-907b-6418b691f798
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 30969396-fa5a-4faf-9163-db6484e54e59
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f8248051-b29b-424d-b87d-6df6d1a23ab8
+ - column:
+ name: uuid
+ value: 73a85ed6-0b6b-4ae2-be9b-3efc011650e3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 30c35db4-9682-4f55-92d4-142079dbc5a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 10421357-a2b3-4a7a-b82d-125b2805fa5a
+ - column:
+ name: uuid
+ value: 56324cee-8dfd-48f3-aae8-3101be93cdac
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 30c7d426-fd01-4ab1-9a87-3c53bcd23d88
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 05814c22-d7bb-4d14-93ba-d2079f2666e7
+ - column:
+ name: uuid
+ value: 84bb300f-48cd-461d-82a8-f24b0e54cb3f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 312a26bc-b721-4ed5-a402-be0e502c675b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8d5acbcc-77b0-43ee-9775-8f4cd8fdf949
+ - column:
+ name: uuid
+ value: b50b4639-baf7-4472-9acc-fb576bc007e1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: xsa
+ - column:
+ name: vm_type
+ value: xsa
+ - column:
+ name: vm_type_tag
+ value: xsa
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r8d0
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 31608b19-4efc-4620-a248-61147f9ec8a9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 31b53e81-28c3-482e-842c-0ebd21053b59
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 84e0b247-cb3e-42d5-abe8-a8b43ba2236b
+ - column:
+ name: uuid
+ value: a75552e8-3868-41ab-bbca-12ed6bbf62e0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 32365da5-1a59-424d-8397-4fbce1bae4fa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd03d850-e91b-4ed0-bde4-0e721e76d013
+ - column:
+ name: uuid
+ value: 1ee5d912-91db-46cc-9735-0b14d9463f7f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 32b1b5a1-e05d-447d-a5ff-9c247bfdbc72
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d94bdc77-144f-4b50-a351-aea5cbc9de4f
+ - column:
+ name: uuid
+ value: d81064dc-bf74-44c5-afcc-e17916a915d1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cm
+ - column:
+ name: vm_type
+ value: cm
+ - column:
+ name: vm_type_tag
+ value: cm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 32e76c6c-5676-4ce2-96df-e8b8adde7d42
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: daceed99-fb22-4518-b962-f7582a83f899
+ - column:
+ name: uuid
+ value: f2de251f-55cb-44de-ae59-febaf171201f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sprout
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_type_tag
+ value: sprout
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3303c8ea-2e16-4a3f-96b7-fa98132560e6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 196c64ee-ec75-445f-990e-08c6c9635298
+ - column:
+ name: uuid
+ value: 16da0427-b36f-40ea-bb63-a68bf9a84272
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 332fff76-b67a-4970-82e9-4e6db5fc0e36
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 334add61-2118-4e75-8db3-5674849b5320
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 33d693e1-61cc-4517-9eec-56fb0572c93f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 348e928a-e3d1-4faa-ac35-a1e2d6768fee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 356e5394-90ca-4dfc-8ade-529077b727e4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55372be2-6074-4793-92b1-e0fe1afb08b7
+ - column:
+ name: uuid
+ value: d03e16a8-becc-435b-aacd-829f6e3150b3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 35726559-7135-405b-9691-47ed50bcbc19
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55ef56c6-5f0b-420e-a787-64944a746d89
+ - column:
+ name: uuid
+ value: 99e3482a-d42a-4ffe-aeb7-9e9ada03c8e7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 358b84ab-f1af-4c42-8c81-c92801eff167
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 36102a1b-ce2c-46b9-967f-30318db23a32
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0d54acdb-fefc-4d60-a429-ef351dc2a1f5
+ - column:
+ name: uuid
+ value: a10ddd8c-4366-4394-8854-6bf7b0d0014b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3665d859-180a-4314-beac-8f1877f2697e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9645e0f8-e537-4f9d-b137-8d16251f7138
+ - column:
+ name: uuid
+ value: 4ff38825-5106-43de-971b-90b46d2e4e26
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 36eea4ac-8f88-4323-942d-7446fbf9639a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 372ee369-1d49-4aa2-acc0-1ef806a4fc03
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 376d659d-528d-41f7-be51-39ef57834ec8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 377825eb-e83d-49b6-81ce-c99a0d30064e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c5e5ae98-7ad9-4a05-ad58-18329ff34ec9
+ - column:
+ name: uuid
+ value: 50b3a4f1-928a-4736-95b5-7b040d4a631d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3794aacd-6535-41c8-af1c-02e300ccf50b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9c9a8369-9e89-431b-9e73-9d483b2cf7e4
+ - column:
+ name: uuid
+ value: 8d2e734d-882e-4998-9c8b-413e2b9d1241
+ - column:
+ name: version
+ value: '0.1'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 37e7c1c1-d886-47e1-90a8-f907fcb312c3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 849f2d15-7a03-4a2f-b408-275afe6f890b
+ - column:
+ name: uuid
+ value: ce4c3d39-a19b-4dd1-b7ae-9985cb39fcc4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3827c05b-6c06-42c8-8725-b95353f97d9d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 27c16c65-2ecb-4c7f-bda2-96aeb31e5ae0
+ - column:
+ name: uuid
+ value: 8e7dcc7d-9aab-4509-b3c9-81ef4cdb2ea5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ value: USP_IECF-IO_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3850fdff-11a8-40b8-8bc5-f589c42a6702
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 60b620de-1ff3-46d3-9ae9-672b47ef0b27
+ - column:
+ name: uuid
+ value: 75b70257-ee09-4481-965c-f3397849623c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvre
+ - column:
+ name: vm_type
+ value: vmxvre
+ - column:
+ name: vm_type_tag
+ value: vmxvre
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c1r16d32.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 38f47dc0-dc33-4375-98a9-0a9d37c9ad4c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ce213aac-bfac-462f-804e-a33091598aad
+ - column:
+ name: uuid
+ value: d65d9977-6053-4fba-b75f-a2fa315cd9b8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmn
+ - column:
+ name: vm_type
+ value: mmn
+ - column:
+ name: vm_type_tag
+ value: mmn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3982125d-dfc4-487f-862f-66e1e7f78d17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3bf2d8e-a28c-43a8-9d68-a08a39502faf
+ - column:
+ name: uuid
+ value: 38b82ce2-7b45-4f4b-bb2c-bdaec51fc8a5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3a05ede5-360a-4f5a-8cad-072560dd4406
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1451a853-2fc7-4858-b1b4-72fe23395a6b
+ - column:
+ name: uuid
+ value: 4a920796-cb97-4bd4-8724-c2e6155a86e4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3aba87d2-cc84-44fd-bc43-190d750f1e69
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55372be2-6074-4793-92b1-e0fe1afb08b7
+ - column:
+ name: uuid
+ value: d03e16a8-becc-435b-aacd-829f6e3150b3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3b08d0cb-3f1c-4178-8dab-bf7b85782f00
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 09f0165f-9d58-461d-a297-fbb3988f47ee
+ - column:
+ name: uuid
+ value: 73486661-ca17-4cd1-a1d9-114ad4174341
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3b1b59a6-d272-4ece-9dfb-ca87f0f793cc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3bb96b94-bc38-47ef-8202-f4c1f4b27beb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3bca6d26-d1c1-4ec1-9bb0-92ac6ec98dc0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: 7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935
+ - column:
+ name: version
+ value: '11.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3c0ebca7-bfe3-4a8e-8167-93a7878c9bef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 07e7ca7e-fca2-4131-a73e-51884ac6f4a6
+ - column:
+ name: uuid
+ value: 6618af0c-d1e5-4813-ba39-228f2ad99128
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3cdfd81c-3bb5-424a-af61-ae38a0131317
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3ce98db0-0653-4d31-b065-a61a1959ac5f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3ce99b7c-9515-48fe-bb98-62f22f2fb005
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5ec38b95-96cd-4cb1-b90a-484f4b13bd1a
+ - column:
+ name: uuid
+ value: c1374c40-adeb-4371-9d71-209c0315aef8
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3d1957d7-1eb4-4df6-8469-74bccd0bd11e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3d370a1a-2529-4c8b-be72-e4bf088c8e8a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e6645581-0cc6-4e7d-a4dc-42124c8e364c
+ - column:
+ name: uuid
+ value: 4b91bd36-feea-4a40-8304-609285032caa
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rdn
+ - column:
+ name: vm_type
+ value: rdn
+ - column:
+ name: vm_type_tag
+ value: rdn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3d8d3b5d-9c34-415b-8c74-7f0a9c7bda51
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ced31a1e-b4ad-4fbf-aefc-1a3701f16bc4
+ - column:
+ name: uuid
+ value: b302fc76-1708-4ef9-a217-231620ab4154
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: nems_fe
+ - column:
+ name: vm_type
+ value: nems_fe
+ - column:
+ name: vm_type_tag
+ value: nems_fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3e3471fb-6ca1-49a2-abe6-40e7a864f767
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3e37923b-b8cb-498c-938f-a19449908f52
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bb8ff02b-6404-4e81-96e7-33999ed0fff3
+ - column:
+ name: uuid
+ value: 62c39097-93b8-4d9b-9fa2-6c3e0d36d729
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3f777214-6a28-459c-962d-8ae02f45da94
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3fe28b6e-6631-463e-8044-5062f2ab133c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 39b2008a-1fd8-4af5-90cd-5bf098bd1123
+ - column:
+ name: uuid
+ value: ad7c0ec9-fddf-42d6-8c21-999a83ea0eb5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 40183eae-faec-4e45-bfd2-c16565cbc034
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 40821124-8d95-4f55-91e2-608e72ffe6d6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 21d87e48-2aa9-4f8d-9daf-268b31363a31
+ - column:
+ name: uuid
+ value: 35a3e997-8208-4040-a4b3-0a6d39e198cd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmsc
+ - column:
+ name: vm_type
+ value: mmsc
+ - column:
+ name: vm_type_tag
+ value: mmsc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 40a486a0-8420-4d2e-b2b9-fdd5d757f60c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 41185191-dbed-4382-a9ae-f0e847fec9ff
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 83429bf9-49f1-4187-a5ad-afc329a84e76
+ - column:
+ name: uuid
+ value: ce422e74-7e58-4464-8a54-61e21f3ca7e5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 416b75a7-32ea-458c-95fe-c14854d618ca
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2cd8a808-e1e6-4d28-b6e4-fc29094f26b1
+ - column:
+ name: uuid
+ value: 06223028-84b2-4b8e-b579-9ecffa9d66f0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 41d27492-bfe6-4588-8f7f-d280636b667e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 41e0211b-d990-4d09-845b-b98c9bed3f07
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 41fb28aa-44f9-48ee-9bb2-d4db999ea4b6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4209ff94-bb09-4a7e-a8cd-ef7691d20faa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4258c5c9-19f8-4942-a820-db7a646d9310
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c5eaa410-5dcb-481e-88a4-44434fc9c58c
+ - column:
+ name: uuid
+ value: c3b635e7-4bcb-4537-b1c2-edc9ca45ac3b
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 428b0e01-a072-4d21-924e-2f692fec7277
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7a1a7790-bbcd-4aa3-9c84-345ca1c4b52b
+ - column:
+ name: uuid
+ value: ffcfccb9-8813-4d8a-9f29-a6cb4dd4e754
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ value: USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c2r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 42ab4b8a-5046-4b5b-bfff-8503dc43f257
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1dde5066-ec47-470d-ac78-f741f61885ec
+ - column:
+ name: uuid
+ value: 0ec3151a-dab9-48ae-89e8-f1a88b73fbf6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 431f242c-8b94-4f4e-873b-6546f1ed60a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2d2ffde-5ed8-44ae-9471-f8bc0a51a89f
+ - column:
+ name: uuid
+ value: 0b882f5f-b364-4603-85b5-e8cc94a11fe0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 437d3bd7-2fff-4642-8a87-5396aa90128b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4440906c-a7e7-478b-a637-812999219fd1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a2a4b5bb-4e1e-4eaa-b5df-ce972afb1566
+ - column:
+ name: uuid
+ value: ab437c3e-7fb6-45e5-b8cd-f1af9fae9ac2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vgw
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: vm_type_tag
+ value: vgw
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 449e1e81-848e-45f7-a1f0-14aa9bde238b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 457d2c5f-1899-43b0-85b3-caf5866a6065
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: eaba5eb8-c480-47dc-b046-9ac6fc886077
+ - column:
+ name: uuid
+ value: aa524dcd-f38a-4f07-8288-af7cb10569d7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 466c9e3c-6a64-4ae8-8900-07dd5f2f1473
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4682caca-c19b-4f1e-a8c2-b68ac4fc9c5f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5a315346-8d3e-4a2a-b4ff-a466fe54366e
+ - column:
+ name: uuid
+ value: d1c62b46-7a23-49aa-81c1-574694a4f33e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 46e79c61-9476-43b3-b1ee-7b39c8569531
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 46e86198-aec6-4036-b38e-c1cbd3e7e349
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 223edb5e-cdb3-4a32-97d0-46bb57c99ad7
+ - column:
+ name: uuid
+ value: bf3c23e2-0ee4-4e4a-a7c5-e0e6b6625706
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pps
+ - column:
+ name: vm_type
+ value: pps
+ - column:
+ name: vm_type_tag
+ value: pps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4795998e-8cd5-4b8f-ada9-fe9488392da8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dce46f0a-e270-4779-90f3-83857c9f8798
+ - column:
+ name: uuid
+ value: 3595004d-f5e3-435d-a8f4-5f1cbb5b1aee
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4858ced6-3fe9-4803-91ee-a10a69239496
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 16ecac80-118e-4826-bc18-9bd527126b7e
+ - column:
+ name: uuid
+ value: b3e8dc25-ba0e-4ba6-b301-b66a05043040
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 48687b06-df68-4180-a0b8-bafda155ea4c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2e5549f2-9d83-4916-9fd8-fc0acf7c8a33
+ - column:
+ name: uuid
+ value: 80b6e3e8-1193-4fee-ba25-c20c01517d63
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ralf
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_type_tag
+ value: ralf
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 48e19b0c-73d4-43c1-8172-a603cc6a0a27
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d2fea408-a0ac-4074-8ff1-3ca271aa981e
+ - column:
+ name: uuid
+ value: 814192e9-ff9a-4d44-914f-b0cc37fca163
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homestead
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_type_tag
+ value: homestead
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 48e45c5d-e7b0-4dfb-9d40-40d122ad1c44
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 49036c1a-217e-405d-bf5e-08c9a46d57d7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 493be6dd-c307-4d84-bee4-2ed50e044f54
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 069f2359-0ddc-4aa5-b240-25ee8ea545c9
+ - column:
+ name: uuid
+ value: d901e0a6-31b7-47d5-8648-e78881c54c48
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vbrgemu
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: vm_type_tag
+ value: vbrgemu
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 or vbrg-base-ubuntu-16-04
+ SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 49414e75-93e9-4f8f-bc79-49b6655bd4e5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 230bf8f6-f204-450a-af6d-9cc65fea4f76
+ - column:
+ name: uuid
+ value: 7c19492b-dc31-4319-8213-7b9ff791d314
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rdn
+ - column:
+ name: vm_type
+ value: rdn
+ - column:
+ name: vm_type_tag
+ value: rdn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4aa42ecd-6cb4-4759-8fd3-6c2fae4a2034
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 179a86ce-e6b0-463c-bd4b-03595729976a
+ - column:
+ name: uuid
+ value: f18ee363-2b6f-4408-8a93-1dd8ab5ffb42
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ value: nfc.naming.policy.robin
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: nfc.naming.code.robin
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4b922450-c9a6-4533-9d24-92f1b1f84160
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 80ebc47e-1f35-4ab8-a36d-2328a4a6985b
+ - column:
+ name: uuid
+ value: d6a00b1f-e12c-4145-9842-0ef6fc4fd69a
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4c0e88fe-b367-46c2-ad07-fe7a8cde6f30
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4c6c958d-b1b4-4aef-a768-0618a5650527
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 583301de-2a2e-40cf-98bb-3018be595871
+ - column:
+ name: uuid
+ value: 26eaff4c-c6e0-41ee-b02e-27cc1208ed73
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: configurationrepository
+ - column:
+ name: vm_type
+ value: configurationrepository
+ - column:
+ name: vm_type_tag
+ value: configurationrepository
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4cedb213-a6ed-443e-8f8e-67cef4c87e47
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 58ce4658-3fcb-4b6d-a04e-43655908f50c
+ - column:
+ name: uuid
+ value: 732be459-eaa5-4263-923e-21d46599740b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ssc_b
+ - column:
+ name: vm_type
+ value: ssc_b
+ - column:
+ name: vm_type_tag
+ value: ssc_b
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4dfadd90-d618-4c8d-b47d-60efebf6d01d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cb2ab141-3a2b-4ca8-9c5f-d19ff7a6bf5a
+ - column:
+ name: uuid
+ value: ebf0f8cd-8a8c-4348-bfaf-543238315697
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4e09e0f7-6b42-41f5-b197-2ecfd4877987
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4e7f65c4-94aa-4826-b401-c7f75d7a5e97
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3bcaeab7-d987-4faa-abb6-0ca59f1ac661
+ - column:
+ name: uuid
+ value: 4af66211-80b1-44b5-b68c-212c4921295f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4eb18412-12f7-480f-b232-5a4c4cb2fade
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4f2f5f08-8a0b-4828-be27-5ff1a641ed6a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4fa2c6e8-bd95-4440-af00-390e8fffebc5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 85bb6bc2-cd25-4bb2-98a4-28cc47d270cb
+ - column:
+ name: uuid
+ value: 73717171-1684-4aea-acfd-7abc8533fec3
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 50432d50-169b-4592-93c7-7df340829872
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 88404161-33c8-4225-9b11-934b2686b005
+ - column:
+ name: uuid
+ value: f3264aab-8f59-4942-a118-2663e445e055
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ value: Dev2DevNfcFunction
+ - column:
+ name: nfc_naming_code
+ value: pd_server
+ - column:
+ name: vm_type
+ value: pd_server
+ - column:
+ name: vm_type_tag
+ value: pd_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ value: Dev2DevHighAvailability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 1
+ - column:
+ name: max_instances
+ valueNumeric: 10
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5051c268-7bb5-4d56-895f-8f829087025a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b95401c8-5c5e-48b7-9839-d581cfca5935
+ - column:
+ name: uuid
+ value: 4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 50f47cdf-1c8b-4843-b331-94927f239a6d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9c283f37-5516-427f-b230-37fc356852b6
+ - column:
+ name: uuid
+ value: 95a81e90-cd52-4adb-a31a-957691fb11dc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: smp
+ - column:
+ name: vm_type
+ value: smp
+ - column:
+ name: vm_type_tag
+ value: smp
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 44874be0-cc1d-48de-aed3-d34b8be81ec4
+ - column:
+ name: uuid
+ value: d86fb88f-4dd9-413a-8f09-2c6638fd9b14
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5165ea8b-7460-4879-b6da-5a9bfc4380b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: be545d42-bfa1-45c3-8c74-2febed777c45
+ - column:
+ name: uuid
+ value: 4c5e5e35-19a6-4551-935e-44c6a4468b1e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvpfe
+ - column:
+ name: vm_type
+ value: vmxvpfe
+ - column:
+ name: vm_type_tag
+ value: vmxvpfe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c20r24d25pin.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 518db694-1c7b-458c-abbe-b9676fdd68e0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 51b414f7-8f44-42be-94bd-8e83c7bebb6e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 51d4e18b-ee2b-4f40-8812-4904d310e500
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4ddeea35-c041-472a-853b-40b8974dd9ca
+ - column:
+ name: uuid
+ value: 140b8590-3d21-474c-9cd2-72d71eae93ac
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 521d3ae4-ad2a-4479-8b47-2b8e2f265a8b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 527637d4-3f1b-4453-8a73-63be37d3ff3f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5418661d-07e1-403a-8caf-03f5442f2308
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bb073a19-69ce-42cb-9dad-9fd2f10869f9
+ - column:
+ name: uuid
+ value: ff8c866d-e5b7-406e-80fc-3767c4e095c9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vaaa
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: vm_type_tag
+ value: vaaa
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 542331c9-6001-4760-a7d6-c2946a68e5aa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 54325dd2-d646-4f36-bb61-c1657771bbef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5453e348-8c2a-4ae1-9c78-13861de6ae4f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 547126cc-f04f-458b-906a-ecb8463a058a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8d111ea9-21e7-46ed-84cc-8cd1f6f5c0f6
+ - column:
+ name: uuid
+ value: 99abdfab-fecf-4332-a080-7889760e3cdc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 54b6166f-1926-4542-899c-fb4aa0a3254b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8a33e6d3-ba02-4004-a057-d8deefc6a217
+ - column:
+ name: uuid
+ value: 1941965b-d36f-493c-90d9-cfe1085ac402
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 54d33de8-a3a3-48d4-9616-7976d894162a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 54e94ecb-84f1-45d1-88a3-235e6a229ad3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55dc46be-b1e3-453b-acf8-2e104f92d5c0
+ - column:
+ name: uuid
+ value: f9bd14f0-a4eb-411f-b3d9-6599336dca01
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ellis
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_type_tag
+ value: ellis
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 54e98abe-743a-400d-809c-095644d92dd9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e2a3b48a-a1a7-4993-b606-ce90436c2453
+ - column:
+ name: uuid
+ value: 1da48e1e-d2d9-42cb-8aee-20761d3cb257
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5543defe-8d08-4cde-badb-fc68eade5100
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e113d30a-8a62-492a-837f-735a4eb88db9
+ - column:
+ name: uuid
+ value: eb45f98e-31d1-4c8b-afca-7412defa9056
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 56079609-0b08-4307-8f61-2bb1545aed00
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 565090e4-6b5f-4690-8743-19cb7716fa8c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 565a8a1c-4ccc-49cb-a3dc-5f8f8ce72c51
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6b67203e-d718-4b4d-8fa5-3308b9d6d909
+ - column:
+ name: uuid
+ value: 07ec6c1d-5336-403a-a41c-950cb68956f5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: prx
+ - column:
+ name: vm_type
+ value: prx
+ - column:
+ name: vm_type_tag
+ value: prx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 56f74777-a946-46d2-8ceb-c7f0d124894c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c5f1a3b8-fd2a-4938-8ff3-734f6049d0b1
+ - column:
+ name: uuid
+ value: d522e5ca-5bb6-4e51-8ca6-99b59fd789ae
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5790fb74-2ac3-4340-b69a-08bf3f3d126b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1c2ec7cc-2558-40a9-a5de-23ccca42f2ed
+ - column:
+ name: uuid
+ value: 2717a36a-1b5e-421b-8794-65c7a92763a1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 57ce1650-9b4d-4a45-bee1-b4e841fadfbb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dec68ab1-24f5-4d83-a37b-80c716bb4c31
+ - column:
+ name: uuid
+ value: bf2cab5b-a968-48bd-b4bc-65914bba461d
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 582e18c1-689b-4516-9855-7fab1a489b18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 58cf0015-fdca-4c3f-98bb-53c863716fd4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59330f0e-f45f-4111-bf21-a4bed5d4b30d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59698c21-7013-4e48-9f7c-bc6f9ea2562a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59817abe-bbed-4aeb-a1c1-5cb60b043543
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59b22558-fa49-4c10-af6f-a38ba93fbc5c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 72308d7a-5d2b-43d0-ab9d-1839fae15b63
+ - column:
+ name: uuid
+ value: f2c093f3-2f6d-46dd-880d-2831569cdaa9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59cc25b6-e415-489e-aeab-e5edde982605
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d1167766-829f-4022-8592-2b0edfb6069e
+ - column:
+ name: uuid
+ value: 184c9f75-7577-4996-afbc-1ccc5419e015
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: smp
+ - column:
+ name: vm_type
+ value: smp
+ - column:
+ name: vm_type_tag
+ value: smp
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a119889-9974-4a98-92d5-96a715f7c24a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a661196-c961-4286-9198-564347fea738
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0d87f028-90dd-4b2d-8f76-87a4b4b55b64
+ - column:
+ name: uuid
+ value: d9d2dace-1ec5-496a-88f7-63dc218e1d99
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: itc
+ - column:
+ name: vm_type
+ value: itc
+ - column:
+ name: vm_type_tag
+ value: itc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a6c9ad0-e611-4ef7-92db-b40e420b1cb7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a181d0ff-11f8-4818-b98a-e14690db64cd
+ - column:
+ name: uuid
+ value: 9baf379a-2c58-4788-9dcf-4a769dcd28a5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a81616f-3b85-47f9-b3a6-43ddc9d705d1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2b39f3e1-0dce-4786-9d9b-ec9613ce350c
+ - column:
+ name: uuid
+ value: 96f733e6-9ed1-47e1-a77b-f1cabbecd142
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a953500-41c9-43a1-bdab-48321b482c79
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c117b652-dc84-43b7-b30c-12b21891f47a
+ - column:
+ name: uuid
+ value: 95d3013e-11b2-4bdf-97ba-6e4a5a7c4227
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5aefee46-a414-488f-b648-cd02afaa7b02
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5b3263c1-71f0-4dcc-815c-9ebdfcb40a7f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5b453243-b3cc-4177-a218-c722216fa867
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8cf7115b-cc5d-4143-b53b-96135982c0be
+ - column:
+ name: uuid
+ value: 3aa0e405-eacf-4a54-b254-f95dd19a305b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5ce95a94-dbbc-4648-a7c3-deea7e7997aa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5d160958-74af-4327-96d6-d4bebe5e0465
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 23bfbe35-8d8e-469e-8da5-9d17dddef5a9
+ - column:
+ name: uuid
+ value: 27daf0ce-39f6-4e3a-ae3c-d92bb253aa45
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sbc_a
+ - column:
+ name: vm_type
+ value: sbc_a
+ - column:
+ name: vm_type_tag
+ value: sbc_a
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5d2ec4aa-6e7f-4841-b67e-7b31a4e1858c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5d9f98ca-8553-4dd0-98e8-a6fe6de2ec94
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 744574d4-1102-4955-8e71-9ac4ab301bbf
+ - column:
+ name: uuid
+ value: 08c98244-6d94-4c3a-852f-b3d05e371df1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5dc18cc5-64ee-4f43-ba4d-cc24a6305425
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5df465c0-9806-4790-8602-43ee2ffbf546
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5e482da4-33c4-4601-bae7-d4b05436e58a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5e910229-fbc5-4347-910c-e293d63934f7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5eb99594-a29e-4943-8820-fd63de08170d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 10df99f3-77ae-4e5f-b80e-f7f151a62d0e
+ - column:
+ name: uuid
+ value: a3c9b528-7bcf-41b9-aecc-6c77073cbd99
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ralf
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_type_tag
+ value: ralf
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5f309a70-35f3-4b2b-9f06-71c70b39f3a2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cdb897e2-b3e0-4365-91d9-a603527fb52c
+ - column:
+ name: uuid
+ value: 50148aff-51a7-4251-879d-54dd039086ae
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5f6f8dd5-f078-4a8a-a596-8b18c81d4370
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8d7b528f-ff3c-49d1-b56e-51ff3a826de5
+ - column:
+ name: uuid
+ value: 94989b71-b412-4f3e-8823-27e9f9fb8ea9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: bono
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_type_tag
+ value: bono
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5f859628-9f96-48a4-a2d7-a97c1148990f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5fd8bde5-aa4a-4e3e-a9e3-f874eddc00f0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5fdc1d98-154f-4d04-9d09-5fcb40b8c0e3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86093520-4a0a-4427-b1b7-1432a8ec0716
+ - column:
+ name: uuid
+ value: a8f3626b-bc8a-48fd-8c24-859943feed1c
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6006ec20-3a36-4b3f-ab75-a1fcfd5147ea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 605ae21e-0b6d-4cd0-93cb-393313b4bbd4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c7d8fb73-f7c9-4dca-8c23-ddf11c84b8cb
+ - column:
+ name: uuid
+ value: ea5877e8-c188-4908-bc35-225bb4d4fb6c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 60636dd9-1339-4711-b1bd-2c7de1e7791e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 612f98b5-39cc-4cba-8424-d889d44c68cb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6163e3b4-ad26-4b16-a3cd-d0f3a3c66214
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a43132b6-23a3-457a-ad2b-0c2059ce06c0
+ - column:
+ name: uuid
+ value: e424e686-9ac7-4e68-b68c-ca7e546e427d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6167622f-b602-416a-9bed-c38b157726f8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 61a24df6-cde4-4d83-ae28-ed1f60e85381
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4a31d00f-a377-4273-b4a0-e862cb2ef56f
+ - column:
+ name: uuid
+ value: a36bb94e-b4b4-4ee1-a890-8a95d3c75f50
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 61ac4ca1-9516-43c8-ab0e-d869e3d5d011
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6a7dd5e5-40d7-4d13-a761-e1ef754456dc
+ - column:
+ name: uuid
+ value: 704735f4-3289-437b-9d87-2b2ea1a06a1b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 61c7a13d-8dbf-4ed8-b00b-728f48ffa8b7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 625434ec-f721-4a37-a8cb-e0e901de4103
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ff1b44a-41d3-469f-baf2-7f102d47feba
+ - column:
+ name: uuid
+ value: 1d4f0506-bace-4fa5-b38b-3c31ae5e857c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 62d977c1-b230-49b3-8be1-4b5872f5e3df
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 629e5ac3-c75d-475f-8262-f53f6f761c2f
+ - column:
+ name: uuid
+ value: dec80f28-f12d-4ade-be99-d3ebf7635ecd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: virc_cc
+ - column:
+ name: vm_type
+ value: virc_cc
+ - column:
+ name: vm_type_tag
+ value: virc_cc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 63227786-48c6-4e70-a229-64a4dd79d8c4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e3bd0944-6f66-4b36-9baf-2e3492e4d1e1
+ - column:
+ name: uuid
+ value: 4f473ee3-5ec3-4b9c-a615-6a942c4729d5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 634b1226-63e1-4a84-b9a1-e68a1403efa9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6383c740-0dc8-4937-8c0f-70d77fe2ee17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fd3d83d9-e375-4d27-ad44-99c84b5a5c26
+ - column:
+ name: uuid
+ value: eadafe4a-071c-4279-a898-d00d3dbda63d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mts
+ - column:
+ name: vm_type
+ value: mts
+ - column:
+ name: vm_type_tag
+ value: mts
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 63e225bc-c72e-42d0-95b4-9f9f77139c18
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00db22fa-171a-42b1-8292-c6029717cdac
+ - column:
+ name: uuid
+ value: 42d0b694-64d5-4846-8ee0-c7a1d1531d50
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 64088775-2a93-41a5-bb53-3206f9c36afd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 64508b50-a134-41d4-a957-ba40718dc250
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 46ab3cd7-6880-416d-b8e3-a9f3fbf197cb
+ - column:
+ name: uuid
+ value: b246c2ea-905a-4707-b191-29c752b76a5e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 64fd6f6d-aa6d-40bd-a883-5b8960e0f64d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 652259eb-1b57-4f6e-8d22-6420a8261938
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8816c6b0-7b78-4485-b986-23b66b5bb73e
+ - column:
+ name: uuid
+ value: 24c53a82-f4d7-40a7-a0a8-105be2bdd393
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdhcp
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: vm_type_tag
+ value: vdhcp
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6522a054-632b-419c-b88d-e56a1b5236ed
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 65794907-4255-48fa-b710-86a806e23e99
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b051c80d-d816-4c2d-a208-61410c68f6e2
+ - column:
+ name: uuid
+ value: 81905a04-15f8-4f7a-8a24-3848cf419ee0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 65ade596-5f15-4115-a3a3-e214cc95a129
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 93b69c42-b5e8-44c6-a9ac-10ce60054dda
+ - column:
+ name: uuid
+ value: 4659e19b-dec9-4ff7-a322-78ba480f1767
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ppd
+ - column:
+ name: vm_type
+ value: ppd
+ - column:
+ name: vm_type_tag
+ value: ppd
+ - column:
+ name: vm_image_name
+ value: NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nv.c8r12d100
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 660e35c0-74cf-4c71-bc28-7bf9a769b5b9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 661515a7-71eb-4b65-9a67-4c3fe8915404
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d273feaf-7e39-45ab-8572-bf19f546b06b
+ - column:
+ name: uuid
+ value: f7001d42-6a1e-4ca6-a82c-b075f6981d93
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd_server
+ - column:
+ name: vm_type
+ value: pd_server
+ - column:
+ name: vm_type_tag
+ value: pd_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 66518250-5925-45ac-bcf4-086bb8656b66
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 667b77ee-a50b-4889-9c7d-46d8cb934a63
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 16646ff5-a6e1-4ffe-b865-0b60d651a858
+ - column:
+ name: uuid
+ value: 823ab43d-b194-43f8-8b02-2146f4b6092e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 66bc8dbf-26c6-4b12-9b87-c29b14cb1bac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 989690d2-4811-44c0-8e0a-67d1a5097cba
+ - column:
+ name: uuid
+ value: 2a23c13e-632d-49c3-8a0a-958e3d7dbe9a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 67194296-d115-467b-99c2-bfd50d9e175f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d2c2c2ac-fbea-4a36-a8e6-96ec4906036e
+ - column:
+ name: uuid
+ value: d97a6a1c-7887-44ee-8188-aaa3a839462f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homer
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_type_tag
+ value: homer
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6738c484-287c-4ecf-8095-0e38f0691482
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 677cf9d5-c18b-4fc5-a36c-4324dbcf3852
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 59f360ec-d2ba-4b27-aeb0-d35618afcb76
+ - column:
+ name: uuid
+ value: 890f9c2c-828e-49e2-9c20-b2a77355149e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6784843b-6ee2-4ea9-9245-2a9400ab9288
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c9945dc9-208e-48d3-a482-96925abe89e9
+ - column:
+ name: uuid
+ value: f2f35403-065e-489b-8b9a-c5c46dd76825
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 67a8fd2d-c4fc-4982-8680-7cceaad13cf6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2051395-8c0c-4879-8256-955cba5e96ad
+ - column:
+ name: uuid
+ value: 50c05360-95f8-40bb-bd10-d495f7d6dba5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: bono
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_type_tag
+ value: bono
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6835d254-f980-4d84-b997-f2437090fd3d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 68386bcb-a633-4732-9777-7b997a448e5e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 686bdd0b-788e-4744-9e7f-32869db281ce
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6873c4ae-14a8-4ecd-9c04-24e20eb2542c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 117e6aac-885f-4ff8-891b-8e2696ce4964
+ - column:
+ name: uuid
+ value: 1de8217a-db29-45e5-9f43-2edc6c9d85d2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvpfe
+ - column:
+ name: vm_type
+ value: vmxvpfe
+ - column:
+ name: vm_type_tag
+ value: vmxvpfe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c20r16d25.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 68d5f2b0-5ad7-488e-9803-43aeeab09759
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 694b2e6d-83ba-43e2-b405-d947e94dda5e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c3ecc32f-38c9-4583-a513-4a8b65b21a83
+ - column:
+ name: uuid
+ value: dca61bcd-2102-4003-b433-9b7a9d01dd90
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pps
+ - column:
+ name: vm_type
+ value: pps
+ - column:
+ name: vm_type_tag
+ value: pps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 69a32834-078e-48c3-8bd9-3125da2489b0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 69d27369-08ed-4765-a489-968e1fafadd7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c91280dd-70e8-4ba6-a477-810629137b3a
+ - column:
+ name: uuid
+ value: f338dc0b-5575-4c38-b7e1-a9d40010de27
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6a44b6b2-f7fb-4e2e-b8a1-e1342275b86a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5b7dd098-162f-4424-952e-cd0a0cd39447
+ - column:
+ name: uuid
+ value: 87cc7625-fc88-4fb5-98c4-be288c1cc25a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: TEST_server
+ - column:
+ name: vm_type
+ value: TEST_server
+ - column:
+ name: vm_type_tag
+ value: TEST_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6a6754c1-9f43-4cf1-92f3-044b6147ddac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6ac5b9e8-f995-4d12-bbcf-d76ba61ae8b3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6aee8f5d-b063-4564-813a-8b671a3c5f97
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6b1675cf-f93e-428f-80e3-5ec838c73324
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 554d02b7-0922-42f1-b0ad-1acc91f1380d
+ - column:
+ name: uuid
+ value: 920984a2-1ac6-4e29-b566-5a10a72c51d9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6b8f77a4-c715-4a2d-92d7-d8a96bddeea8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55372be2-6074-4793-92b1-e0fe1afb08b7
+ - column:
+ name: uuid
+ value: d03e16a8-becc-435b-aacd-829f6e3150b3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6b9dff87-0c04-4a10-a918-9b627e9ae0b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2972ce9f-526f-471f-aabf-df99168287c4
+ - column:
+ name: uuid
+ value: f2609a4e-8bc3-4659-bef6-bf77667b37ca
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6bbd2dc5-5272-4012-a92f-f51387e1bed4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6be7deec-f93d-48ab-a6c4-ea844da22d0f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0fb32d3d-d264-4bc6-95ab-77933bcf65b6
+ - column:
+ name: uuid
+ value: a77c9408-2cf0-4881-806b-bc2fd223018c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6c227dc7-acf3-41e3-9d0a-7aded6164c33
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6cb2be72-7210-492e-9f4c-4647b54d6613
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b0444e96-4474-47b8-947f-65bc6d95e9e4
+ - column:
+ name: uuid
+ value: b7e37bdf-728a-4411-9fae-d1f789de3004
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vth
+ - column:
+ name: vm_type
+ value: vth
+ - column:
+ name: vm_type_tag
+ value: vth
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6cf1a3b9-ef74-49e3-b682-34e57f79e22a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6cfdeef0-8962-4d62-83a1-b11020d72aeb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 11aa3eb9-b80e-42d9-b2f9-378e4da35112
+ - column:
+ name: uuid
+ value: ef6656e8-3029-4125-8d06-747429518439
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6d810590-688b-4419-aa25-04f0127a8286
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6e3b40fc-e28b-4158-ae96-fcdb901cb7f4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5bc33647-ba84-4ae5-8b0d-d310c512193b
+ - column:
+ name: uuid
+ value: 3dced1eb-8c2b-49b8-9136-e7d912815e2c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6e5b8879-0cba-4804-b80c-85004fb8c3ef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cb6c8aef-d755-4d35-b1f5-c5d07aefdbd3
+ - column:
+ name: uuid
+ value: 8005d90d-acd1-42f4-b7e5-f2c25324d3d0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: timesten
+ - column:
+ name: vm_type
+ value: timesten
+ - column:
+ name: vm_type_tag
+ value: timesten
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6e5cb98b-a24e-4b1d-9504-ef472ba3b16c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ddb9b833-5751-4672-8b25-bcc78eb0d447
+ - column:
+ name: uuid
+ value: 9f1aca89-2f9a-4043-9118-fcff91c4593d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ppd
+ - column:
+ name: vm_type
+ value: ppd
+ - column:
+ name: vm_type_tag
+ value: ppd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6f39ab69-27f8-4def-b53d-906d272130b3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5d5282b2-1126-4a8a-aa21-f5b949d07ca0
+ - column:
+ name: uuid
+ value: 89eacbb2-ccaf-4120-b1d3-0291917bbf71
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6f644aed-ee1d-4a4d-b2ed-a9c09a30aa7b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e22db314-cbc4-4855-9e9c-9fb503a376bb
+ - column:
+ name: uuid
+ value: de35db61-91fd-46b7-b123-02f528e055fc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6fc2dc9a-1667-4035-b472-9fcbb22e42b2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 702036e1-6270-4e3d-b2a2-8d6218dd325d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 70fb6c69-f9bf-4a60-8104-b5d097578c4f
+ - column:
+ name: uuid
+ value: c6ac5abd-3f77-4c87-9a14-86c959a35dbd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7040e1ad-9d82-42ac-a024-9ec2a454d8a7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 176d464b-2c2a-4cd0-9c2c-9421c6636631
+ - column:
+ name: uuid
+ value: 02302049-3007-4fda-9e34-1302757b65a0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7047a19f-6e58-420e-b83a-fc5c5ca371a6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5de3f65a-9a57-463b-8f57-42307d9b27f8
+ - column:
+ name: uuid
+ value: 900b6e33-ce13-46e8-b9e9-56d21e4a4668
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 70575d9f-6067-447f-81f5-ea0f08ffdb1e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b53cb5a0-ed82-440d-b202-d827469c1b5b
+ - column:
+ name: uuid
+ value: 15082ced-72ff-4a76-9b75-20f103e50ca5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 708364f6-83e5-40dd-a3cd-1903cda658f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e77e0faa-786a-40dc-aa43-4f303fef11ee
+ - column:
+ name: uuid
+ value: f50a5360-1a26-4258-a1e7-99fe806e1dc6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7098128e-a6d9-4225-90ab-beac14b82ac5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 70bf02d6-28ae-4bbb-9c37-0057017a15c9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bf3d2003-d439-423c-9389-09e2021f116c
+ - column:
+ name: uuid
+ value: dd83104b-5f15-41c2-8738-6d0bfecf8b71
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ellis
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_type_tag
+ value: ellis
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 70e9a7f0-ce7f-446d-9606-2396e83503f2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 71c83b70-fd19-4961-910d-0715abe8cd7c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5a315346-8d3e-4a2a-b4ff-a466fe54366e
+ - column:
+ name: uuid
+ value: d1c62b46-7a23-49aa-81c1-574694a4f33e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 722602f7-f147-41fe-b72b-511af9552933
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d5697262-b1cf-4b31-ac95-94fb30481b33
+ - column:
+ name: uuid
+ value: 978dd3f1-84f1-458f-963a-52be9d81a3a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: prx
+ - column:
+ name: vm_type
+ value: prx
+ - column:
+ name: vm_type_tag
+ value: prx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 722b2624-586a-421f-9f11-97e442dd5806
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 725798c9-f501-4a90-9bc9-baba93016b34
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ec1d2810-17b8-43a6-bf78-dacc26dd89a0
+ - column:
+ name: uuid
+ value: c726cf5a-f50b-42d8-89a6-3c55a21c1109
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: par
+ - column:
+ name: vm_type
+ value: par
+ - column:
+ name: vm_type_tag
+ value: par
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 726dd182-74f2-47a0-bfcd-fb1cea8d089f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: faf71359-153f-4159-bc4e-290a85807d00
+ - column:
+ name: uuid
+ value: ade4b591-aabd-415a-84bb-e986d6ae635d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 72c1a9fc-804d-4316-b6b3-bcec6e1cdcdd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 730589ed-f654-4727-805f-d845fae5ac9a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 73909ae0-5388-4994-9eb1-47b334f23d4a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 73c626ff-5b74-4f4f-a13a-a0998fa197e5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b2a5cfc0-a21e-47b6-95b1-d303f0b834a1
+ - column:
+ name: uuid
+ value: 698a7342-8f09-446d-8115-a511d2b77dc7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 73ea2af6-ada6-44a5-b9dd-921a65c3e3e0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7083fedb-430a-41bf-bb94-0eaf8b33fb30
+ - column:
+ name: uuid
+ value: 39ff5503-11dd-4c6d-bf5d-1e1621cbf563
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 740d504a-2e21-430a-8354-11304c0cb493
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 743a580c-a23c-4a21-a578-905d5c32d263
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ae4b9316-37fa-469a-b39e-951b1e0684d8
+ - column:
+ name: uuid
+ value: 43c4a39a-5f99-4cd3-80e1-288de3cf7be7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ valueNumeric: 1
+ - column:
+ name: max_instances
+ valueNumeric: 1
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 74a491fb-98e5-4988-aab4-173d018a29c8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 44add117-31e7-4e66-8088-d338f2a25dd5
+ - column:
+ name: uuid
+ value: 55f758dd-7bde-44a1-969c-82953fc9623d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ralf
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_type_tag
+ value: ralf
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 74c7e2a4-6625-4fc8-8a60-02c0e72e0955
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1636f12d-c286-43d3-9473-b9723d5795e8
+ - column:
+ name: uuid
+ value: 0531806f-4fed-4888-8f9e-bee67ab71ed0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 74e26dce-9df9-41bd-a224-37ee65fb2884
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 74efb08c-7d76-4955-abe2-131f26c7c35b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 75019b6a-8890-4a7d-87ec-35b64d18a34c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 75192ff4-b321-4ac2-a3d6-d734fc8a7d56
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 752db263-360a-481f-8613-5205e3755d17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9793e8ae-82fb-4225-8cc8-ad0fa8d0532d
+ - column:
+ name: uuid
+ value: 03996460-8c0d-42f0-abd9-96f2fb388fb2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 754b4842-29a4-4559-9695-21269097b1ae
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 75855b5d-2b59-4763-905d-da64b66f4867
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 75999c1c-01ee-471c-905a-e4b895b01026
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4c65d534-a3d8-4e43-97b8-9220a27ef727
+ - column:
+ name: uuid
+ value: 54e5eda7-baba-485d-9979-1cff464f4881
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvre
+ - column:
+ name: vm_type
+ value: vmxvre
+ - column:
+ name: vm_type_tag
+ value: vmxvre
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c1r16d32.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 75fabac4-56d8-4976-899f-0119543fd2b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e3f1a8aa-c1ac-4d38-9be5-d234d5c93d23
+ - column:
+ name: uuid
+ value: d35dbfd1-1c84-430e-ab65-252e47668116
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 76040bc3-a498-468f-978f-6d4e7b9281ee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 29a93f90-907b-48ec-a34c-b9aa916f748a
+ - column:
+ name: uuid
+ value: fa90882f-9b77-49fd-8f59-46d15df379a2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rdn
+ - column:
+ name: vm_type
+ value: rdn
+ - column:
+ name: vm_type_tag
+ value: rdn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 767a2fb6-d382-4aac-bfac-b47c69cf8409
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 01071060-a604-4bd6-a228-2b3aebab1eb2
+ - column:
+ name: uuid
+ value: 9b00b55f-c016-438f-9195-00a2d000a0df
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: scheduledservices
+ - column:
+ name: vm_type
+ value: scheduledservices
+ - column:
+ name: vm_type_tag
+ value: scheduledservices
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 76800448-f19b-4834-a0ce-65df373e6433
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 65f27cb4-bb17-48a1-96da-1317a1a97214
+ - column:
+ name: uuid
+ value: 280e581e-35ef-45c5-ad23-9f9db4bfadf1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homer
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_type_tag
+ value: homer
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 76b1cb79-11b3-4ade-867a-287368c711b0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c8935a10-d331-4cc3-8a16-3193dd459224
+ - column:
+ name: uuid
+ value: 189760d4-5b9e-4287-b306-d27fc9cd083f
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7764f563-3f27-42ac-8cdb-481f64969cbe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7775a765-9048-446f-b876-e0bdf8c4989c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 81d23e7f-8cc6-49f1-b736-96eccad8103a
+ - column:
+ name: uuid
+ value: 3b4e6f89-966e-4cb0-85ef-e8eee34b37dc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 77812b13-4db0-4d86-abf6-a53f04bcdcfc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1c59c549-70fe-4a9d-ab0d-b65f29d6065c
+ - column:
+ name: uuid
+ value: dccf95fa-281b-43f9-a0ed-cc4bef6df649
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sbc_b
+ - column:
+ name: vm_type
+ value: sbc_b
+ - column:
+ name: vm_type_tag
+ value: sbc_b
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7876ab13-7ce1-4f13-b63a-366e7499c74e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 76f85d22-025c-4d9e-89b1-0711f5cb09c5
+ - column:
+ name: uuid
+ value: abf7707d-0ed7-492f-8edf-436cd01f10cd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 79aa3ba0-0a65-4580-a6f7-e6670578458d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4df3b2bc-23aa-4f2e-8a66-19b86f4d248b
+ - column:
+ name: uuid
+ value: 057c1236-b166-4ac8-8067-c18901bf4e0c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 79b7c82d-4cf7-489b-a75c-0d55d1f2cc7b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 79ce1cd6-854f-4c93-b3b0-1d0372d4a03c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7a105b19-b89f-42e5-be0c-cf27b891f97f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a8c5d8d9-7115-44f5-a3a2-6482bbbc8906
+ - column:
+ name: uuid
+ value: 2a228b84-405d-4c59-bb1c-351893a473b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7b276e5c-e8fe-4057-9422-91eb3def50b3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 10421357-a2b3-4a7a-b82d-125b2805fa5a
+ - column:
+ name: uuid
+ value: 56324cee-8dfd-48f3-aae8-3101be93cdac
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7d1c65c2-059e-4883-b28f-799f5dae4329
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7d3af2a5-4d58-4f65-80c5-e9f56d68e374
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 57b11c42-ecd8-46d2-95f8-8157f4eec30d
+ - column:
+ name: uuid
+ value: c7e7d4d9-8674-424d-856e-3ae81adfb9c5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homestead
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_type_tag
+ value: homestead
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7d90d5f1-df81-4a1f-b6d0-ec1237ec0ecc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 559e09d4-8cd8-477e-ade1-56d12cc7ec89
+ - column:
+ name: uuid
+ value: 16e20c1a-fc9a-48b8-afa5-bfa59dbacc05
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vvig
+ - column:
+ name: vm_type
+ value: vvig
+ - column:
+ name: vm_type_tag
+ value: vvig
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7dd7e5c9-4337-4ce0-8fb2-ff26f0a3ca52
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7e59838f-0274-458f-a34f-9b91d79c3e1c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 671e38f2-c1f1-4112-bcb2-e2300efc794d
+ - column:
+ name: uuid
+ value: c1075235-d9c2-4a8b-8215-7e3ccb168ac5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7e943e8a-c651-47be-9e27-630b9efa5940
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7eff938c-6dd7-4bb5-a39c-b7935329ee2d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0cb480f6-dfbd-4af2-84b0-52b212694070
+ - column:
+ name: uuid
+ value: ec33342f-14ce-45b6-96d2-ac4403ade6f9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 80322740-def3-4b97-bc68-74735d1ac282
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6eb9f47d-23c5-4f36-a5be-49be4c168623
+ - column:
+ name: uuid
+ value: 6be1b41b-c7b5-4d18-bdbb-ab1784f2392c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvpfe
+ - column:
+ name: vm_type
+ value: vmxvpfe
+ - column:
+ name: vm_type_tag
+ value: vmxvpfe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c20r16d25.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7609a0fe-38fe-478c-b46a-62ac6d7861aa
+ - column:
+ name: uuid
+ value: 76a8998f-41e7-4699-b31e-1dc3e052989a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: ubuntu-16-04-cloud-amd64
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 80a6176c-fcb5-42ca-a738-3fa40ea2660a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1bcebed2-1f21-4264-b163-931211b1bf26
+ - column:
+ name: uuid
+ value: 883a1cb8-43ca-4a52-b6b3-225255514bcb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cognoscgw
+ - column:
+ name: vm_type
+ value: cognoscgw
+ - column:
+ name: vm_type_tag
+ value: cognoscgw
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 80ca15af-4b70-4ee7-be37-0b1de73051a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 811e1edf-aa75-4d07-b98d-f47ccfa3ae35
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 078b52a2-53d1-4d1b-8465-05beb27dd991
+ - column:
+ name: uuid
+ value: cd8a79b8-4384-4018-b8f2-0be19981c206
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8127a732-3cba-4644-b86f-98327b512373
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 81d694d8-7253-400b-8310-a2d6489a523e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 81f47a35-0ed3-4df8-ae79-70dffcda63c3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8297192b-fb85-4459-aa83-15f19d3140b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 829fee2b-5317-4793-8c4f-2ac8de1b73c3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 83c21766-f7b0-4c8c-a3e7-143c5469019e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 10421357-a2b3-4a7a-b82d-125b2805fa5a
+ - column:
+ name: uuid
+ value: 56324cee-8dfd-48f3-aae8-3101be93cdac
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 83ce6e22-8cec-477c-b750-a37a14ae5450
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ca5310cc-a0df-4f90-9775-d0a8741a1587
+ - column:
+ name: uuid
+ value: a417848b-ff41-4399-9d70-cc64a27fa576
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mon
+ - column:
+ name: vm_type
+ value: mon
+ - column:
+ name: vm_type_tag
+ value: mon
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8439b3d0-35bc-48ab-8e13-6c08022a5a9d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 859d4704-b610-4a2b-b112-000e403e823b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 85fdd64a-9f2d-4f27-a4ab-78f1a3a15200
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 86238ad4-5842-4d03-af1c-2f2ac40a6123
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 72308d7a-5d2b-43d0-ab9d-1839fae15b63
+ - column:
+ name: uuid
+ value: f2c093f3-2f6d-46dd-880d-2831569cdaa9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8767130c-3c4a-41df-b78d-16d674949746
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 87715b73-66ea-4e22-8b92-d6130a757d96
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ef8e9f97-1c75-47a0-a3f3-f2e932a44b40
+ - column:
+ name: uuid
+ value: 5b9af18a-e42d-436f-b61e-08d55d6f3050
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: apigw
+ - column:
+ name: vm_type
+ value: apigw
+ - column:
+ name: vm_type_tag
+ value: apigw
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 877a120e-1d41-4f74-865c-8a9d32b7f00c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 87c8ce73-2771-4ac1-b592-1d0fdb0806f6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 890593d3-885d-4919-89da-838fa12b4790
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7afbfe3b-a909-4682-80d3-f5a1a57713ac
+ - column:
+ name: uuid
+ value: 83458031-84c2-4d06-b977-53fe9b5d8100
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 891c94d3-bcff-4d5f-8a92-f1ef951fd9c4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 895bba6a-2e3d-48f9-9e93-7a3de18b703f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8ab47c0f-a4c5-43c3-9ebb-6dba37f4c576
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8ac0cb3a-dfb9-478b-96ab-c5ff0abb9609
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00648ac2-2381-4235-843e-882d30c6f7b2
+ - column:
+ name: uuid
+ value: 7982cd91-807d-48cd-a3f2-0c40777b3df4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ value: NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r48d100
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8b3798b4-65d1-4032-a2b9-83b3708945bf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6685b9d7-ae66-490a-8967-520549f7d6e5
+ - column:
+ name: uuid
+ value: f4c18fb7-ea8b-4e89-82e7-26525c528079
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 84dfff0d-74df-4782-afc9-8a902db20c89
+ - column:
+ name: uuid
+ value: 621eac8e-ade1-4d21-86a4-1a66caf964db
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vgmux
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_type_tag
+ value: vgmux
+ - column:
+ name: vm_image_name
+ value: vgmux2-base-ubuntu-16-04
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8be6b1e3-cfbb-4f62-8820-067bc784585d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55dd4bcb-e217-4253-9412-46c3db9b87fe
+ - column:
+ name: uuid
+ value: 52f53983-82ba-4069-9dbe-30a18514a879
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8ca7da2f-1cd5-4493-ab82-805f48d8bd71
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8da61575-f78e-4170-9b19-ebb14fb6c211
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 686e6906-6dad-42e4-836d-b01dfd8dcd3b
+ - column:
+ name: uuid
+ value: 050dd517-57da-45ad-86c8-d6c2d9cf742b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e4a567c-3a73-49c2-95a9-2b092032ab10
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 801f48a5-eb2c-49a2-a03c-4a3175bacbc3
+ - column:
+ name: uuid
+ value: 4fddcad8-91f9-48cb-902b-b05fcd1fb98b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e5d1a2d-9cf9-4988-961a-2e95772656d0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b95401c8-5c5e-48b7-9839-d581cfca5935
+ - column:
+ name: uuid
+ value: 4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e666420-f2c8-47ab-b593-ab4bd748460c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fd0b5273-f01b-4129-8a20-447567d7c370
+ - column:
+ name: uuid
+ value: 94bcc5fb-18c9-47f3-9bc1-db73fba3c210
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e7289ce-c299-4ab5-8be7-245ef7b410db
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e80f851-fe0b-4363-81b8-f7bd0e59016b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8e8a56fd-db66-462b-9e06-81e507a74a36
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8ec1d032-e5eb-462a-b96c-40bed1028f51
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: efcc4117-0c1d-43fa-b80b-1f34712021bd
+ - column:
+ name: uuid
+ value: cc772cf5-fc52-4cbb-8b6b-a58da7e40abd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9066cc10-a5a1-4f0d-9498-7ea314e836ba
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 767cf039-9261-4efb-b63b-1f48a3391e74
+ - column:
+ name: uuid
+ value: ed19a0e7-2486-4c67-bbbb-01514efb4dac
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9112fca1-6b0f-4f7a-9d1c-ed930ca86ffe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9166ff2f-23cb-4028-97e5-dc591fcfef3c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e3f1a8aa-c1ac-4d38-9be5-d234d5c93d23
+ - column:
+ name: uuid
+ value: d35dbfd1-1c84-430e-ab65-252e47668116
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 919ae940-5485-4270-9bb2-980213db6b95
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 851441dc-e28f-47d0-b36b-11fc3729d20e
+ - column:
+ name: uuid
+ value: 90eb0836-f116-43b8-ba3a-83ca89ca84bb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 91c98964-347d-48e9-851d-57e22c4dddea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 91e52c46-6dc8-4535-b1db-f1477ecfcaee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f61424d4-acc4-42ae-8a41-03a0bc098132
+ - column:
+ name: uuid
+ value: c2039665-e5f5-4114-a94d-74804cac2ea0
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 922a84a0-d9ce-4ff7-b6bb-7d1ebcaa0c1c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c7efdf88-8a09-41d3-908e-d1e513b3c745
+ - column:
+ name: uuid
+ value: a2d5099b-4254-4f7e-8d3d-ceb280571ee1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ value: USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c2r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 92f5bbb1-3215-4a80-95fe-aba44d79fb69
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1efb8470-f0d6-4e69-97eb-7dbec527dc6d
+ - column:
+ name: uuid
+ value: eed80211-44a5-4f21-bb1e-83b82635bb3b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pcm
+ - column:
+ name: vm_type
+ value: pcm
+ - column:
+ name: vm_type_tag
+ value: pcm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 934d8e29-ab23-489e-910f-3e16db969d81
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 94738c09-9e9a-47e4-a444-c262328e1741
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00629390-ad5c-4a52-a04e-1efa3b2c9dc2
+ - column:
+ name: uuid
+ value: ea761b8a-e27f-470b-ba8a-a89e9b61b467
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9519bd6e-527c-4f7a-a013-dd478fad64bd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 953f220f-a3f1-4191-a7eb-722f841f2c0c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 95b5cde3-d489-4329-9b75-2aa01db6e6a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 720c36a7-9380-4c11-a8ce-acb2ad5c2d7f
+ - column:
+ name: uuid
+ value: 07285e73-89c2-4330-b09d-65f568c976de
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdbe
+ - column:
+ name: vm_type
+ value: vdbe
+ - column:
+ name: vm_type_tag
+ value: vdbe
+ - column:
+ name: vm_image_name
+ value: SRX_DBE_15.1X49-D50.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c2r6d20
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 95bdd202-1f6a-4812-ae1f-c8df2ed8ce9c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 324ba26b-468f-467b-9b49-021f76720277
+ - column:
+ name: uuid
+ value: ebffbeff-3b15-4ce9-abe7-654f0bd8615f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 964808cb-2199-44fc-9390-004b8fa8d538
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd0137f5-c6fd-4990-a217-8e3c41838bd3
+ - column:
+ name: uuid
+ value: 14c13c2e-dccd-48af-b46a-5526f6640a63
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: its
+ - column:
+ name: vm_type
+ value: its
+ - column:
+ name: vm_type_tag
+ value: its
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 967653fc-d781-4f65-b513-7a111d854ffa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f0d528fa-8ae2-4548-9e59-71bdf5b16b2b
+ - column:
+ name: uuid
+ value: d18b5d59-c65e-420d-ae28-8181e87520b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 970657f6-a90a-4758-ba4f-512da3aa07e4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 47e50720-58ad-41d5-a89d-a290833d5170
+ - column:
+ name: uuid
+ value: 3ec89b15-8ef3-466b-8b6f-f8e658793601
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 97dafb56-c3df-4922-970d-b514118b1196
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f0d528fa-8ae2-4548-9e59-71bdf5b16b2b
+ - column:
+ name: uuid
+ value: d18b5d59-c65e-420d-ae28-8181e87520b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9842c47b-f484-4de6-864f-ca4fdaea3cad
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 98608c67-9b1a-4160-849c-060171c0ae16
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 88fea698-4f2e-4b8d-bdaf-d60a8d9f921e
+ - column:
+ name: uuid
+ value: f62868c7-2afb-4ad8-a940-8b9db7b4e71c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 98f311f9-39e0-4b96-be75-548fe6953247
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c46d1478-41bc-48d9-863b-0ac70a2e6972
+ - column:
+ name: uuid
+ value: 138dab0f-355c-4e32-82d1-66838992a8fa
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99699375-0397-405b-89c7-32fc9f714e0a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 27f6423d-ab25-484a-86c7-038925e4cf30
+ - column:
+ name: uuid
+ value: 10078587-93b2-4ec3-be27-c9172716e3bf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99781b3e-7c91-432c-af97-dccdf0e31281
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99a274bf-c3fd-4d63-a4b1-1c7b4d9312d6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 05c097e1-9d0b-484d-9d3f-b4c4ecf6938b
+ - column:
+ name: uuid
+ value: f61c31cb-5ffc-47a4-b423-4aabc4afb2d7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99bd7230-87c4-4dc5-aba2-4a63ad55954c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99cab556-8786-4fdc-8ff6-284aa7d47fa8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cb26bc79-f5c2-4d70-96e5-8ef2ec5cb2f8
+ - column:
+ name: uuid
+ value: 2354ae73-a126-4797-8136-56d5320c4efd
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 99f10ccf-e4d0-4c1a-87fc-9d4403f9bb57
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9b5fd226-047a-4702-ac8b-d84a4e12bcb1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 544f081b-41eb-41ed-aea3-82a53f8406b7
+ - column:
+ name: uuid
+ value: fd49fdc5-aa89-4528-88ad-7ab74497826e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: TEST_server
+ - column:
+ name: vm_type
+ value: TEST_server
+ - column:
+ name: vm_type_tag
+ value: TEST_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9b68a223-ae32-495b-9dbf-706d17f4edca
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fd0b5273-f01b-4129-8a20-447567d7c370
+ - column:
+ name: uuid
+ value: 94bcc5fb-18c9-47f3-9bc1-db73fba3c210
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9bc3396f-861c-4bb7-b11c-e40ed9fc785b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9cb550ff-94a8-46df-b216-8d8d79a4430c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3021e249-ce61-4921-97d3-c620fee735d8
+ - column:
+ name: uuid
+ value: f5d1a9de-02c5-408f-9a58-f3f7dc40e91d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: converter
+ - column:
+ name: vm_type
+ value: converter
+ - column:
+ name: vm_type_tag
+ value: converter
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9d25a319-184f-41d8-b361-b3c34780815b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9da1a65e-107f-4c2f-b3aa-5741f9ec4246
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9e0bae98-f88e-4afa-987e-44d6bf49d222
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4dbb5f94-045d-4daa-8cc0-6b67b14733e8
+ - column:
+ name: uuid
+ value: e41c812e-482a-4831-8a61-90ca514afc64
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmsc
+ - column:
+ name: vm_type
+ value: mmsc
+ - column:
+ name: vm_type_tag
+ value: mmsc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9e9a03db-5e18-4080-9a99-3befee79d106
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8cf09ba8-a266-426d-b10e-77f8bfb0fa2f
+ - column:
+ name: uuid
+ value: e628f731-8879-41c3-b391-482b2d255f7d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rtp_msc_a
+ - column:
+ name: vm_type
+ value: rtp_msc_a
+ - column:
+ name: vm_type_tag
+ value: rtp_msc_a
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9ead1a85-5592-4784-879c-147a94bea966
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b2d3805f-a918-4f95-b4fa-f6c5b8dab1ca
+ - column:
+ name: uuid
+ value: 2e090e82-864f-4d48-9c74-dd8a812c2396
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9eb9415d-9c3a-499e-9889-d97647df8b41
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fdb7b451-b225-464e-92da-fe01b24215e6
+ - column:
+ name: uuid
+ value: 12b488c0-ff81-4840-930d-94020426b7da
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9eba7181-1630-49c1-8698-a94dd8ca95b2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2e0cd406-2bdb-48dc-b262-c7e45f1216b5
+ - column:
+ name: uuid
+ value: 4f3990bc-bedc-4308-a3ac-6900eb684e9b
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c5dfffac-1a54-4f68-8620-f98209e6a99a
+ - column:
+ name: uuid
+ value: f9c80fce-dff8-469e-ba9e-e8e6cf1842e4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vbng
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: vm_type_tag
+ value: vbng
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f0d1717-e20d-4c2e-9c64-f7ce4b9b13d4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c30e7d17-563f-41fc-99dc-6390c831ee08
+ - column:
+ name: uuid
+ value: 367294b2-ef14-49bc-8b01-d7cfdccaf0c1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f240ab4-117b-4bd4-aeac-432607eaeb6d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5c92f734-aee4-4431-bffd-4b1613b40eed
+ - column:
+ name: uuid
+ value: d39c7ac8-25d3-47b0-a10a-7474dad90e21
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f4130d6-6e88-4759-a635-ff24c6c7814c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f46cf9c-6b2c-41b8-a4b6-27b5e6373538
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9fad30e6-3822-48a6-ad15-caa62566abe6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ab414a7-b8b9-49ca-96c5-8e0bec348412
+ - column:
+ name: uuid
+ value: 52e44eae-1f79-43ec-ac74-cf6501fb6e26
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a00628bd-e870-4679-80ed-0423caad18df
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a0083208-228e-42d8-82db-ff463b8704b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1dff89b9-f323-482b-b7a7-e049f9ad7635
+ - column:
+ name: uuid
+ value: 0ce097c2-4121-449f-9f98-63532a8bff55
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vertica
+ - column:
+ name: vm_type
+ value: vertica
+ - column:
+ name: vm_type_tag
+ value: vertica
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a0154f8d-ac4d-4af1-abd0-e660f7562d35
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7
+ - column:
+ name: uuid
+ value: 2b6676c6-90b2-4d39-be19-b1ffbd23f558
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a0ec6cac-6fc9-4429-8387-93593d2072df
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a116fc55-74a0-4d69-b034-34170799ac3c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cb8841a3-5eb5-4c72-844b-16dcb0d3b7e4
+ - column:
+ name: uuid
+ value: c4342af1-f173-4d83-bbcb-0c9fdd7b9567
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: d2ice
+ - column:
+ name: vm_type
+ value: d2ice
+ - column:
+ name: vm_type_tag
+ value: d2ice
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a1b72bd2-0d25-4031-973a-c9600dab5f78
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a1cd762a-7c3c-4839-a2eb-e77bb374eca3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a1e0d30a-598b-43cf-b1ef-62158ffc70eb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a26fdde2-478b-4b1b-ba35-af8b6f3da856
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 10421357-a2b3-4a7a-b82d-125b2805fa5a
+ - column:
+ name: uuid
+ value: 56324cee-8dfd-48f3-aae8-3101be93cdac
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a27d8879-67a2-4537-b326-2c072e31f68c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a27f0fb5-4744-4b99-af5b-1dd1d59c8725
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c6f03037-253c-473b-a538-73246b291185
+ - column:
+ name: uuid
+ value: cb19a064-c90f-4d71-b01b-a0bca8ed5e4b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: itm
+ - column:
+ name: vm_type
+ value: itm
+ - column:
+ name: vm_type_tag
+ value: itm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a2a8f05f-7d29-417a-af2a-00c3ec229246
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ce2aa7f5-6fa8-46c1-9790-8ae7b49a6306
+ - column:
+ name: uuid
+ value: e395e992-e359-4635-a463-ab9b9fb027bc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mda
+ - column:
+ name: vm_type
+ value: mda
+ - column:
+ name: vm_type_tag
+ value: mda
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a3dd0b00-859a-4567-afd5-08efb92072e7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a52999b1-dab9-42cf-9853-1d831eb0d318
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b173ab2a-9b2b-433d-883e-3c153f39c331
+ - column:
+ name: uuid
+ value: 464f4ed6-75d9-4a48-bb9c-9a49b4da172f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a54fdfd0-33da-462b-883f-f7ddc2d86e1c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a5653b1c-6e73-4ee6-a5e0-5f1bcb1ea959
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a5ece57f-58c7-4e9f-80f4-6a2d0a4bec38
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a5f25e31-5059-4d50-97ef-26735df799ed
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9e4e3726-d8a8-4a40-8fae-f4bb46135d3f
+ - column:
+ name: uuid
+ value: 08253508-dd15-4202-bfaa-c105f0a8c19f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a60c2994-8089-42ff-90ce-656c6aeeac42
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7513c82e-63de-47f8-94b6-83ea61446fc1
+ - column:
+ name: uuid
+ value: 82104fb7-3f0f-4c6b-97a2-adce8c48a7b2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a682c9ab-b50c-429f-a605-2469a4efb829
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a698af7d-6797-4807-907f-f9e60593d082
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 90177c20-11a9-4a85-bac6-067f4c88403b
+ - column:
+ name: uuid
+ value: cbae819f-fe79-4031-8a06-79026c8eb1fe
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a6d1fe14-e363-4c05-9c68-a23e3ff4e816
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 55372be2-6074-4793-92b1-e0fe1afb08b7
+ - column:
+ name: uuid
+ value: d03e16a8-becc-435b-aacd-829f6e3150b3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a727ca3c-cccb-45fd-a3dc-1b030b1fca71
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c12a93bb-bb70-4f40-8823-155980ad078f
+ - column:
+ name: uuid
+ value: cef11b73-aa73-4f88-8b6c-34d21d55b8cf
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a72f75fc-126f-4a3b-a125-a33e89fb3ca6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a7fad07d-f91c-44fd-98f9-4952f35f3875
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a808430e-4931-417a-b6d8-183a719d1803
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 83429bf9-49f1-4187-a5ad-afc329a84e76
+ - column:
+ name: uuid
+ value: ce422e74-7e58-4464-8a54-61e21f3ca7e5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a8bb4868-11f8-4eaf-a411-007f6691ef99
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d6972850-e417-4146-8a3f-c645769f6d1d
+ - column:
+ name: uuid
+ value: 49956ca0-99bd-4ad7-877d-ec831af96a10
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a91bc7ee-82ae-46b4-9eb4-4a92fef3f00c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9e68d141-f3ab-4436-a1a6-52f83a2908ba
+ - column:
+ name: uuid
+ value: 7d33eb47-6050-4ef6-aea5-0485360ff4e8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a99c320c-64d0-44ac-8edb-16d781dde678
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ea59343-7575-410b-81d5-0dcc7023c3ef
+ - column:
+ name: uuid
+ value: ef0a6627-dd24-4d26-8e42-3e4981322a68
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ellis
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_type_tag
+ value: ellis
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: aa008846-3e9f-462e-867d-653358cd6d8d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: aa8a4494-cd9e-444f-a174-9f2590bbc692
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 178dcae6-892b-4fd8-9da9-bdf30da013ae
+ - column:
+ name: uuid
+ value: 50d30dc2-fe59-46be-92e1-2844868bf1ab
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvre
+ - column:
+ name: vm_type
+ value: vmxvre
+ - column:
+ name: vm_type_tag
+ value: vmxvre
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c1r16d32.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: aa999b75-51fd-451a-8556-c59e13cb3cd6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 260bcfcf-53b4-4f7e-b387-d962b411a90a
+ - column:
+ name: uuid
+ value: 0cc735dd-8c55-4de1-829f-b307806ddbd5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: aaad4b91-f2bd-4157-b386-fb7955b1dfc9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9b3265aa-64a8-498a-aa68-2d6a65c34ac2
+ - column:
+ name: uuid
+ value: d3351d9a-5b8c-423f-b63d-bdba0716b04f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ab26b6c2-af90-4f66-bc2b-f500a3ca1a5c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ac0cd98d-35ee-438c-a45e-9a2447c603a4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ac377ae1-fd6b-41e4-9aff-a6b2b038d484
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ac496aaf-ecff-4db3-acb7-cd9989db2b21
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: aca91a09-aa6f-4701-bce6-2ded800ac69a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ad6791e1-eefe-49b4-bce3-3e5b76555fb9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ada34b73-f715-41eb-a6ad-c9d868e86728
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c35a90e5-6c43-4c54-8953-18053879258a
+ - column:
+ name: uuid
+ value: ce4bf871-1817-475d-ade9-39e7095f12b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: adcc1687-2e29-4b48-81cf-d671aaff5cef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d2c6e47e-7320-4559-876c-65f21e71be94
+ - column:
+ name: uuid
+ value: 71db90f8-ae2e-44a2-b57d-e96de3f89b66
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ae6938ed-7d85-4d1c-b08b-683eaeeb8861
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: af36dd7e-6e79-4b5b-b031-d1a7ff2876b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: afc8dd7b-f829-4d44-a52f-ee0665d770b7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b04d88cc-cf85-4968-82c8-c950f4487d0c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 143fc587-69af-4c05-b624-d5d0cf0d2b44
+ - column:
+ name: uuid
+ value: 4b5305d2-022c-47ab-8f47-7f795a6a64a0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b09c467f-048d-42e9-a127-79c8bf3b090d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5818d233-caf4-4825-a7bb-144bbd731329
+ - column:
+ name: uuid
+ value: b8c28cad-e97a-4ee8-bc64-119b373cf98f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b0f2b86e-1b9a-4d3b-9dd8-ace1ee07976f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ca34c00-47ad-407b-8b31-d209843f7a07
+ - column:
+ name: uuid
+ value: a6a47256-5dad-44bb-afd3-a3dcb58b6493
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b14c2a09-89e7-487f-95ec-1b5bbc3399e4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ea6ed17e-b52c-4a66-8bb3-8e5f6f3fef39
+ - column:
+ name: uuid
+ value: c14a722e-7f86-4577-9583-ba9397a2a54d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b1ff5519-4c6c-4378-99ab-df79b2802406
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 64607264-f245-419c-b490-5b40cdc6c8d1
+ - column:
+ name: uuid
+ value: 23aee13f-2ba4-4f62-8739-60655b38e537
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ssc_a
+ - column:
+ name: vm_type
+ value: ssc_a
+ - column:
+ name: vm_type_tag
+ value: ssc_a
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b2f1e772-dc8d-4048-b984-441ad81f3955
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b328a3fe-e2c5-4fc0-800f-f3a64ca779d4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 231e7f44-fdbc-40a0-b836-c3302421004d
+ - column:
+ name: uuid
+ value: e66f3e27-27f7-450c-b3b7-cdaf43d262b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b36490f4-abe6-4951-8f46-72889c614c4a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b3a64b54-ea13-43c7-af8f-3b69a538c213
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b4100792-9341-4078-bac7-404b684f211c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b4100ed9-507a-4be4-a456-0e49482a58ac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0f130462-8f4e-4670-869b-37eb02b04577
+ - column:
+ name: uuid
+ value: db498075-2ff5-4947-92a6-10745aef5589
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b4483cf2-b435-4ed2-b45c-93a2f2bcda66
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b6444afc-7bf1-4170-83f7-8c932d5a55c9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b6d5b572-0a9d-4de7-ba44-bd02bdf95626
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5e6be389-4ca1-4344-b497-d40e7d76de5b
+ - column:
+ name: uuid
+ value: 280afa6d-83d3-4ecf-9cdf-47a2e4b0431e
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b6e7344e-5dc6-4b71-9735-fc047e5b999a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 49c1424b-5e2d-4e16-b1f3-1f20fd529925
+ - column:
+ name: uuid
+ value: 651bfb5d-d5cd-4ef0-bb26-0eb3bbbe71b8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: psm
+ - column:
+ name: vm_type
+ value: psm
+ - column:
+ name: vm_type_tag
+ value: psm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b6ff6a80-ee73-415d-b4d8-9e97cd788e1d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b773d671-6888-48ca-8ba8-609371bfccb6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b7cf537e-9b62-40e8-9f1d-278ff0b7986e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b858d606-617d-4b29-b749-e51e70c52e5c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 80501dcd-d0a6-4101-92b2-6a2249258d4f
+ - column:
+ name: uuid
+ value: e2eb1e3f-ca9a-406c-bcfe-d53b87e0fa27
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b87c7274-78d0-4549-ba63-9fdbdefe239d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b8935925-e0bb-4103-b64b-14e24237599b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b8cddb4a-babb-49e0-a369-4ba04908d4f7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0fe506c3-fa0f-4811-b3d9-9a5e1d316cbb
+ - column:
+ name: uuid
+ value: 305592e2-01e7-49f5-baa9-207e47b4eb76
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vbrgemu
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: vm_type_tag
+ value: vbrgemu
+ - column:
+ name: vm_image_name
+ value: vbrg-base-ubuntu-16-04
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b8e49d1b-e5ee-4e25-8d20-61e5588f5f87
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a17323d7-1f15-459a-93a1-2523b2dcc909
+ - column:
+ name: uuid
+ value: 78a657d7-74d1-44bf-939c-73d748dc4ebc
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b95b06d3-f566-4d75-a43b-fbf94d9f9645
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b9b64e3f-7b45-4293-b742-21b5bd63fac2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ba3c401d-def7-4085-bd8b-5cfad9cb94a9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb0cd22b-bb81-4fbe-b756-94cd3b94255b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51a669a5-4c83-4231-8aa0-9939acf835ef
+ - column:
+ name: uuid
+ value: 3b97c83c-ee8b-4eb7-9910-428b7a58d9cb
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb4916f2-6ce6-42df-a1db-ebebd2ae420a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ae4b9316-37fa-469a-b39e-951b1e0684d8
+ - column:
+ name: uuid
+ value: 43c4a39a-5f99-4cd3-80e1-288de3cf7be7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ valueNumeric: 1
+ - column:
+ name: max_instances
+ valueNumeric: 1
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb69f2d4-be8a-400f-9d6d-6e9500664dbc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: df3f9aab-9c2f-42ef-bfe9-6eeb4102b650
+ - column:
+ name: uuid
+ value: 1cd4cc4b-58e2-48c5-b2dc-69779071f8cc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb6da603-e8ec-435e-b84f-27e3985a1f91
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bbadc8e6-b898-46ef-8204-06e125a690d6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 44c2244b-b8c1-4788-886b-28addae150ec
+ - column:
+ name: uuid
+ value: 76408aa4-80ce-4974-aed7-77336f6fecb0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0de693f7-e09a-461d-b9d1-cfd6919b8f0c
+ - column:
+ name: uuid
+ value: 49954541-0f93-489c-a9cb-cf9fc8e986aa
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bcbc6708-3697-430c-a8e8-6250939ecf5c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bcdd7c03-4140-4378-b00a-3775089ae232
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bd18c89f-92d2-4cc9-ae09-dac57219db9a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bd800b26-228f-40db-bd98-dd4afade8ee4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a768414c-507d-4120-a1a4-ed2c1ec3f4ad
+ - column:
+ name: uuid
+ value: 8d8fcea8-4352-48a2-8e39-10b3b8862743
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cm
+ - column:
+ name: vm_type
+ value: cm
+ - column:
+ name: vm_type_tag
+ value: cm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: be1a6293-fa3b-4a2f-afd6-480f2e70a5d2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bfc9b3ec-9c4f-4caa-9489-4c3e6c99a4ce
+ - column:
+ name: uuid
+ value: 9fe7109f-e328-4ae1-aa27-1ea33b72613a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: be65d2ae-31cc-479c-9156-e7f1d6b6a4b4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f30f9166-702e-47b8-8f0a-d5523f86b7d6
+ - column:
+ name: uuid
+ value: 73aaf1fa-265c-4f13-a171-ca8dc4c908ff
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: qtrace
+ - column:
+ name: vm_type
+ value: qtrace
+ - column:
+ name: vm_type_tag
+ value: qtrace
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: be96e427-e84c-4a57-b169-5490bc2bde4c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fc60c10b-f1ba-4e3d-9c41-e4eff820162e
+ - column:
+ name: uuid
+ value: c05c500e-e9c8-4edf-9e94-6af1779e62c0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmsc
+ - column:
+ name: vm_type
+ value: mmsc
+ - column:
+ name: vm_type_tag
+ value: mmsc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bf11ea87-eca7-4bfe-a958-a6395c14c11a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bf4cfefa-3bf4-43a9-a7b4-d091f92586e3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 484fc852-b184-4321-ac3a-0a95d254fa6c
+ - column:
+ name: uuid
+ value: 31be2acb-c53a-4a8c-a3ed-ff6d2db67255
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bf9a909c-17ef-4a69-ac1f-56d05c53c528
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 9313568b-b485-40df-8e3a-2e541a8ca32c
+ - column:
+ name: uuid
+ value: a3f4879b-b668-49f1-b57e-372271b0cdaf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vgmux
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_type_tag
+ value: vgmux
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bfbbab1c-b257-4ea9-81e0-416755b28df7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ecec5d9-7517-4970-9977-242b02f6cc92
+ - column:
+ name: uuid
+ value: eccdf6a2-4ad6-456b-892e-7b4109308445
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bfd5e865-92a4-45a1-888d-ba7c2497ad50
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 87675787-232a-4648-affd-fa4522faffac
+ - column:
+ name: uuid
+ value: 557bd559-76ce-412f-9b4a-c1fb37039c97
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bffb18fa-e09f-4d2e-9a56-6f032e03ac19
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 03d45358-a5e6-4584-a9b7-fb5e9333726d
+ - column:
+ name: uuid
+ value: 3a32e5f8-744c-4c90-9dce-42b67c21b1af
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c0228379-2c35-4d53-bffd-b22f70e5b131
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c0269cef-1de3-4b79-8c45-790e56540ac9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c05551e2-d5f7-4fba-bd08-c76085bc0bd7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c0a21a31-56f6-4ed0-9647-f2c9cfb22737
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 482d5ad8-7f48-444d-8b45-2817b8309075
+ - column:
+ name: uuid
+ value: 2c1d7d2a-0122-4a1c-8be6-ce19cd9c3592
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c0e635b4-e210-4c0a-ade3-943aab8ee3e3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2b39f3e1-0dce-4786-9d9b-ec9613ce350c
+ - column:
+ name: uuid
+ value: 96f733e6-9ed1-47e1-a77b-f1cabbecd142
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c1cba325-dce0-418b-9ec1-61bf6ecac873
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e2d673cd-88da-46ea-a591-5f2b7c835639
+ - column:
+ name: uuid
+ value: 279ac5e4-a5d9-48ab-82ab-9d336c0f96d3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c231d966-7c33-475b-b1da-6d8183a14f36
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 56717920-49da-473a-a453-efb044590ca1
+ - column:
+ name: uuid
+ value: a097e7bc-fb30-41cc-99b3-fc82f9fc701d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c23ac2f2-56ff-4ecc-b65d-65dd8f82a0cc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 629adabe-cc44-4989-8f2a-75b55f7737e4
+ - column:
+ name: uuid
+ value: e82cdbcc-5bbf-4dcb-9a0f-17c6e4766801
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: daemon
+ - column:
+ name: vm_type
+ value: daemon
+ - column:
+ name: vm_type_tag
+ value: daemon
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c2655316-7724-4fe0-9ace-cad170838ed0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c2bc34f3-ec20-4f40-a6ff-c0913ac9b180
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c3afd8d5-cc77-43e9-baaf-7caf60146b15
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c3ec6c74-294e-4eec-825e-3071b55a08c0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c43aef22-8dd1-4e8c-8169-f88da3ef2160
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c4753b00-af1d-4b49-bcfa-475effeaa3ca
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c4c23e62-b07d-4856-ad5b-af6a3980fae2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e1158f69-c65d-4b6b-8332-46ef339ffc81
+ - column:
+ name: uuid
+ value: 9a2de0f9-0535-4bf1-8e5c-47cfd7affe43
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c4d1cc21-49d5-4f45-a6ac-539165918edb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c504575d-ec87-4c75-b3cf-26b561c77c8c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c71badb8-3578-43e7-ba36-eec3fc1e4f83
+ - column:
+ name: uuid
+ value: 12ae7ede-f3d8-40f9-a8b1-44d5d4f09126
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vbng
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: vm_type_tag
+ value: vbng
+ - column:
+ name: vm_image_name
+ value: vbng-base-ubuntu-16-04
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c5d7d223-39d1-401c-98eb-0680733d2872
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c5eb0c33-6a51-400b-8186-d7fc1f0bee13
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e996f365-b29f-471b-8b32-baf93152eb81
+ - column:
+ name: uuid
+ value: c3f2985e-1999-419a-bcf7-91560cca1a1f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: smp
+ - column:
+ name: vm_type
+ value: smp
+ - column:
+ name: vm_type_tag
+ value: smp
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c6e0a9c3-babd-4517-988c-5f0c90877b1c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c788c709-f8a6-453e-ad1e-8dfa63492dbb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8a895561-a663-4b64-b421-7416bf9d4a8b
+ - column:
+ name: uuid
+ value: 795d516f-34ca-4a0e-a74b-c4746eae4300
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: code1
+ - column:
+ name: vm_type
+ value: tag1
+ - column:
+ name: vm_type_tag
+ value: tag1
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c7b54e8e-8121-4102-b5d0-b25181920fec
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c7d68a7a-7496-46de-adef-dd7b82f2e742
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00f8e942-ae52-4da5-b459-8fb54eee2adc
+ - column:
+ name: uuid
+ value: b1b37903-9386-4912-8a60-ed692a03b52c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c8033d10-afbb-4310-b90b-abd4140c191f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 54f59033-8deb-403d-8cba-2d4b5dbf0b2f
+ - column:
+ name: uuid
+ value: 0fabe22d-e7e3-4380-a520-1c9e433a1405
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c859e495-1df4-4613-8193-357defa1ec51
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 088d65a7-f6fb-4214-b5fb-f5fa6948a7d1
+ - column:
+ name: uuid
+ value: 92f3786d-9aa7-413b-b751-e7a8595c7c22
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c873746f-0a6e-422b-9efd-44aae71283a7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c877c31e-896a-4f07-9c25-e5a447462ff5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c8ab7283-5834-4c61-a165-c1e292711a59
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1572dff4-d406-40ad-afd4-9828e66347a1
+ - column:
+ name: uuid
+ value: 3da37bf6-87b4-4b98-a9a5-d2c18a7ab8ab
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmt
+ - column:
+ name: vm_type
+ value: vmt
+ - column:
+ name: vm_type_tag
+ value: vmt
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c935fb51-b144-4f95-804f-8c21e8ab3769
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c9527801-36a0-4fb3-a6ce-3c3e685283ab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c9f6627a-41c8-4805-8d30-74d755e3bd94
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 899ccf77-9926-47c5-9e96-7f32c7535455
+ - column:
+ name: uuid
+ value: 5d660f11-702c-4875-b446-efaa631488c9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cb0fa12b-221c-41d3-b900-786711f5deba
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cb751f30-9cd7-4c7f-999e-73c2691da482
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 945c23ea-ff66-45ef-937b-3847c69b45b0
+ - column:
+ name: uuid
+ value: 7a4181d1-15e3-4a26-8b61-1881e18eb91a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ralf
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_type_tag
+ value: ralf
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cc1fb9ba-e8d8-4544-b893-19784421da07
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e55ea388-7c7a-4624-98d0-530b1cf12353
+ - column:
+ name: uuid
+ value: a6df5997-cae3-47bc-b11f-a8ae9ea15755
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: microservices
+ - column:
+ name: vm_type
+ value: microservices
+ - column:
+ name: vm_type_tag
+ value: microservices
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cc2f9ba3-0a21-47cc-8e5c-d40b0b36b786
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 46359680-71dd-4c95-954d-70e1286003bc
+ - column:
+ name: uuid
+ value: b62b2cb6-cedb-4aa5-8501-d733dbad7546
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cca81022-c403-46e3-a617-cf9d001532a1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c6a26e4e-4ba9-4abb-80c0-99af10e3e045
+ - column:
+ name: uuid
+ value: a7cf9a89-0b67-4247-bbfb-8fd671d0c13a
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cd5501b1-1490-4b85-b954-8c3dcc641bf5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cdd0c29a-5067-4549-ac36-f437c64b79ed
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e886bdeb-5486-4ecf-ad03-56837ab6e550
+ - column:
+ name: uuid
+ value: 5e749085-6671-4472-a068-e9a974324c2a
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cebe69d9-1c8e-45c0-9ab4-a0506c636d92
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1172e0ac-8e56-4fdf-8454-18e2964e97de
+ - column:
+ name: uuid
+ value: 440ce9b8-e1ba-4b63-918c-b433afb97d11
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cf16c622-b9e4-4712-924b-8008f47d84ef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b4df734b-f327-4552-adbd-51a844e6de90
+ - column:
+ name: uuid
+ value: 8bbd2b3d-4b89-4270-b55f-4111fd14142d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cf3e09d9-0a4c-4e54-9925-df317d9ac3ef
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cf60de5e-1332-43fc-8640-a94b5013dea7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 977529d3-aa9d-421c-aadd-fd0249d1a347
+ - column:
+ name: uuid
+ value: 85c354fa-04bf-4ba7-8678-fad5d31d7a23
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cfa061e6-f6b5-4f2e-b605-f4cccf69a1ff
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e53b0aae-f8b0-4776-bb40-837c5d48e289
+ - column:
+ name: uuid
+ value: 87425303-683f-414d-a84e-1ce7534688d5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d014e9dd-284b-4baf-acaf-6caae88eaec1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5014d933-aa2f-4ea9-87f1-70729f080747
+ - column:
+ name: uuid
+ value: 331d6f77-d90a-4c83-a11f-176ca9c901ab
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: mmsc
+ - column:
+ name: vm_type
+ value: mmsc
+ - column:
+ name: vm_type_tag
+ value: mmsc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d01bd75c-4c1c-415d-9a8b-a48d50589089
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0e2da292-c026-499e-978d-8a9912b8f3c3
+ - column:
+ name: uuid
+ value: 50dd9a89-6184-40f1-8d61-3586369f647e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d057afa2-edab-4be3-93cb-89854e40c298
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3b7a9ec3-7759-41fc-990e-e757dc4ccbbb
+ - column:
+ name: uuid
+ value: f89bd726-10f9-491c-a13f-7422933182dc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfw
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_type_tag
+ value: vfw
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d05e773f-2d6c-4a8c-9ed9-e29eaaab7a10
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d0d264c5-eb08-416d-9e2f-d78649e3eb07
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 51e3f3de-b2c9-4cdb-9ed1-7d689d1df408
+ - column:
+ name: uuid
+ value: 9e4c8069-d199-43ea-8eb3-ca1b5bb433d5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: fe
+ - column:
+ name: vm_type
+ value: fe
+ - column:
+ name: vm_type_tag
+ value: fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d160bb89-8331-4f8f-b323-aadeaf6ad719
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b35721e9-19aa-41db-bee4-0402887e5559
+ - column:
+ name: uuid
+ value: 7e1199d9-34db-42a2-ada6-0bb45625b6fc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d18761e1-1c7e-45b5-92d3-bf057164629b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 87cb315b-4c0a-4c65-81a6-8221562f6a8e
+ - column:
+ name: uuid
+ value: 0312fa13-5678-4ff7-b5ab-d2eb370cd44c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d1942b6f-5cfb-4167-a158-4a556d32d6fd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d1c09e21-5074-4c80-9864-8bcdd3ef9d07
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7
+ - column:
+ name: uuid
+ value: 2b6676c6-90b2-4d39-be19-b1ffbd23f558
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d2283908-05ea-4f6e-9e6a-c891f2df406f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 039aeb04-d31a-48bd-9459-29539639d6ec
+ - column:
+ name: uuid
+ value: 2bec9788-7039-4c59-aec1-35aae3903c19
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d23cab29-da46-4aeb-b04d-3895f5ec3a76
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d2547357-4c45-4462-bc6b-46d640a4c1b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d25e12e3-8cf3-4fce-8fd2-bf21f0f0e795
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d2931a86-1b18-414c-a6f2-edd5cc1a26e9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1b9d7f98-60f9-476a-bd30-dc200fa89f93
+ - column:
+ name: uuid
+ value: 0318d0e9-d938-4c4a-9157-848e5564f717
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d2e1e04b-0622-4624-868a-ff6a71b5adf3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c5993503-367f-4d34-901f-95fb562591fd
+ - column:
+ name: uuid
+ value: 6ab10218-fb57-4423-b838-48efcec339a7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: conductor
+ - column:
+ name: vm_type
+ value: conductor
+ - column:
+ name: vm_type_tag
+ value: conductor
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d330374c-aa93-4dfc-b4f4-a3dc4411b9aa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a3f9c583-bbfa-44a2-bc51-03f77a2bc8a7
+ - column:
+ name: uuid
+ value: 8d63b561-50b8-44c9-a899-627687b6c930
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvre
+ - column:
+ name: vm_type
+ value: vmxvre
+ - column:
+ name: vm_type_tag
+ value: vmxvre
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c1r16d32.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d38f40ad-a4bd-4736-b324-486373898759
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1e7d318b-f33b-4b90-9d75-6da7922361ed
+ - column:
+ name: uuid
+ value: 35e68c56-72ff-43fc-892d-96164bd1f244
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd_server
+ - column:
+ name: vm_type
+ value: pd_server
+ - column:
+ name: vm_type_tag
+ value: pd_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d3afb81a-50f1-4e04-86de-7498741fcb62
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d44562b3-5960-474d-bfd3-e38bb638948c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d48099b0-2b0a-4c5c-a2bd-aaf4727bb13d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d486859c-c045-4216-a4a1-32901540ed1f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0ad0f610-74d9-4ddf-ad83-beca6203c3ce
+ - column:
+ name: uuid
+ value: 87b6d27b-185e-419f-acfc-3f8bd659ce9c
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: TEST_server
+ - column:
+ name: vm_type
+ value: TEST_server
+ - column:
+ name: vm_type_tag
+ value: TEST_server
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d4ceca44-046f-4a8c-bc8f-4e55b39be39a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d4d60fbb-3af9-42f7-9da9-1fd955e5c086
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 83e2f5f6-c7ab-4f9f-be3e-3566dce5ca4a
+ - column:
+ name: uuid
+ value: f2e899b2-50df-4cb3-aa4b-2ffccad39e61
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvre
+ - column:
+ name: vm_type
+ value: vmxvre
+ - column:
+ name: vm_type_tag
+ value: vmxvre
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c1r16d32.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d4ee269d-563e-4b40-abc0-b9e831167253
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 00df4ead-6147-413b-8658-064bf60b45f4
+ - column:
+ name: uuid
+ value: ce27c3d9-e589-462e-aa30-f7aa0693cbfc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: iox
+ - column:
+ name: vm_type
+ value: iox
+ - column:
+ name: vm_type_tag
+ value: iox
+ - column:
+ name: vm_image_name
+ value: USP_IECF-IO_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d5a9f7ee-97bc-4f4c-a505-bcd49151fa80
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d5cbf388-721f-4e72-aeed-8eb087b54fdb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3c185a74-5a29-476d-a557-31af4c5e3ad6
+ - column:
+ name: uuid
+ value: 34756e5d-c023-466f-a330-43c1e01a4491
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d6aeb78d-9a31-494f-ab0e-936748eac20d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d6f25bbc-9478-4885-b899-5cd6739557b3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d7724722-c600-4a34-a813-3583d60a3776
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d77a5564-8dc8-492e-8d9b-2a93f6e6c8a3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d7e69e58-c9b2-4480-8860-748656b693c1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: 7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935
+ - column:
+ name: version
+ value: '11.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d7ef089b-0fb6-4355-aef4-24bb33ad5d61
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d813efe8-c11f-415f-a7e7-4fbca9e92318
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4354b220-90ef-4473-9d12-ce784891b4a7
+ - column:
+ name: uuid
+ value: 4cdca75a-3f10-4658-ad63-4d30c6fab96c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pps
+ - column:
+ name: vm_type
+ value: pps
+ - column:
+ name: vm_type_tag
+ value: pps
+ - column:
+ name: vm_image_name
+ value: NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nv.c8r12d100
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d89ef92d-7708-473c-9843-151525428a3c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d9023921-639c-4f29-bc39-75574e715492
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 40fa1c65-5db5-435c-8465-2ea98a49bfff
+ - column:
+ name: uuid
+ value: 3bb7ef22-bd9f-4818-abb4-19c560e3661b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvpfe
+ - column:
+ name: vm_type
+ value: vmxvpfe
+ - column:
+ name: vm_type_tag
+ value: vmxvpfe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c22r16d25.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d921d8e0-72ef-4e82-9a5c-f8c524d9db72
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 25dbbc47-5077-4f3d-83d2-1f9900c66b40
+ - column:
+ name: uuid
+ value: c5212e4d-ac57-45a5-8dad-3ea5610a5700
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sprout
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_type_tag
+ value: sprout
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d955ecf3-c37b-4829-a592-ed0c5dfac3db
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d9bb4581-b99a-4810-8bf7-2ddabf069573
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 63b30309-8d17-4a53-8a8e-d5c84dc67971
+ - column:
+ name: uuid
+ value: 39962b65-2689-4dca-85d6-af29ac04af02
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: plt
+ - column:
+ name: vm_type
+ value: plt
+ - column:
+ name: vm_type_tag
+ value: plt
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d7820662-37e3-4dd5-9eee-ae4996eb9a49
+ - column:
+ name: uuid
+ value: 7a5c7331-23ab-4230-bc73-ee12efed6831
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdhcp
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: vm_type_tag
+ value: vdhcp
+ - column:
+ name: vm_image_name
+ value: ubuntu-16-04-cloud-amd64
+ - column:
+ name: vm_flavor_name
+ value: m1.medium
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: da276e91-0540-41d0-b6b2-f062e9ffea98
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: da32c96d-2f04-4548-8670-39ff222a3af4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 34f12006-c7b5-4507-ba81-d5db0b0bd183
+ - column:
+ name: uuid
+ value: c630e7bf-4d84-4f2c-90c2-779d4e783bf8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homestead
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_type_tag
+ value: homestead
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: dac39219-5bbb-466a-8136-f2b3cd715957
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4ee9e271-2073-4399-9779-0756f838f560
+ - column:
+ name: uuid
+ value: 265e608e-9304-4996-91bc-2f2edb888a61
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ppd
+ - column:
+ name: vm_type
+ value: ppd
+ - column:
+ name: vm_type_tag
+ value: ppd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: daef9b68-c885-4fd9-905b-81d02287b400
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7c072a5c-87da-43d6-a240-1bb4f5c48c8d
+ - column:
+ name: uuid
+ value: b158181f-e1da-43f3-89cd-41e8db24852a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: analyst
+ - column:
+ name: vm_type
+ value: analyst
+ - column:
+ name: vm_type_tag
+ value: analyst
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: db207678-8018-4829-bec6-4143743b1a29
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 223db1a1-cc8c-4427-8e42-ae4307737c6c
+ - column:
+ name: uuid
+ value: a382c611-0f12-46bc-9316-520f36ffd641
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: db6a3c01-6635-427c-b022-4826a6abcf38
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fcec5e47-ce59-4541-bcd1-1115037bc77d
+ - column:
+ name: uuid
+ value: f76a36a2-9ffb-459d-8065-e022dbd04c17
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: nems_fe
+ - column:
+ name: vm_type
+ value: nems_fe
+ - column:
+ name: vm_type_tag
+ value: nems_fe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: dbdcd5f1-014c-462c-a950-ba17813f9485
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aafa741c-2d29-4896-8cc3-3a2edafe764b
+ - column:
+ name: uuid
+ value: 365a1d85-0dad-4766-a1a0-34c91ce7901e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sprout
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_type_tag
+ value: sprout
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: dc82a28b-e06c-4362-b9a9-1a8536d11103
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: dcdb832d-6202-4b2d-a5c8-75eef953ebfb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4b2c0f45-4236-4219-b063-e2ca9c655af5
+ - column:
+ name: uuid
+ value: c8d403d0-3996-42e0-92b3-e26f3346f7f1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: psm
+ - column:
+ name: vm_type
+ value: psm
+ - column:
+ name: vm_type_tag
+ value: psm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: dd6bb792-56c1-401a-957c-1494e42d059c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e2824f52-f71f-4dda-9e2d-9dd1c6163123
+ - column:
+ name: uuid
+ value: 7495d002-4660-40e3-a834-b7bcaabeb7be
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ddb68a75-d9ac-4179-b00b-e5202eedb221
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: de5dad75-6519-42c9-b6fc-a73958971f26
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: de666e4b-8026-48ca-a753-4c8b6314edcf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f9cb9e26-f215-4d92-9686-c01d215c2370
+ - column:
+ name: uuid
+ value: e401c6be-3e29-4f6b-a9ff-dd289e15f3fd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: df6167af-bf7a-46a0-a39c-b8e4834f2c70
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e011021c-1e17-4357-9390-138924d67df8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e03f15f3-ecb9-4b34-ac1b-d33bab8cee2f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e077e430-fdf1-4dc3-ae2d-ed02cb0534be
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 50696315-5bde-4a61-91c2-6fb9a47fb333
+ - column:
+ name: uuid
+ value: daf91cde-5b47-42c7-8b85-d18607ffe31f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: drbd
+ - column:
+ name: vm_type
+ value: drbd
+ - column:
+ name: vm_type_tag
+ value: drbd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e0894eed-1665-47ea-9bab-01d3d33b8a6a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e0c44b72-4d57-4368-8f37-baa4bc507d53
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e10c30eb-e67f-49bc-a3b9-53ac87f5147c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d8e95546-60f7-4d74-9bc3-97326e57f9bf
+ - column:
+ name: uuid
+ value: d003593a-de80-4202-9a80-bc5338c679c4
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r8d0
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e1696594-145c-44aa-b2ff-3a3679ee9daf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 607b0e02-9797-4251-b4af-7e25023653cd
+ - column:
+ name: uuid
+ value: 8b3f7cec-61a7-4299-92c5-a0a0bda4aa7b
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e1d9a966-9f3c-48c6-8445-25faf6279e04
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a2f315f2-5965-496c-aed6-7d3a3e3b9e93
+ - column:
+ name: uuid
+ value: b709e309-c645-4177-bb54-739b2d4c3fe3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e258f6b9-ab1a-4509-a5dd-14af510f39bf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e2e2fee7-7f1b-4d05-bc71-0623bf4bca83
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e3119061-af71-4b1f-b2a7-6270561f89c4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e319c3d2-4908-47c6-9d34-6167831748d5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a9d90156-8109-4a7f-af9e-bab39b0eb5ed
+ - column:
+ name: uuid
+ value: 2dd777d8-0fa9-4a16-9d57-367c066398e9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e3d8f89e-c5ec-46b1-9ed9-e09aee95397e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e400273f-1161-43eb-8c06-e1b5eade4b5f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e472f39e-2371-4dce-8b5e-883094836201
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b4df734b-f327-4552-adbd-51a844e6de90
+ - column:
+ name: uuid
+ value: 8bbd2b3d-4b89-4270-b55f-4111fd14142d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e479c112-5d01-4a10-af33-74f0f476ba05
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 72308d7a-5d2b-43d0-ab9d-1839fae15b63
+ - column:
+ name: uuid
+ value: f2c093f3-2f6d-46dd-880d-2831569cdaa9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e4bbdb28-c969-4f36-b071-9b2f93eccb78
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 86f39736-fe98-410c-b0a1-12baf7a64626
+ - column:
+ name: uuid
+ value: 369abd2c-c79a-4ee3-9152-a158a8e160a9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e4da2213-136c-4883-8dda-672b92574558
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0d9310c0-238a-419c-9abf-a10c468f842b
+ - column:
+ name: uuid
+ value: 60b3d723-a2af-427f-ae3a-c2626f860930
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: par
+ - column:
+ name: vm_type
+ value: par
+ - column:
+ name: vm_type_tag
+ value: par
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e53ac4a4-2f1d-4979-abe9-6fdd18024252
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1ed55cb2-1569-4daa-8156-0c653a9a1bd2
+ - column:
+ name: uuid
+ value: 97d74a37-0916-4de2-9f14-8a043228c4e8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: be
+ - column:
+ name: vm_type
+ value: be
+ - column:
+ name: vm_type_tag
+ value: be
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e5fd954f-adcb-4675-b763-cc216bbe68b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7b06461d-8692-40af-82bc-472696b91535
+ - column:
+ name: uuid
+ value: 712bb2ce-878e-4758-a111-08db4d64ac30
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homer
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_type_tag
+ value: homer
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e63dfc74-a391-4dd1-b498-502deabad064
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5de3f65a-9a57-463b-8f57-42307d9b27f8
+ - column:
+ name: uuid
+ value: 900b6e33-ce13-46e8-b9e9-56d21e4a4668
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e6898721-cbc0-4d92-b356-e0e3c6cdb571
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f9f13cd4-2c3c-4e4b-99eb-697877a83156
+ - column:
+ name: uuid
+ value: e0dad5f4-47b6-4973-8c3c-978ab29ac010
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ value: USP_IECF-APP_30.3.3-mcas4.4.6.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nd.c12r4d50
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e6d3fdb1-8bc3-4312-9489-1e76c8efb4af
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 90a23913-8d7d-4272-b2d4-ebe81667cf17
+ - column:
+ name: uuid
+ value: 9335c8ba-9677-4a88-b6cb-8078792b0974
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: sm
+ - column:
+ name: vm_type
+ value: sm
+ - column:
+ name: vm_type_tag
+ value: sm
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e7456fde-73be-44b6-97be-3cd6bd0e200a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e755b80d-4779-439a-98e0-f322d2d70f5d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1f972070-da5e-45d4-b134-7f1dcd1e1848
+ - column:
+ name: uuid
+ value: 854c5b98-6905-4ca1-a71c-23d0220c949a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: distributedlock
+ - column:
+ name: vm_type
+ value: distributedlock
+ - column:
+ name: vm_type_tag
+ value: distributedlock
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e7678c43-dd5e-4a55-b58d-d58217d10292
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e77e6de3-e3a6-4579-b323-6ea911c5b3f0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5cc8a5cb-fc45-4ce0-8e95-6d221bd76d46
+ - column:
+ name: uuid
+ value: a5c14db7-eab9-4e7e-8dba-aa9421819132
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e7f9b901-b846-49eb-942b-9bf778a7d2c8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 21949966-ca79-466a-a6c8-698ebd575aa4
+ - column:
+ name: uuid
+ value: 0cdbc3a3-9462-4e74-a78b-c7618aff0b9e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e821918b-15ea-4a78-8f7f-840bb3959ea1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5adbe212-db9f-4a6c-9871-226111051aa2
+ - column:
+ name: uuid
+ value: e7b9821a-fec2-4a9e-9213-badec9e4bd60
+ - column:
+ name: version
+ value: '7.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e86fca77-08a7-4fea-8785-c4dbdbb221ad
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e9154076-fd6e-4cb8-8f27-8d95111c6c59
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 01cf04fe-b053-40b9-868e-0436453ee927
+ - column:
+ name: uuid
+ value: 1f4f659f-5f6a-4e59-a8a8-c061579a5d01
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: app
+ - column:
+ name: vm_type
+ value: app
+ - column:
+ name: vm_type_tag
+ value: app
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e918ccc5-223a-4d8f-a6d1-73d3de95a6b3
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ca34c00-47ad-407b-8b31-d209843f7a07
+ - column:
+ name: uuid
+ value: a6a47256-5dad-44bb-afd3-a3dcb58b6493
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e949e615-fadb-44a6-84df-f9f39864dbce
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ea133bc3-41e3-415d-a0b2-c65665d6e44e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5d8c005f-4a39-408f-9371-fd6dbb816d52
+ - column:
+ name: uuid
+ value: a9ac2bcc-09d7-495a-9fcf-f24e505f06ef
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ea3747eb-8a8e-4714-917c-63fd80ffe88c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 52e18045-96d2-4150-940d-dfb0b8de5ad5
+ - column:
+ name: uuid
+ value: f16f1489-d1a9-4dba-b02d-43cbe052fcc6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: oam
+ - column:
+ name: vm_type
+ value: oam
+ - column:
+ name: vm_type_tag
+ value: oam
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eaa6a0ff-126e-491b-ae71-c66f305fb527
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f9737450-54bd-4567-b8aa-bc41eff0907c
+ - column:
+ name: uuid
+ value: 3a96d13f-ad83-4d66-9f09-49d348a1aa24
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd_server
+ - column:
+ name: vm_type
+ value: pd_server
+ - column:
+ name: vm_type_tag
+ value: pd_server
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eafb6ec4-8870-4d6c-a6e8-b0865268427a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fbb05866-aa6a-4dd4-97f7-a20346d5f024
+ - column:
+ name: uuid
+ value: a1fa23a7-c5c6-493e-a1f0-981af15e337c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: psm
+ - column:
+ name: vm_type
+ value: psm
+ - column:
+ name: vm_type_tag
+ value: psm
+ - column:
+ name: vm_image_name
+ value: NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2
+ - column:
+ name: vm_flavor_name
+ value: nv.c6r96d100
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eb386141-d1cd-418c-88d0-dd6769a73727
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b793b557-d2ab-4d37-bda1-b897925c5aec
+ - column:
+ name: uuid
+ value: 0a04f17d-b28b-435c-96d7-7bbe6c7072e5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eb653250-d8ab-419d-9b4a-eb0d283e3f84
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eb73da35-bf2f-4b15-a6fc-4a8c7a81ea2e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aaa774f2-5100-4b89-9ffa-75ca47774f21
+ - column:
+ name: uuid
+ value: 8081cb51-9c3d-4320-8f3b-9f5b8683f379
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ems
+ - column:
+ name: vm_type
+ value: ems
+ - column:
+ name: vm_type_tag
+ value: ems
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eb7edf17-9669-4a3f-8e4d-1a6c1d3e79cf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b0ded4b-5f4f-41e9-a462-9d844dbd4e16
+ - column:
+ name: uuid
+ value: b3be0f48-049b-4eae-a438-469f98d3666a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ebe51ba8-e766-4aab-93c9-9dda409f6e84
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ed014da5-013d-4dea-9f77-f1399adfd0c6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ed202651-4796-4cb4-94ca-382739d41dd4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 503d60bc-0b02-4a46-8b3f-0d6efa355c6c
+ - column:
+ name: uuid
+ value: 1e0ac2af-1887-46e5-adc9-4a6ded8e0b47
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: pd
+ - column:
+ name: vm_type
+ value: pd
+ - column:
+ name: vm_type_tag
+ value: pd
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ed8e372b-5893-4f81-ab4c-ad45e6f205b5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8d5acbcc-77b0-43ee-9775-8f4cd8fdf949
+ - column:
+ name: uuid
+ value: b50b4639-baf7-4472-9acc-fb576bc007e1
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: xsa
+ - column:
+ name: vm_type
+ value: xsa
+ - column:
+ name: vm_type_tag
+ value: xsa
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: nd.c4r8d0
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ede8fba4-b7ff-4650-a711-6d6207c4b49b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f62862e2-1845-4dfa-b957-bc299928f375
+ - column:
+ name: uuid
+ value: 14b6b533-f357-493d-a427-53e80dcf699f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eec51444-f917-4826-b6a8-e6221c7a90e4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c0738051-2a77-48a0-a0fa-dd5d5f8bcc31
+ - column:
+ name: uuid
+ value: 2e67a45a-97ea-4e54-87a7-75c2f7ad9163
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vmxvpfe
+ - column:
+ name: vm_type
+ value: vmxvpfe
+ - column:
+ name: vm_type_tag
+ value: vmxvpfe
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ value: ns.c20r16d25.v5
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ef26a5a2-9e4e-42ff-bff4-0f194cb2d972
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2c4a5c4-d809-4d19-9c02-308b34e89794
+ - column:
+ name: uuid
+ value: 65d44361-202b-4aeb-bf5d-ba318fc1f34d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: efb0efd8-16c6-4e62-bd3f-522990dff760
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3d101527-fe50-46e7-bd89-ad99e545d322
+ - column:
+ name: uuid
+ value: 729e3ea2-d7e7-4a4f-9516-04bf6df59834
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: efb4a2b2-bc92-4d78-9ffb-bcece5d0ccaf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1db9da95-cd4d-4225-ac5a-e919f299989b
+ - column:
+ name: uuid
+ value: 000ea3fe-76ca-4f10-9f7e-c65bbd597865
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: efc90207-24b1-47a1-928d-19350791ca47
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: efd437ed-2715-4fe4-a69a-eafc41e7f650
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f016575f-e7d9-4a90-aaf2-e6b429060fa8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bd670156-9175-4be4-9fde-09fb49dfac27
+ - column:
+ name: uuid
+ value: 097276ed-bb83-4805-9cce-ceda0046fe8f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ value: gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ value: Consumer Mobile DNS
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{naming_policy=gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*,
+ ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f0277eef-3729-4e66-8c72-a23f933c5c8f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 504c87bd-4d99-4237-9ef5-823f659f153f
+ - column:
+ name: uuid
+ value: 563300b6-3490-443f-acdc-a65b37a0d955
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: cognoscdp
+ - column:
+ name: vm_type
+ value: cognoscdp
+ - column:
+ name: vm_type_tag
+ value: cognoscdp
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f0606828-6ceb-497a-863d-b72c9d11fafd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f0961049-966a-440f-af4c-797befaea852
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f148e42e-d310-464f-9a27-bf3bc7ed2202
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 616633f4-2f25-4d7f-915c-105d97ec1390
+ - column:
+ name: uuid
+ value: e5a4b18a-0f96-4a63-aa75-1b6245e5a98a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: dns
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_type_tag
+ value: dns
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f1f35cf8-0a4e-48c9-a966-513fcf4863f1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e96677f3-5e25-4981-ab2e-4717179460e4
+ - column:
+ name: uuid
+ value: 87495082-054c-4c08-8701-a2daf1f39d61
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: smp
+ - column:
+ name: vm_type
+ value: smp
+ - column:
+ name: vm_type_tag
+ value: smp
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f219a42a-d5a6-4354-b072-259932ed8b48
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 16c726b8-c7fa-4479-8e7f-02eb6672fcee
+ - column:
+ name: uuid
+ value: ea2f1a09-26ea-4e3b-8534-8633cd98a5a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f2a5b03c-dca9-4152-b35e-95da0b2a42bd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: db32aef7-2854-4c45-b54b-6a8ba9b2a187
+ - column:
+ name: uuid
+ value: 9be0230e-8b41-472f-b116-c088031b6461
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f33b0238-a850-4b95-9078-2561fa509e04
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f39040ec-1feb-4a27-83e4-b5d3f184f896
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: 852c4237-cfdd-4695-9e75-bcd4cf7d38a3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f39128b6-1f38-4ca2-816b-3f15872de0bf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fb5f262a-269d-475c-bac2-31b009cdbe38
+ - column:
+ name: uuid
+ value: d5ac0c8f-4461-403b-aeb5-9b67f2ca7248
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ddc
+ - column:
+ name: vm_type
+ value: ddc
+ - column:
+ name: vm_type_tag
+ value: ddc
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f4267340-601e-4040-ad87-f915e929a7fa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1aa31df4-439a-4dcc-b649-a7ed13510ab4
+ - column:
+ name: uuid
+ value: 220a8d4f-d9e1-471e-8bc2-5c54d18de3c5
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2e36463-6fc4-474f-b99a-bdb244eeb4d0
+ - column:
+ name: uuid
+ value: 983f0d97-0403-47e9-929a-f696cddeaccf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vpg
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_type_tag
+ value: vpg
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f4906bee-f14a-4d10-ac33-99043205b5db
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 231e7f44-fdbc-40a0-b836-c3302421004d
+ - column:
+ name: uuid
+ value: e66f3e27-27f7-450c-b3b7-cdaf43d262b6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f4dd3fba-2106-4ba6-b834-b8876f072a3b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f580e854-ac3d-49d1-b581-80b72f5a2c81
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f59f0b93-65da-4d01-bff6-50733cc8a9db
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f5b646e3-bdef-4f05-88e8-7f8cbb13d27e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 11a268da-9a6e-4f39-8794-8de38f6cad63
+ - column:
+ name: uuid
+ value: 6f48d61b-58fb-494e-9450-3497531e456d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vvig
+ - column:
+ name: vm_type
+ value: vvig
+ - column:
+ name: vm_type_tag
+ value: vvig
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f75bbdcd-d848-4a8e-ba4b-5173a7dcbb5a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 75b03378-7319-418c-95e3-7a596ffa0c3b
+ - column:
+ name: uuid
+ value: b6f636f1-a834-4f24-a036-d0212a053688
+ - column:
+ name: version
+ value: '2.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: '{}'
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f7b8a554-4335-45b8-bb61-c0a9b6f3d0ca
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ea28c4ef-8200-4a97-b78c-c1e56f5089aa
+ - column:
+ name: uuid
+ value: 198d7317-ad56-4cc3-9027-7a835f72e547
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rtp_msc_b
+ - column:
+ name: vm_type
+ value: rtp_msc_b
+ - column:
+ name: vm_type_tag
+ value: rtp_msc_b
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f7d4ccaf-0f34-49e9-bb48-e652ca8a2705
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 72308d7a-5d2b-43d0-ab9d-1839fae15b63
+ - column:
+ name: uuid
+ value: f2c093f3-2f6d-46dd-880d-2831569cdaa9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: adm
+ - column:
+ name: vm_type
+ value: adm
+ - column:
+ name: vm_type_tag
+ value: adm
+ - column:
+ name: vm_image_name
+ value: '{}'
+ - column:
+ name: vm_flavor_name
+ value: nv.c12r32d320s32
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f7dbd366-3e6f-4078-8f57-0ec005a42aee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aedc2b1d-2d46-419a-a100-f19acc5dda4c
+ - column:
+ name: uuid
+ value: b6de808d-1bf1-4445-9096-7184865b90c8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: guardian
+ - column:
+ name: vm_type
+ value: guardian
+ - column:
+ name: vm_type_tag
+ value: guardian
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f84541f8-a56d-4ba6-8f2a-98bf872b4323
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4788a442-db68-4d49-8086-80881e2ebcaa
+ - column:
+ name: uuid
+ value: c691c12d-4cd4-4f6f-8a8c-eb520242ec39
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: rdn
+ - column:
+ name: vm_type
+ value: rdn
+ - column:
+ name: vm_type_tag
+ value: rdn
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f8581354-8c0c-4199-9fc3-dcdf0ecef3d9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3ecec5d9-7517-4970-9977-242b02f6cc92
+ - column:
+ name: uuid
+ value: eccdf6a2-4ad6-456b-892e-7b4109308445
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vdns
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_type_tag
+ value: vdns
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f88cf470-4821-4a8e-a088-9249eaf046b0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 78bad803-6e0e-4d03-8c66-72bcc7181953
+ - column:
+ name: uuid
+ value: 44463f30-180a-49af-837f-208aa4cf0a2a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homestead
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_type_tag
+ value: homestead
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f909049f-7457-40d2-83bc-e3a8ce282556
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f9484812-fe80-4f5a-8428-538ddbca2586
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5a4eaa4a-ae05-442a-8980-157ed29bcbc0
+ - column:
+ name: uuid
+ value: ae386fdd-e03e-46f1-98d4-013eb4cafa12
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vsn
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_type_tag
+ value: vsn
+ - column:
+ name: vm_image_name
+ value: PUT THE VM IMAGE NAME HERE (UBUNTU 1404)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE VM FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fa1a48a8-3939-4994-bc74-d57cc601e44a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fa606398-23cc-49c2-94f0-92b2ab6a4bb8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fb09a01b-249b-4038-bcf9-db20b0f206c9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4bdabf14-aef2-4def-8ee6-46efdf674a00
+ - column:
+ name: uuid
+ value: 85d52cd1-8fc2-4b27-a42c-cb79c3acc1e7
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fb29bfb6-5885-44d4-b792-c8bbf74127f9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fbc1a5aa-361c-4ebf-838f-e50784d09fc9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3c084584-265d-4191-b62b-a31cb4cdb239
+ - column:
+ name: uuid
+ value: eab27d98-6f01-4376-974d-2f602d08ec6d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fcaa6830-e5d2-4e51-8b2a-142ce5795ca9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fcb6d888-d5ef-4955-9474-ef4deae1201e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aeacd56b-fba6-4a9d-a79a-4fd5e25da60a
+ - column:
+ name: uuid
+ value: e853bc40-4f19-4854-b096-45f3ab82c7e9
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: homer
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_type_tag
+ value: homer
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fe0adb9f-6a53-4f5f-814a-7fd4a1f94aff
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: dd3b80d2-2bd5-447e-a477-c545cb5f12a3
+ - column:
+ name: uuid
+ value: d5d27789-37b3-48f7-9938-7b013b2d79a8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fe402490-fa32-48fa-9b64-c1be9feaeba8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 28602f11-3e2a-4d19-8e0e-2f85a5256f69
+ - column:
+ name: uuid
+ value: 9a3db35a-1416-4016-912a-afa57590ef6d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: eca_trx
+ - column:
+ name: vm_type
+ value: eca_trx
+ - column:
+ name: vm_type_tag
+ value: eca_trx
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fe5506eb-2cab-49d0-98aa-3f6e7af62928
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fea5c677-4b8b-492f-a23d-665020923070
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d10dcdb7-3f52-4303-a078-11d769ef33f4
+ - column:
+ name: uuid
+ value: c07f11c8-fccd-477c-bb70-5b7f939b3f08
+ - column:
+ name: version
+ value: '3.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fee32e95-4d59-4fb6-bb30-88f63752400f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0ba8c32b-e413-494b-afe2-2b10ccfa5ee6
+ - column:
+ name: uuid
+ value: 535e57f2-7913-4947-852a-dcd3a9020424
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: nat_fw
+ - column:
+ name: vm_type
+ value: nat_fw
+ - column:
+ name: vm_type_tag
+ value: nat_fw
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fef42f2f-7105-4d25-b5ea-d0488ba413b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b8098e5a-a3eb-4758-a311-729fbcbaa8ee
+ - column:
+ name: uuid
+ value: 5c712825-6389-4664-aeb0-0837faa5d9ad
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: managementui
+ - column:
+ name: vm_type
+ value: managementui
+ - column:
+ name: vm_type_tag
+ value: managementui
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fef48cfb-de1f-4482-b6fc-72cd47fa0998
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93
+ - column:
+ name: uuid
+ value: b425cf93-ca33-41e6-ba92-ce78501ac44e
+ - column:
+ name: version
+ value: '13.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ - column:
+ name: vm_type
+ - column:
+ name: vm_type_tag
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ff739f94-f33c-4a27-a84e-7ea813bf2e7c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1c2f2b6f-dadd-491e-b0bf-91eb8b97e524
+ - column:
+ name: uuid
+ value: d8ae78d3-880d-4a1a-a3af-64bd3077596b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: ps
+ - column:
+ name: vm_type
+ value: ps
+ - column:
+ name: vm_type_tag
+ value: ps
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: ff8f1549-c4cf-44b5-b8a3-884e1a586319
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b6c6f2bb-729d-436a-80bb-29e8e1e1dfbe
+ - column:
+ name: uuid
+ value: ba095f9d-43f0-4842-b526-56e58a47516a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vlb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_type_tag
+ value: vlb
+ - column:
+ name: vm_image_name
+ value: PUT THE IMAGE NAME HERE (UBUNTU 1604)
+ - column:
+ name: vm_flavor_name
+ value: PUT THE FLAVOR NAME HERE (m1.medium suggested)
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ value: '{ecomp_generated_naming=true}'
+ - column:
+ name: min_instances
+ valueNumeric: 0
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: vnfapi-vfc-001
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: vnfapi-invariant-vnf-001
+ - column:
+ name: uuid
+ value: vfc-001
+ - column:
+ name: version
+ value: v1
+ - column:
+ name: naming_policy
+ value: vfc-policy-001
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: nfc_function
+ - column:
+ name: nfc_naming_code
+ value: vfc1
+ - column:
+ name: vm_type
+ value: vlc
+ - column:
+ name: vm_type_tag
+ value: vlc
+ - column:
+ name: vm_image_name
+ - column:
+ name: vm_flavor_name
+ - column:
+ name: high_availability
+ - column:
+ name: nfc_naming
+ - column:
+ name: min_instances
+ - column:
+ name: max_instances
+ tableName: VFC_MODEL
+- changeSet:
+ id: 1616613628341-14
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1829
+ - column:
+ name: vfc_customization_uuid
+ value: fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1830
+ - column:
+ name: vfc_customization_uuid
+ value: fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1831
+ - column:
+ name: vfc_customization_uuid
+ value: fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1832
+ - column:
+ name: vfc_customization_uuid
+ value: c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1833
+ - column:
+ name: vfc_customization_uuid
+ value: c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1834
+ - column:
+ name: vfc_customization_uuid
+ value: 5a81616f-3b85-47f9-b3a6-43ddc9d705d1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1835
+ - column:
+ name: vfc_customization_uuid
+ value: 5a81616f-3b85-47f9-b3a6-43ddc9d705d1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1836
+ - column:
+ name: vfc_customization_uuid
+ value: 1d63438f-8683-481d-af5c-8a440ff6c86e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1837
+ - column:
+ name: vfc_customization_uuid
+ value: 1d63438f-8683-481d-af5c-8a440ff6c86e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1838
+ - column:
+ name: vfc_customization_uuid
+ value: c8033d10-afbb-4310-b90b-abd4140c191f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1839
+ - column:
+ name: vfc_customization_uuid
+ value: c8033d10-afbb-4310-b90b-abd4140c191f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1840
+ - column:
+ name: vfc_customization_uuid
+ value: c8033d10-afbb-4310-b90b-abd4140c191f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1841
+ - column:
+ name: vfc_customization_uuid
+ value: 28ff8b3e-486a-4f15-bcd8-5bab711d5c33
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1842
+ - column:
+ name: vfc_customization_uuid
+ value: 28ff8b3e-486a-4f15-bcd8-5bab711d5c33
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1843
+ - column:
+ name: vfc_customization_uuid
+ value: e7f9b901-b846-49eb-942b-9bf778a7d2c8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1844
+ - column:
+ name: vfc_customization_uuid
+ value: e7f9b901-b846-49eb-942b-9bf778a7d2c8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1845
+ - column:
+ name: vfc_customization_uuid
+ value: 9166ff2f-23cb-4028-97e5-dc591fcfef3c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1846
+ - column:
+ name: vfc_customization_uuid
+ value: 9166ff2f-23cb-4028-97e5-dc591fcfef3c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1847
+ - column:
+ name: vfc_customization_uuid
+ value: 1782c476-7f94-4c01-9921-02459a6ce3cb
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1848
+ - column:
+ name: vfc_customization_uuid
+ value: 1782c476-7f94-4c01-9921-02459a6ce3cb
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1849
+ - column:
+ name: vfc_customization_uuid
+ value: 1782c476-7f94-4c01-9921-02459a6ce3cb
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1850
+ - column:
+ name: vfc_customization_uuid
+ value: 75fabac4-56d8-4976-899f-0119543fd2b8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1851
+ - column:
+ name: vfc_customization_uuid
+ value: 75fabac4-56d8-4976-899f-0119543fd2b8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1852
+ - column:
+ name: vfc_customization_uuid
+ value: 0b221466-3962-42cd-b241-e08093869999
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1853
+ - column:
+ name: vfc_customization_uuid
+ value: 0b221466-3962-42cd-b241-e08093869999
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1860
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1861
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1862
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1863
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1864
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1865
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1866
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1867
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1868
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1869
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1870
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1871
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1872
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1873
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1874
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1875
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1876
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1877
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1878
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1879
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1880
+ - column:
+ name: vfc_customization_uuid
+ value: 4795998e-8cd5-4b8f-ada9-fe9488392da8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1881
+ - column:
+ name: vfc_customization_uuid
+ value: 4795998e-8cd5-4b8f-ada9-fe9488392da8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1882
+ - column:
+ name: vfc_customization_uuid
+ value: 4795998e-8cd5-4b8f-ada9-fe9488392da8
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1883
+ - column:
+ name: vfc_customization_uuid
+ value: 1fc2d7f5-036f-4a77-b840-83277e76f13c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1884
+ - column:
+ name: vfc_customization_uuid
+ value: 1fc2d7f5-036f-4a77-b840-83277e76f13c
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1885
+ - column:
+ name: vfc_customization_uuid
+ value: bb69f2d4-be8a-400f-9d6d-6e9500664dbc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1886
+ - column:
+ name: vfc_customization_uuid
+ value: bb69f2d4-be8a-400f-9d6d-6e9500664dbc
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1887
+ - column:
+ name: vfc_customization_uuid
+ value: cf60de5e-1332-43fc-8640-a94b5013dea7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1888
+ - column:
+ name: vfc_customization_uuid
+ value: cf60de5e-1332-43fc-8640-a94b5013dea7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1889
+ - column:
+ name: vfc_customization_uuid
+ value: cf60de5e-1332-43fc-8640-a94b5013dea7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1890
+ - column:
+ name: vfc_customization_uuid
+ value: db207678-8018-4829-bec6-4143743b1a29
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1891
+ - column:
+ name: vfc_customization_uuid
+ value: db207678-8018-4829-bec6-4143743b1a29
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1892
+ - column:
+ name: vfc_customization_uuid
+ value: 54e98abe-743a-400d-809c-095644d92dd9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1893
+ - column:
+ name: vfc_customization_uuid
+ value: 54e98abe-743a-400d-809c-095644d92dd9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1894
+ - column:
+ name: vfc_customization_uuid
+ value: aa999b75-51fd-451a-8556-c59e13cb3cd6
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1895
+ - column:
+ name: vfc_customization_uuid
+ value: aa999b75-51fd-451a-8556-c59e13cb3cd6
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1896
+ - column:
+ name: vfc_customization_uuid
+ value: aa999b75-51fd-451a-8556-c59e13cb3cd6
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1897
+ - column:
+ name: vfc_customization_uuid
+ value: f8581354-8c0c-4199-9fc3-dcdf0ecef3d9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1898
+ - column:
+ name: vfc_customization_uuid
+ value: f8581354-8c0c-4199-9fc3-dcdf0ecef3d9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1899
+ - column:
+ name: vfc_customization_uuid
+ value: bfbbab1c-b257-4ea9-81e0-416755b28df7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1900
+ - column:
+ name: vfc_customization_uuid
+ value: bfbbab1c-b257-4ea9-81e0-416755b28df7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1901
+ - column:
+ name: vfc_customization_uuid
+ value: 66bc8dbf-26c6-4b12-9b87-c29b14cb1bac
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1902
+ - column:
+ name: vfc_customization_uuid
+ value: 66bc8dbf-26c6-4b12-9b87-c29b14cb1bac
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1903
+ - column:
+ name: vfc_customization_uuid
+ value: ff8f1549-c4cf-44b5-b8a3-884e1a586319
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1904
+ - column:
+ name: vfc_customization_uuid
+ value: ff8f1549-c4cf-44b5-b8a3-884e1a586319
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1905
+ - column:
+ name: vfc_customization_uuid
+ value: ff8f1549-c4cf-44b5-b8a3-884e1a586319
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1906
+ - column:
+ name: vfc_customization_uuid
+ value: 12cee19b-3c7e-4a61-9c3e-123702c6a2f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1907
+ - column:
+ name: vfc_customization_uuid
+ value: 12cee19b-3c7e-4a61-9c3e-123702c6a2f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1908
+ - column:
+ name: vfc_customization_uuid
+ value: 64508b50-a134-41d4-a957-ba40718dc250
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1909
+ - column:
+ name: vfc_customization_uuid
+ value: 64508b50-a134-41d4-a957-ba40718dc250
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1910
+ - column:
+ name: vfc_customization_uuid
+ value: 73c626ff-5b74-4f4f-a13a-a0998fa197e5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1911
+ - column:
+ name: vfc_customization_uuid
+ value: 73c626ff-5b74-4f4f-a13a-a0998fa197e5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1912
+ - column:
+ name: vfc_customization_uuid
+ value: 6be7deec-f93d-48ab-a6c4-ea844da22d0f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1913
+ - column:
+ name: vfc_customization_uuid
+ value: 6be7deec-f93d-48ab-a6c4-ea844da22d0f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1914
+ - column:
+ name: vfc_customization_uuid
+ value: 6be7deec-f93d-48ab-a6c4-ea844da22d0f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1915
+ - column:
+ name: vfc_customization_uuid
+ value: 6163e3b4-ad26-4b16-a3cd-d0f3a3c66214
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1916
+ - column:
+ name: vfc_customization_uuid
+ value: 6163e3b4-ad26-4b16-a3cd-d0f3a3c66214
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1917
+ - column:
+ name: vfc_customization_uuid
+ value: 708364f6-83e5-40dd-a3cd-1903cda658f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1918
+ - column:
+ name: vfc_customization_uuid
+ value: 708364f6-83e5-40dd-a3cd-1903cda658f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1919
+ - column:
+ name: vfc_customization_uuid
+ value: b4100ed9-507a-4be4-a456-0e49482a58ac
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1920
+ - column:
+ name: vfc_customization_uuid
+ value: b4100ed9-507a-4be4-a456-0e49482a58ac
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1921
+ - column:
+ name: vfc_customization_uuid
+ value: b4100ed9-507a-4be4-a456-0e49482a58ac
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1922
+ - column:
+ name: vfc_customization_uuid
+ value: 31b53e81-28c3-482e-842c-0ebd21053b59
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1923
+ - column:
+ name: vfc_customization_uuid
+ value: 31b53e81-28c3-482e-842c-0ebd21053b59
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1924
+ - column:
+ name: vfc_customization_uuid
+ value: 919ae940-5485-4270-9bb2-980213db6b95
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1925
+ - column:
+ name: vfc_customization_uuid
+ value: 919ae940-5485-4270-9bb2-980213db6b95
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1926
+ - column:
+ name: vfc_customization_uuid
+ value: f219a42a-d5a6-4354-b072-259932ed8b48
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1927
+ - column:
+ name: vfc_customization_uuid
+ value: f219a42a-d5a6-4354-b072-259932ed8b48
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1928
+ - column:
+ name: vfc_customization_uuid
+ value: 2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1929
+ - column:
+ name: vfc_customization_uuid
+ value: 2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1930
+ - column:
+ name: vfc_customization_uuid
+ value: 5418661d-07e1-403a-8caf-03f5442f2308
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1931
+ - column:
+ name: vfc_customization_uuid
+ value: 5418661d-07e1-403a-8caf-03f5442f2308
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1932
+ - column:
+ name: vfc_customization_uuid
+ value: 652259eb-1b57-4f6e-8d22-6420a8261938
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1933
+ - column:
+ name: vfc_customization_uuid
+ value: 652259eb-1b57-4f6e-8d22-6420a8261938
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1934
+ - column:
+ name: vfc_customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: brgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1935
+ - column:
+ name: vfc_customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1936
+ - column:
+ name: vfc_customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1937
+ - column:
+ name: vfc_customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1938
+ - column:
+ name: vfc_customization_uuid
+ value: 493be6dd-c307-4d84-bee4-2ed50e044f54
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: network_role_tag
+ value: vbrgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1939
+ - column:
+ name: vfc_customization_uuid
+ value: 4440906c-a7e7-478b-a637-812999219fd1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1940
+ - column:
+ name: vfc_customization_uuid
+ value: 4440906c-a7e7-478b-a637-812999219fd1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1941
+ - column:
+ name: vfc_customization_uuid
+ value: 4440906c-a7e7-478b-a637-812999219fd1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1942
+ - column:
+ name: vfc_customization_uuid
+ value: bf9a909c-17ef-4a69-ac1f-56d05c53c528
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1943
+ - column:
+ name: vfc_customization_uuid
+ value: bf9a909c-17ef-4a69-ac1f-56d05c53c528
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1944
+ - column:
+ name: vfc_customization_uuid
+ value: bf9a909c-17ef-4a69-ac1f-56d05c53c528
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1945
+ - column:
+ name: vfc_customization_uuid
+ value: 2b44c9db-28e1-45aa-b297-a4511d5317fe
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1946
+ - column:
+ name: vfc_customization_uuid
+ value: 2b44c9db-28e1-45aa-b297-a4511d5317fe
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1947
+ - column:
+ name: vfc_customization_uuid
+ value: fb09a01b-249b-4038-bcf9-db20b0f206c9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1948
+ - column:
+ name: vfc_customization_uuid
+ value: fb09a01b-249b-4038-bcf9-db20b0f206c9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1949
+ - column:
+ name: vfc_customization_uuid
+ value: fb09a01b-249b-4038-bcf9-db20b0f206c9
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1950
+ - column:
+ name: vfc_customization_uuid
+ value: 547126cc-f04f-458b-906a-ecb8463a058a
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1951
+ - column:
+ name: vfc_customization_uuid
+ value: 547126cc-f04f-458b-906a-ecb8463a058a
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1952
+ - column:
+ name: vfc_customization_uuid
+ value: 4dfadd90-d618-4c8d-b47d-60efebf6d01d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1953
+ - column:
+ name: vfc_customization_uuid
+ value: 4dfadd90-d618-4c8d-b47d-60efebf6d01d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1954
+ - column:
+ name: vfc_customization_uuid
+ value: 6e3b40fc-e28b-4158-ae96-fcdb901cb7f4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1955
+ - column:
+ name: vfc_customization_uuid
+ value: 6e3b40fc-e28b-4158-ae96-fcdb901cb7f4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1956
+ - column:
+ name: vfc_customization_uuid
+ value: 6e3b40fc-e28b-4158-ae96-fcdb901cb7f4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1957
+ - column:
+ name: vfc_customization_uuid
+ value: 195f76ea-8256-4a07-b525-b40267c37b21
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1958
+ - column:
+ name: vfc_customization_uuid
+ value: 195f76ea-8256-4a07-b525-b40267c37b21
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1959
+ - column:
+ name: vfc_customization_uuid
+ value: f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1960
+ - column:
+ name: vfc_customization_uuid
+ value: f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1961
+ - column:
+ name: vfc_customization_uuid
+ value: b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: network_role_tag
+ value: vbrgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1962
+ - column:
+ name: vfc_customization_uuid
+ value: b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: network_role_tag
+ value: vbrgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1963
+ - column:
+ name: vfc_customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1964
+ - column:
+ name: vfc_customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1965
+ - column:
+ name: vfc_customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1966
+ - column:
+ name: vfc_customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1967
+ - column:
+ name: vfc_customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1968
+ - column:
+ name: vfc_customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1969
+ - column:
+ name: vfc_customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1970
+ - column:
+ name: vfc_customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: network_role_tag
+ value: cpe_public
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1971
+ - column:
+ name: vfc_customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1972
+ - column:
+ name: vfc_customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1973
+ - column:
+ name: vfc_customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1974
+ - column:
+ name: vfc_customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1975
+ - column:
+ name: vfc_customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1976
+ - column:
+ name: vfc_customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1977
+ - column:
+ name: vfc_customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1978
+ - column:
+ name: vfc_customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1985
+ - column:
+ name: vfc_customization_uuid
+ value: 8be6b1e3-cfbb-4f62-8820-067bc784585d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1986
+ - column:
+ name: vfc_customization_uuid
+ value: 8be6b1e3-cfbb-4f62-8820-067bc784585d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1987
+ - column:
+ name: vfc_customization_uuid
+ value: 8be6b1e3-cfbb-4f62-8820-067bc784585d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1988
+ - column:
+ name: vfc_customization_uuid
+ value: 98f311f9-39e0-4b96-be75-548fe6953247
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1989
+ - column:
+ name: vfc_customization_uuid
+ value: 98f311f9-39e0-4b96-be75-548fe6953247
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1990
+ - column:
+ name: vfc_customization_uuid
+ value: c231d966-7c33-475b-b1da-6d8183a14f36
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1991
+ - column:
+ name: vfc_customization_uuid
+ value: c231d966-7c33-475b-b1da-6d8183a14f36
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1992
+ - column:
+ name: vfc_customization_uuid
+ value: 25d3be48-fc4b-453f-96de-97e07e6c18f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1993
+ - column:
+ name: vfc_customization_uuid
+ value: 25d3be48-fc4b-453f-96de-97e07e6c18f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1994
+ - column:
+ name: vfc_customization_uuid
+ value: 25d3be48-fc4b-453f-96de-97e07e6c18f5
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1995
+ - column:
+ name: vfc_customization_uuid
+ value: 377825eb-e83d-49b6-81ce-c99a0d30064e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1996
+ - column:
+ name: vfc_customization_uuid
+ value: 377825eb-e83d-49b6-81ce-c99a0d30064e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1997
+ - column:
+ name: vfc_customization_uuid
+ value: 37e7c1c1-d886-47e1-90a8-f907fcb312c3
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1998
+ - column:
+ name: vfc_customization_uuid
+ value: 37e7c1c1-d886-47e1-90a8-f907fcb312c3
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1999
+ - column:
+ name: vfc_customization_uuid
+ value: 267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2000
+ - column:
+ name: vfc_customization_uuid
+ value: 267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2001
+ - column:
+ name: vfc_customization_uuid
+ value: 267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2002
+ - column:
+ name: vfc_customization_uuid
+ value: bffb18fa-e09f-4d2e-9a56-6f032e03ac19
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2003
+ - column:
+ name: vfc_customization_uuid
+ value: bffb18fa-e09f-4d2e-9a56-6f032e03ac19
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2004
+ - column:
+ name: vfc_customization_uuid
+ value: 08559203-1f1e-4424-ac5f-6ec24bb8bf6d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2005
+ - column:
+ name: vfc_customization_uuid
+ value: 08559203-1f1e-4424-ac5f-6ec24bb8bf6d
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2006
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: brgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2007
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: brgemu_bng_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2008
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2009
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2010
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2011
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2012
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2013
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: network_role_tag
+ value: cpe_signal
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2020
+ - column:
+ name: vfc_customization_uuid
+ value: 30969396-fa5a-4faf-9163-db6484e54e59
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2021
+ - column:
+ name: vfc_customization_uuid
+ value: 30969396-fa5a-4faf-9163-db6484e54e59
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2022
+ - column:
+ name: vfc_customization_uuid
+ value: 3b08d0cb-3f1c-4178-8dab-bf7b85782f00
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2023
+ - column:
+ name: vfc_customization_uuid
+ value: 3b08d0cb-3f1c-4178-8dab-bf7b85782f00
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2024
+ - column:
+ name: vfc_customization_uuid
+ value: 3b08d0cb-3f1c-4178-8dab-bf7b85782f00
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2025
+ - column:
+ name: vfc_customization_uuid
+ value: 98608c67-9b1a-4160-849c-060171c0ae16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2026
+ - column:
+ name: vfc_customization_uuid
+ value: 98608c67-9b1a-4160-849c-060171c0ae16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2027
+ - column:
+ name: vfc_customization_uuid
+ value: 13ec94e1-b04c-4fd1-99e6-c982020e453f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2028
+ - column:
+ name: vfc_customization_uuid
+ value: 13ec94e1-b04c-4fd1-99e6-c982020e453f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2029
+ - column:
+ name: vfc_customization_uuid
+ value: 13ec94e1-b04c-4fd1-99e6-c982020e453f
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2030
+ - column:
+ name: vfc_customization_uuid
+ value: 416b75a7-32ea-458c-95fe-c14854d618ca
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2031
+ - column:
+ name: vfc_customization_uuid
+ value: 416b75a7-32ea-458c-95fe-c14854d618ca
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2032
+ - column:
+ name: vfc_customization_uuid
+ value: 1203cf96-76de-4325-bb58-0053f1c6ddb1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2033
+ - column:
+ name: vfc_customization_uuid
+ value: 1203cf96-76de-4325-bb58-0053f1c6ddb1
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2034
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2035
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: mux_gw_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2036
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2037
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2038
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2039
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: network_role_tag
+ value: bng_gmux_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ - column:
+ name: ipv6_use_dhcp
+ value: N
+ - column:
+ name: ipv4_ip_version
+ - column:
+ name: ipv6_ip_version
+ value: '6'
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2040
+ - column:
+ name: vfc_customization_uuid
+ value: e472f39e-2371-4dce-8b5e-883094836201
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2041
+ - column:
+ name: vfc_customization_uuid
+ value: e472f39e-2371-4dce-8b5e-883094836201
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2042
+ - column:
+ name: vfc_customization_uuid
+ value: 22245ea3-605f-4a9f-94b9-cf39ef7f3c0e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2043
+ - column:
+ name: vfc_customization_uuid
+ value: 22245ea3-605f-4a9f-94b9-cf39ef7f3c0e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2044
+ - column:
+ name: vfc_customization_uuid
+ value: 22245ea3-605f-4a9f-94b9-cf39ef7f3c0e
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2045
+ - column:
+ name: vfc_customization_uuid
+ value: cf16c622-b9e4-4712-924b-8008f47d84ef
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2046
+ - column:
+ name: vfc_customization_uuid
+ value: cf16c622-b9e4-4712-924b-8008f47d84ef
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: network_role_tag
+ value: vlb_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2047
+ - column:
+ name: vfc_customization_uuid
+ value: 61ac4ca1-9516-43c8-ab0e-d869e3d5d011
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2048
+ - column:
+ name: vfc_customization_uuid
+ value: 61ac4ca1-9516-43c8-ab0e-d869e3d5d011
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2049
+ - column:
+ name: vfc_customization_uuid
+ value: 22c63259-70c3-4d19-8f75-47ebef517be4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2050
+ - column:
+ name: vfc_customization_uuid
+ value: 22c63259-70c3-4d19-8f75-47ebef517be4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2051
+ - column:
+ name: vfc_customization_uuid
+ value: 22c63259-70c3-4d19-8f75-47ebef517be4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2052
+ - column:
+ name: vfc_customization_uuid
+ value: 61a24df6-cde4-4d83-ae28-ed1f60e85381
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2053
+ - column:
+ name: vfc_customization_uuid
+ value: 61a24df6-cde4-4d83-ae28-ed1f60e85381
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2054
+ - column:
+ name: vfc_customization_uuid
+ value: bfd5e865-92a4-45a1-888d-ba7c2497ad50
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2055
+ - column:
+ name: vfc_customization_uuid
+ value: bfd5e865-92a4-45a1-888d-ba7c2497ad50
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2056
+ - column:
+ name: vfc_customization_uuid
+ value: d057afa2-edab-4be3-93cb-89854e40c298
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2057
+ - column:
+ name: vfc_customization_uuid
+ value: d057afa2-edab-4be3-93cb-89854e40c298
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2058
+ - column:
+ name: vfc_customization_uuid
+ value: d057afa2-edab-4be3-93cb-89854e40c298
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2059
+ - column:
+ name: vfc_customization_uuid
+ value: f9484812-fe80-4f5a-8428-538ddbca2586
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2060
+ - column:
+ name: vfc_customization_uuid
+ value: f9484812-fe80-4f5a-8428-538ddbca2586
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: network_role_tag
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2061
+ - column:
+ name: vfc_customization_uuid
+ value: 63227786-48c6-4e70-a229-64a4dd79d8c4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: unprotected_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 2062
+ - column:
+ name: vfc_customization_uuid
+ value: 63227786-48c6-4e70-a229-64a4dd79d8c4
+ - column:
+ name: network_role
+ value: default-network-role
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: network_role_tag
+ value: onap_private
+ - column:
+ name: ipv4_count
+ valueNumeric: 0
+ - column:
+ name: ipv6_count
+ valueNumeric: 0
+ - column:
+ name: ipv4_use_dhcp
+ value: N
+ - column:
+ name: ipv6_use_dhcp
+ - column:
+ name: ipv4_ip_version
+ value: '4'
+ - column:
+ name: ipv6_ip_version
+ - column:
+ name: extcp_subnetpool_id
+ - column:
+ name: ipv4_floating_count
+ - column:
+ name: ipv6_floating_count
+ - column:
+ name: ipv4_address_plan_name
+ - column:
+ name: ipv6_address_plan_name
+ - column:
+ name: ipv4_vrf_name
+ - column:
+ name: ipv6_vrf_name
+ - column:
+ name: subnet_role
+ - column:
+ name: subinterface_indicator
+ tableName: VFC_TO_NETWORK_ROLE_MAPPING
+- changeSet:
+ id: 1616613628341-15
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 02328586-9428-4655-ba74-b07ec04b87b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 878a7207-457f-4397-875c-2960790cc45d
+ - column:
+ name: uuid
+ value: 6ba0507d-0cc0-49b7-9f7d-14b77208a91d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 20066c20-7e1c-4c6c-ad35
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: a846d6ba-f144-4f23-a618
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 050cb7c0-3c3e-418d-b08d-3c58fd11fa55
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: eccb19dc-ea1d-438f-9fdd-639a7e715f52
+ - column:
+ name: uuid
+ value: 9ad0a466-446e-47ec-a193-03644a0440b8
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: d42ff177-2274-4e2c-ab72
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: e6f60590-3d68-4657-baef
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0a534cd4-6b40-4294-8a3c-411db2180e0c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 740ea8c7-17ba-4584-ac37-816cb64e2500
+ - column:
+ name: uuid
+ value: 3d0d5075-7e0e-4965-a964-b808f159d063
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_infra_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0a8170be-6630-473e-a281-72bb8c5073c1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 77144646-7def-4ae3-9eeb-cf6db0a4f940
+ - column:
+ name: uuid
+ value: c1130d82-dbdf-480b-9dfe-59e92c731acd
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 02337616-7925-4c29-a084
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: c1536ceb-24bf-45ef-9298
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 11a6cd75-91a6-47bc-aeed-75a27db27357
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 872a9bde-6d3f-4e81-8ba3-29e952013694
+ - column:
+ name: uuid
+ value: d996dbf4-036e-42c0-aa1c-e7d7918e160b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 44353c56-dcc6-4abd-ba5f
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 311201a8-87ed-4a48-b9dd
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1308b712-e956-4678-bbb4-95bb053719fb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3e8c0291-3367-4fbe-a7c6-50e1c6956a8d
+ - column:
+ name: uuid
+ value: 2841744d-b8e5-467b-b1f9-438168db6c3b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vIMSVSP20180608
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 00992ad9-cada-4520-84aa
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 13432bde-f701-4c8d-9962-d4325c60d466
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0cf78904-45e6-4e6a-8e9e-683429f99c85
+ - column:
+ name: uuid
+ value: 0c8109b5-7d77-49d3-9165-8a5f5133622a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: f8ed27d1-03f6-45cb-9d7f
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: d5cbb80e-fe54-474b-aeff
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 136ca73b-ac72-4734-8236-13304e9aed60
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1b8908b1-0af7-4fa2-980d-a43bc85ef8f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 176f26ba-9bf8-46b6-b54d-53cd0c14183d
+ - column:
+ name: uuid
+ value: d848e8a2-5360-445a-b98d-6f3d2a787dc5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpear_tunnelxconn_0412a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: TunnelXConn
+ - column:
+ name: nf_role
+ value: TunnelXConn
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 23219762-d5d8-48aa-b8e7-674878f16d98
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c1aff822-c464-474c-a56b-d64f7442fd10
+ - column:
+ name: uuid
+ value: 3a519696-4606-4996-8544-649a40bb403a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: cd78de6e-0e49-4503-8de5
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: c11d4b2e-f8fe-448e-bc82
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 24b7a42c-43a2-459a-8c0b-14cfe2983078
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 35b259b6-d367-4e2d-bd79-dd6ec0740e2e
+ - column:
+ name: uuid
+ value: 603377e1-2058-44ac-81cb-ce44e7f7972d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 91e8ae5e-f191-4512-865a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 8ae7758e-6682-4c18-b886
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 25c0e63a-62be-45da-9cb3-37e244fcf664
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 48d5645b-2b71-4854-ba2f-cca3d4c96f05
+ - column:
+ name: uuid
+ value: 79e9ee95-cdb9-4e22-9daa-35dcfb0b949c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vPacketGen-test
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: marco
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 28978eea-6b39-497a-9ee8-ce2f92159235
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 19c5417a-fead-41f2-a29e-c1bd7593601f
+ - column:
+ name: uuid
+ value: 5cd256a5-64a5-46cf-bc8f-4131533cc8e2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpear_brg_0412a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: BRG
+ - column:
+ name: nf_role
+ value: BRG
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2a1eb839-b3c6-40f9-b7c1-efb3b26c70dc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2af2bbbe-63d7-49ca-be71-90e55a813a99
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b8937bf5-6a09-46ae-894a-c0637c21f796
+ - column:
+ name: uuid
+ value: 8127d692-4150-400a-afba-220682fca4a6
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 5cba334e-f675-4e7b-bdca
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: bcd5e1f3-59e4-479b-9860
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2f3b6df7-1c81-46f7-b5ef-2529627e6417
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 006912bd-83e4-4c82-8133-4ca48d26351d
+ - column:
+ name: uuid
+ value: b988526d-2743-4c98-902b-7ed8ecbc7dd4
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 91ae7763-9640-44db-9741
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 0a7a8936-cf4b-4b9b-b9d9
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 35803e11-0a26-4d3c-9056-17371c038f0f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 366e9c64-caf3-46d5-a849-61695400be91
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bf28c330-ea31-420d-a251-e188aa60ba3a
+ - column:
+ name: uuid
+ value: b7c0d9bf-049e-46ab-9293-8801e0a338bf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vIMSVSP20180608b
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 00992ad9-cada-4520-84aa
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3803bf29-c913-4f7b-9483-1dfef28e1d78
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3ab10178-2307-4779-993b-d8d916642770
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 63d62772-d133-4237-85c9-3fe0bb9d1e3d
+ - column:
+ name: uuid
+ value: e07555fb-90fb-4a49-80df-82083e6c9fb2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vFirewall-test
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: marco
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3bc3c7fb-2aa2-485c-be1f-cdbba0409252
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8ec6af7c-722a-4bb8-bc03-fefd95701b95
+ - column:
+ name: uuid
+ value: 46a14e4e-046f-4b4f-a709-720c2cf294fc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgw_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: vGW
+ - column:
+ name: nf_role
+ value: vGW
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3bf1f25c-6120-4b26-9208-2e14e8093287
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2d434620-6804-41a3-81ed-070b4fdc80d3
+ - column:
+ name: uuid
+ value: 23b52494-a020-4f24-8aaa-928c770a312d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 411213cf-2ef7-4baf-937f
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 57769652-ba3b-44b8-aea8
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3df5fb34-6c7c-4f8e-b5d2-e870c39e2a2a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 72e4175b-2ff5-450e-8682-5d914da139b6
+ - column:
+ name: uuid
+ value: 1cb4c849-dfc6-46cd-b51e-115f12fe949a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: db936876-875a-4b76-a63a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 88d88c5e-b523-4f95-bda9
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 497101aa-128a-4212-b1bc-4acc4ef55f39
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: af3c7a82-93ab-4c59-a1b8-3942fd9003cc
+ - column:
+ name: uuid
+ value: 937577ab-a130-47eb-be8c-9b147645c07f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 5b544259-d509-4de2-8f6b
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 801b3622-9df2-41c0-b5ed
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4a60ae92-57ac-447a-b24e-67fc0d59e232
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4a6cb9bd-8a5b-4a74-b014-e8eb31d9aff0
+ - column:
+ name: uuid
+ value: 711b6b74-0970-415e-8111-e307748d4e1e
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: f4e99124-b49f-415c-89c4
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 30865633-d5c2-4571-bb21
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4d1b6ce4-cd7e-42ce-bdf4-173710ebd53c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3161f1e7-5d66-4797-86ea-5d4e0ad1abac
+ - column:
+ name: uuid
+ value: ff0c0a5f-7bb5-43d4-98b2-919351e62058
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vIMSVSP20180608a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 00992ad9-cada-4520-84aa
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5525dd38-b185-4ef1-aa66-6e96d0437f0b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 67cf04b1-14f4-4210-93e5-cd3cf2f3d2fe
+ - column:
+ name: uuid
+ value: 52926239-bb9e-4211-b2bb-8f7e73c7ffad
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 842ab74b-ba7d-431f-955c
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 40c66297-aea9-463f-997e
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5724fcc8-2ae2-45ce-8d44-795092b85dee
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59d0a2ee-dd09-4fd7-866f-acaa739855bc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 699b2861-22f0-4a32-8497-1d373b7c85f8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 54f69a75-7add-4be5-ade9-44bfe6c4ef71
+ - column:
+ name: uuid
+ value: 5918eca3-5e4c-4a5b-9231-6a60b96cab5a
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: b4f764be-4b65-41b5-a8b5
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 2d8b2abb-b313-4dec-8ed1
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6e52d51a-1d5a-4dfd-ab69-dac16784e620
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8fb3d57e-3889-4c8f-ba30-d20d02e0aa4d
+ - column:
+ name: uuid
+ value: bf2b4d3c-d07a-47de-8fa6-6b7ad6edd0cf
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: b40a75f9-8943-429b-8f59
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: ebbecfe5-96c4-44ca-af00
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7236afdf-903f-43c3-969d-3c99643787ea
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 31be6f4c-4793-49af-bb2a-4869936f3868
+ - column:
+ name: uuid
+ value: 466d99e6-3e6a-4073-939e-242fa4dc2d7b
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vbrg_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 73379cc8-4cd2-49bb-a3b5-e3e38693aafc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 63d62772-d133-4237-85c9-3fe0bb9d1e3d
+ - column:
+ name: uuid
+ value: e07555fb-90fb-4a49-80df-82083e6c9fb2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vFirewall-test
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: marco
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7b708ab0-1d4c-472c-9822-a7d020c4fecf
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 48d5645b-2b71-4854-ba2f-cca3d4c96f05
+ - column:
+ name: uuid
+ value: 79e9ee95-cdb9-4e22-9daa-35dcfb0b949c
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vPacketGen-test
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: marco
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 80bc8335-145b-4b42-9408-d450358f1bab
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 02e9ca0a-8043-4bf6-80e8-e2d3cec23e29
+ - column:
+ name: uuid
+ value: 96f065f6-fe4f-4163-aded-d25bfd69426d
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 14b9172f-c34c-493f-8531
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 7ccfd50d-304c-4a10-a696
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 86c1f2b6-a2b5-44cc-97d3-ae29366ac2b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bdde7265-5fc0-4130-8779-4abccf306c09
+ - column:
+ name: uuid
+ value: 113cd212-af51-4b98-ad07-14ef3abbff83
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: becdb9c0-1855-4f1b-bc0d
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 0ce7fa73-7a42-43b9-9c41
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8757a5ba-4c80-4de3-8c61-5fe136bd02be
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6f5fc5e6-5126-48c2-962d-d6a8336cf38c
+ - column:
+ name: uuid
+ value: 90102bff-1096-4e84-946c-c6c865f15036
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vIMSVSP20180607
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 00992ad9-cada-4520-84aa
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8892322d-8797-4ecd-a4b1-bf0cdc426541
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 176f26ba-9bf8-46b6-b54d-53cd0c14183d
+ - column:
+ name: uuid
+ value: d848e8a2-5360-445a-b98d-6f3d2a787dc5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpear_tunnelxconn_0412a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: TunnelXConn
+ - column:
+ name: nf_role
+ value: TunnelXConn
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8ad76346-0545-4c65-a54c-8bcd62c8d7f6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 52f8a7ed-190e-49f8-bb24-8944027a92f5
+ - column:
+ name: uuid
+ value: cf4ad538-318d-46ee-81d9-5f8d006e3606
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vLoadBalancerMS
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ value: nf-function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: nf-test
+ - column:
+ name: nf_role
+ value: nf-role
+ - column:
+ name: vendor
+ value: marco
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8cd3bf7d-6771-454d-bdf0-dfd36986c1b8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a8ed6a85-b562-4059-a077-fcceb1f863dd
+ - column:
+ name: uuid
+ value: cf00b5dd-bb26-48ac-8a99-e746643c8a02
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 53b57349-8c94-4ce0-8409
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 5bc39f51-5239-4cca-be3c
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8d495df7-47c8-4971-91d1-b93de4ed2f40
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4347dec1-a6d5-4065-9100-cf8296c186a3
+ - column:
+ name: uuid
+ value: 43434401-02e0-4fad-95ee-0032d7cade67
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: a71318f4-c1e0-47bc-a79f
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 3b22648b-83b2-45cf-8395
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 92725868-e2c5-4dcf-b7dc-e14a8815bcc9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e819628d-b462-429a-bc5f-77dc49eb3a4c
+ - column:
+ name: uuid
+ value: 339355fa-3a84-4ee2-91f0-ff0d406148c3
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 73e99e25-866d-41b3-9a0b
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 0d6b89df-0911-4925-bd06
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9b14a452-4107-459c-abab-f485ea5ab93c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 8ec6af7c-722a-4bb8-bc03-fefd95701b95
+ - column:
+ name: uuid
+ value: 46a14e4e-046f-4b4f-a709-720c2cf294fc
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgw_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: vGW
+ - column:
+ name: nf_role
+ value: vGW
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9cb3fa20-501b-4d82-a03e-43c31113c5fb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a8a601e4-e472-47df-92f2-c599ef48d550
+ - column:
+ name: uuid
+ value: 35aba391-9e49-47a9-afd4-8c5c74a6a983
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 70085862-aac3-4d55-8c5b
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: d77b87c0-d52e-4d41-89f8
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9cd59c5c-9856-4376-9331-71b390f5691a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 81704114-d85f-4cf9-8682-acc747bb12f3
+ - column:
+ name: uuid
+ value: 49e9ae79-f2ef-47bc-aaa7-4830b90e73e0
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vbng_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f5855de-b9fb-4b14-8bce-1868da9d72aa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 909921a8-c227-450c-9bf3-3b72ac583270
+ - column:
+ name: uuid
+ value: 52645596-cc19-47e2-95c9-bf636de3ec91
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 239c684f-22b0-42c0-9a82
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 472b477f-3e2f-41b0-82fd
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a2aa0335-3241-4f03-a902-17f309fe479c
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e202f844-3fd8-4e79-a6e3-855060e246e2
+ - column:
+ name: uuid
+ value: 07a9e92c-2d47-4fa3-8589-39b5cc50e500
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 48fb028c-cafb-460e-a193
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 1a0cb087-4efc-4e74-bd2a
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb2eb27e-9591-491a-b35a-3aa0e9cc57b9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 45c7e8aa-9512-4c78-8e27-e509b90ab6a0
+ - column:
+ name: uuid
+ value: 70c357be-23df-4800-b411-6a013aa7d092
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 5fd14647-93a0-4a65-aea4
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 52a2cdc1-a31a-4910-944e
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bc28ccc5-7685-449f-a41b-4021734f58da
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4efca684-133b-4c07-b722-41dd83ff8b23
+ - column:
+ name: uuid
+ value: 13c16e38-0dc6-4d7c-bcdf-18d1372ef9d5
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: d3e133c2-8b6b-4d29-bfe2
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 647216c9-037c-4f1d-9e2d
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bcfd6cff-219b-4dea-8c9b-e25541e72827
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bab4446a-bcbf-4ba1-b53a-0c901d7f898f
+ - column:
+ name: uuid
+ value: 5b552231-29db-4dcd-b741-ba61e3b5be54
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 68835bb3-c82a-49a9-b2f1
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 59de9b6f-2949-44d7-8bd1
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c94127c3-d59a-4cf3-8a6a-a1a148a9d21f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1c0d6b49-77c3-4558-94f0-1f8631ca9add
+ - column:
+ name: uuid
+ value: 7eb8eca5-f56d-4df0-8e2e-4de55b79d287
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: d76b67fa-aa0d-40ad-9080
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 64017fa2-e3cc-43a5-bd44
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cb8f6ccd-c8b7-4169-a7de-9e0a69457783
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a6dd6248-9024-43e1-863a-4d8fafa6f7c3
+ - column:
+ name: uuid
+ value: 615953e0-beb9-4e86-b7a0-e10f25a30256
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 1d7c4a86-1638-4fd2-a750
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: e9a30e94-64df-41f4-b66f
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cc1e0245-fd9c-407a-9199-bcfa247d7718
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 19c5417a-fead-41f2-a29e-c1bd7593601f
+ - column:
+ name: uuid
+ value: 5cd256a5-64a5-46cf-bc8f-4131533cc8e2
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpear_brg_0412a
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ value: BRG
+ - column:
+ name: nf_role
+ value: BRG
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d207b1b6-a439-412a-8a4e-b1aef0db6c57
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a06fd52a-af17-45d0-b441-a5b7b7fb833c
+ - column:
+ name: uuid
+ value: 3e0f1e26-da8c-42aa-b4b2-c527602b702f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 2542ad5c-0c1d-4793-adf1
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 80032dae-ba84-4d59-83f3
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d7cf16df-fe97-4aee-9b9e-9c27f89b5610
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b3dc6465-942c-42af-8464-2bf85b6e504b
+ - column:
+ name: uuid
+ value: ba3b8981-9a9c-4945-92aa-486234ec321f
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: vcpevsp_vgmux_0412
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: integration
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: df759ce2-10a2-4504-aef4-2e9111c26c7a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 98ed1423-e14e-4a8a-aa87-56e4c068b8c7
+ - column:
+ name: uuid
+ value: 69ec3916-4868-4bdd-983b-b04bc1e468ff
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: e689be09-2a39-4c62-8c06
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 59d35d1b-bfc7-44ec-8c72
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e99fe1c3-c970-4ab4-82a3-33a2289829f5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e3ff01db-57de-431f-b683-6ad0fe668955
+ - column:
+ name: uuid
+ value: be76ab25-6842-49a6-a6e5-7b3b80ebb811
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 45604a78-d4a8-4adc-9b35
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: dad19bb7-6ae6-42dd-8b4c
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: eaddf06d-4a85-4919-bf9a-ded1c48493ca
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: aa0c416f-ac0f-49b5-b5f9-3739ae3f2753
+ - column:
+ name: uuid
+ value: eeb90b63-e4ca-4ddb-9b4a-2b0b125bfbfe
+ - column:
+ name: version
+ value: '1.0'
+ - column:
+ name: name
+ value: 2c75c3e7-526d-41f7-b0f1
+ - column:
+ name: naming_policy
+ - column:
+ name: ecomp_generated_naming
+ value: Y
+ - column:
+ name: avail_zone_max_count
+ valueNumeric: 1
+ - column:
+ name: nf_function
+ - column:
+ name: nf_code
+ - column:
+ name: nf_type
+ - column:
+ name: nf_role
+ - column:
+ name: vendor
+ value: 90277d8e-fd79-460a-85a2
+ - column:
+ name: vendor_version
+ value: '1.0'
+ - column:
+ name: sdnc_model_name
+ - column:
+ name: sdnc_model_version
+ - column:
+ name: sdnc_artifact_name
+ tableName: VF_MODEL
+- changeSet:
+ id: 1616613628341-16
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0b289140-9639-477b-a7a9-fdd986d99bd8
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c3fffe47-e9ba-4e31-b650-00c1da3c8c5b
+ - column:
+ name: uuid
+ value: 4057f859-c218-402f-b176-01b9877288d7
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 5525dd38-b185-4ef1-aa66-6e96d0437f0b
+ - column:
+ name: vf_module_label
+ value: base_vvg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0db11c68-0af2-4f87-aa91-9303d15d4143
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 70146dae-fd10-462e-8a7a-0d8c6624cdf9
+ - column:
+ name: uuid
+ value: 0eb526ba-d75b-4097-be65-0575c72c0b99
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 2f3b6df7-1c81-46f7-b5ef-2529627e6417
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vbng
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 0e6a57c1-abd7-436b-963f-1ad051cb3c40
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: db9a9ec4-6173-48ce-9df0-3a08ff1f6475
+ - column:
+ name: uuid
+ value: f782c254-01bf-4558-a65c-2252a60d4fa8
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 92725868-e2c5-4dcf-b7dc-e14a8815bcc9
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1903fdc0-e839-4f3c-8b43-bac5503fc056
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bd7ab543-37e6-42ed-8516-c70b8b284f2f
+ - column:
+ name: uuid
+ value: a69dc831-d3f6-4993-85e8-14518bb8f9db
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: bb2eb27e-9591-491a-b35a-3aa0e9cc57b9
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1cbe89cb-8889-4ca3-8f01-d772e56d0f17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f2cb1edf-f10a-4dcc-933a-c0f6da918587
+ - column:
+ name: uuid
+ value: f766f761-2ca8-42a7-b746-fdd67bc70f9c
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 050cb7c0-3c3e-418d-b08d-3c58fd11fa55
+ - column:
+ name: vf_module_label
+ value: base_vvg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 1d4653f7-9578-440f-a325-d39495d2dead
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4e9e9373-213c-4987-a215-c44ccc6c07b3
+ - column:
+ name: uuid
+ value: a927a760-ff55-401f-8a37-161b277205e4
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 9cb3fa20-501b-4d82-a03e-43c31113c5fb
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 20983c6f-bdbe-43d2-9897-e48f5596ef17
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 3803bf29-c913-4f7b-9483-1dfef28e1d78
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2581c6d0-40a7-48dd-9fb7-30e9b9496b3e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: d7cf16df-fe97-4aee-9b9e-9c27f89b5610
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2ccfec2f-8e46-4d2d-9213-93a5b1395fc0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 2a1eb839-b3c6-40f9-b7c1-efb3b26c70dc
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 2f2dc87c-bc90-4596-8456-6a7d60e0850a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 395d13bc-de5d-48ac-8723-d4d3c000000c
+ - column:
+ name: uuid
+ value: 63047f7b-3de3-4127-84b8-058c3a92b6ad
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: bc28ccc5-7685-449f-a41b-4021734f58da
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 31d9a71a-2e44-4581-b9a2-8e000dc6ae6a
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: b459045d-c6d3-4955-b77f-3d94641f4552
+ - column:
+ name: uuid
+ value: 4adc3bfd-a4a8-4d0c-ba3f-29f9db795976
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 699b2861-22f0-4a32-8497-1d373b7c85f8
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 341fcc33-de58-4471-9bb5-13a0c643dbce
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a5593fdb-cf67-45e9-9b8a-369be20ae837
+ - column:
+ name: uuid
+ value: b46a43f8-f9eb-4588-9aae-6359f2e112b7
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: df759ce2-10a2-4504-aef4-2e9111c26c7a
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 39a78b1b-d1cf-44af-9994-318dd7a672ce
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e53c3b4b-b55a-42b8-a824-57c420e408f9
+ - column:
+ name: uuid
+ value: 26f5d512-20bd-46ba-9144-4ca0168cf473
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 7b708ab0-1d4c-472c-9822-a7d020c4fecf
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3be9227d-ac6f-471a-98fa-4943f42fe91b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f37f737f-9e9d-4b57-820e-6bcf9ffe3fb2
+ - column:
+ name: uuid
+ value: ebcb2c42-fa5a-4f32-a7cc-31a93f96b5b2
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 9cd59c5c-9856-4376-9331-71b390f5691a
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vbng
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 3f8fc159-6e6a-450c-a99a-eed70e8df403
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 974f95c9-803d-419d-a4a0-3f8078c4a940
+ - column:
+ name: uuid
+ value: 1f094eb8-ba4a-4bda-afcf-b5fc53cb8a88
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: d207b1b6-a439-412a-8a4e-b1aef0db6c57
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 42d4fdda-4d99-4887-ba9c-46562c18e3bb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 77b1fb63-6176-4246-b243-cfc69a216fe7
+ - column:
+ name: uuid
+ value: 1a78c191-5aef-40a5-b3d9-2781ae8a4f92
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 2af2bbbe-63d7-49ca-be71-90e55a813a99
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 45b87432-690e-4115-8f2a-8ef57597be79
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5237df15-60ad-494d-8e8d-ec56d8609339
+ - column:
+ name: uuid
+ value: fc879b56-6a28-4c59-b3b0-87a097faf0b5
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: df759ce2-10a2-4504-aef4-2e9111c26c7a
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 45b9d6ff-1320-4b9f-8efa-21030effa9b1
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 59e5784d-ab31-4591-92fb-648ac12c7565
+ - column:
+ name: uuid
+ value: 8acc7f41-cd32-4ebc-87d6-426cdb889fea
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8ad76346-0545-4c65-a54c-8bcd62c8d7f6
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 4ba5186b-e0ab-415d-8757-172a9f904ee7
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fe9fbf02-ec53-4762-a47b-0d02138c7ba0
+ - column:
+ name: uuid
+ value: 3f51990f-e433-4283-aa7a-12fb47d4d78d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: e99fe1c3-c970-4ab4-82a3-33a2289829f5
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5109a63a-2c4f-47fe-b9e3-a90e8fac6a10
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3c90bf5c-cd38-496a-89f4-5f080f543fff
+ - column:
+ name: uuid
+ value: 049fe59d-72a3-42b3-91b1-4043564feb87
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 3ab10178-2307-4779-993b-d8d916642770
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 53430646-a6f7-4d80-9d02-97fb3b233521
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bb5fefc2-aa81-474e-b3e7-bd6b093659a0
+ - column:
+ name: uuid
+ value: 28e1bbec-52e3-478b-abc6-68fda9aa92bc
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 80bc8335-145b-4b42-9408-d450358f1bab
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cdaad672-9299-49c9-a616-78f3730833a4
+ - column:
+ name: uuid
+ value: 5c6fca56-a6f8-41a6-9be1-11500b6dfff2
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: c94127c3-d59a-4cf3-8a6a-a1a148a9d21f
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: f0e1b9d3-166f-4c2d-8346-dfd3ff6f8316
+ - column:
+ name: uuid
+ value: eef5e1e5-a164-40ba-b4dd-d0e0acc014f3
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 4d1b6ce4-cd7e-42ce-bdf4-173710ebd53c
+ - column:
+ name: vf_module_label
+ value: base_clearwater
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 59ffe5ba-cfaf-4e83-a2f3-159522dcebac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 5724fcc8-2ae2-45ce-8d44-795092b85dee
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 5a880f5c-de89-4abf-917d-24ae4e850934
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 35803e11-0a26-4d3c-9056-17371c038f0f
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 69d963bf-c0ab-4e75-97b5-f46e1d212f14
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3282b658-dcd3-4bfc-8cb0-63279fe190be
+ - column:
+ name: uuid
+ value: 7aef942e-8131-41f7-8047-71fce68ad8ce
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8cd3bf7d-6771-454d-bdf0-dfd36986c1b8
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 6b71d46b-1d13-47bd-a97d-b283777c464f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4d2d8bc6-1b87-4ce8-bb93-bfcf21f63064
+ - column:
+ name: uuid
+ value: baf6efc6-3c3e-4004-a4bf-8f078d311244
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 3bc3c7fb-2aa2-485c-be1f-cdbba0409252
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 705e9c3c-e855-4842-a31a-e39f01560985
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 59d0a2ee-dd09-4fd7-866f-acaa739855bc
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 74aab1af-ad08-43fb-86d1-4810c0cf50ac
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 449eec34-d76d-4f22-b467-b5c8d1bc662b
+ - column:
+ name: uuid
+ value: 3f086a59-c8f6-4c4c-8712-11392ee03e43
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 0a534cd4-6b40-4294-8a3c-411db2180e0c
+ - column:
+ name: vf_module_label
+ value: base_vcpe_infra
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 761b31e4-3c0f-4117-bac6-b2581ac9a989
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 17ef5ce7-4121-4d23-aa7a-ecbe352b416f
+ - column:
+ name: uuid
+ value: d7aa9249-db50-4e18-8a0d-9c74c214cf48
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 6e52d51a-1d5a-4dfd-ab69-dac16784e620
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 7733191f-c58e-4934-b30d-98c0db7e6108
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 222cdf4a-244b-4f74-a1bf-c7c915a4176b
+ - column:
+ name: uuid
+ value: 4cb66676-400d-487b-939f-783c77f7bbf4
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 6e52d51a-1d5a-4dfd-ab69-dac16784e620
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1af2e4b1-c363-43f0-8b26-b621b6c93987
+ - column:
+ name: uuid
+ value: c20ac252-a9a9-4360-9e40-1fd5b0790424
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8d495df7-47c8-4971-91d1-b93de4ed2f40
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6943d5f7-c710-4405-9353-acae2f152afc
+ - column:
+ name: uuid
+ value: 978221b8-3b6e-4429-b83e-8369152b1470
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 366e9c64-caf3-46d5-a849-61695400be91
+ - column:
+ name: vf_module_label
+ value: base_clearwater
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 88e78e02-988a-462d-85c2-7628bf471b9f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 7ca7567c-f42c-4ed8-bcde-f8971b92d90a
+ - column:
+ name: uuid
+ value: 513cc9fc-fff5-4c46-9728-393437536c4d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 136ca73b-ac72-4734-8236-13304e9aed60
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8a15a15d-cbd2-4946-87b5-69476ab2596b
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: e53c3b4b-b55a-42b8-a824-57c420e408f9
+ - column:
+ name: uuid
+ value: 26f5d512-20bd-46ba-9144-4ca0168cf473
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 25c0e63a-62be-45da-9cb3-37e244fcf664
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 59e1d32d-678a-4706-a7fb-4930460dce60
+ - column:
+ name: uuid
+ value: a9c67084-39da-4e0c-8298-aabf0da36ee4
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: bcfd6cff-219b-4dea-8c9b-e25541e72827
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 5d2f5424-6b47-473a-9b6f-e4ad5a42080d
+ - column:
+ name: uuid
+ value: ec06c54a-b834-48c1-82d4-d03744fc2c80
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8757a5ba-4c80-4de3-8c61-5fe136bd02be
+ - column:
+ name: vf_module_label
+ value: base_clearwater
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 937ecbf2-e792-4216-b475-095d03a71c54
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3c90bf5c-cd38-496a-89f4-5f080f543fff
+ - column:
+ name: uuid
+ value: 049fe59d-72a3-42b3-91b1-4043564feb87
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 73379cc8-4cd2-49bb-a3b5-e3e38693aafc
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 95494fd6-54a5-44cf-9ee8-fc7adf893f16
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 0b3c74a3-8a55-4f56-a2cc-c0ec43cf24d6
+ - column:
+ name: uuid
+ value: 0054157b-0598-4b8d-805f-a2cb0891f6cc
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 4a60ae92-57ac-447a-b24e-67fc0d59e232
+ - column:
+ name: vf_module_label
+ value: base_vvg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9bbd841f-aa76-4fd6-a3f6-83ba7465c34d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 3a6313c9-1520-424d-85bc-63c1c9ee4ca4
+ - column:
+ name: uuid
+ value: e20182ed-5f02-4256-8e83-88c435c1a8df
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: a2aa0335-3241-4f03-a902-17f309fe479c
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9d284b79-ff6d-45cc-81b2-1db821714e84
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: fbc56527-e3bd-422a-92f1-530e58017b88
+ - column:
+ name: uuid
+ value: ce682755-cdc9-417a-8d9f-b894c3b951d5
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 7236afdf-903f-43c3-969d-3c99643787ea
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vbrgemu
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: 9f4c7aa4-4454-41ff-95e0-2bf5d9c74558
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 71c770da-1652-49a2-bd17-97a95e027123
+ - column:
+ name: uuid
+ value: 6d32dcd6-f866-475b-98fe-629bae1a04ec
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8ad76346-0545-4c65-a54c-8bcd62c8d7f6
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: a3c74af3-4441-4e1f-b23b-839227c2b56d
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 2c2c88e1-6ae4-44a9-8cda-c221a8e8db7d
+ - column:
+ name: uuid
+ value: 40aa3fc0-65e5-4a9b-a382-6235f843bb32
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: eaddf06d-4a85-4919-bf9a-ded1c48493ca
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: affab6eb-90ce-40d0-bf4c-e81abda2a119
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 4d2d8bc6-1b87-4ce8-bb93-bfcf21f63064
+ - column:
+ name: uuid
+ value: baf6efc6-3c3e-4004-a4bf-8f078d311244
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 9b14a452-4107-459c-abab-f485ea5ab93c
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b4f14dde-d03d-49cb-b878-e79ad325bf84
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: cf7026de-1bff-4a21-932f-03dde2d4d6ad
+ - column:
+ name: uuid
+ value: 5dfc0857-0e77-4c2d-a3b0-f2656bbd973e
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: bc28ccc5-7685-449f-a41b-4021734f58da
+ - column:
+ name: vf_module_label
+ value: base_vlb
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b7ac8294-0181-45f2-b59e-0a71e11fe5cd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 05eb1da8-85c2-4a5c-81ca-6df587f5c049
+ - column:
+ name: uuid
+ value: 7a154dc8-fe54-4328-a19f-c4006a55bf53
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 3bf1f25c-6120-4b26-9208-2e14e8093287
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: b96b87eb-4030-4ba9-805d-5a92db52759f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c67e55bf-d097-4ddf-b19a-980005265482
+ - column:
+ name: uuid
+ value: 50dd56ae-a346-4dfb-b929-4e3fde174203
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 497101aa-128a-4212-b1bc-4acc4ef55f39
+ - column:
+ name: vf_module_label
+ value: base_vcpe_infra
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6f382445-8a6f-42e2-b22e-3352c67afe64
+ - column:
+ name: uuid
+ value: ff711425-e630-4070-ad13-328a0618142b
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 1308b712-e956-4678-bbb4-95bb053719fb
+ - column:
+ name: vf_module_label
+ value: base_clearwater
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb496648-65a1-4e47-bf92-99f11de47bbe
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 99d66f6e-84fd-4f1d-b30f-16cef63cd650
+ - column:
+ name: uuid
+ value: c2e44866-ad88-41df-bae0-c38e7206106d
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 11a6cd75-91a6-47bc-aeed-75a27db27357
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vgmux
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: bb71bfc9-edcf-450b-b28b-0d5b57f1d7c9
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: bdb61258-c550-42e3-8e28-b13bb7516125
+ - column:
+ name: uuid
+ value: 84be55c5-d000-45fe-a26e-51ce61c13168
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 0a8170be-6630-473e-a281-72bb8c5073c1
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c25a3478-97f5-4c1f-bf34-8989d06befba
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 896108d0-3f57-4d94-aa3b-180d7b57bcb0
+ - column:
+ name: uuid
+ value: d4dbe9c5-468b-4b3d-bf8e-1b36ae7aa314
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 24b7a42c-43a2-459a-8c0b-14cfe2983078
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: c2b89e33-8aba-44b5-95e4-97ab0459b338
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 6bb5de2c-4204-4809-89ed-b6cb98a198e4
+ - column:
+ name: uuid
+ value: c7f53587-439a-441e-bddb-9a223d10c256
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 02328586-9428-4655-ba74-b07ec04b87b8
+ - column:
+ name: vf_module_label
+ value: base_vvg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: cbbc2b4e-59e3-4812-98a7-a3b449f0782e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 1ea273ca-3527-48da-baa7-17259608dac3
+ - column:
+ name: uuid
+ value: 1c90238f-4045-4f39-8347-e8c3a5474b5e
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: cb8f6ccd-c8b7-4169-a7de-9e0a69457783
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: d825dcf1-5dd8-45fe-9e4c-c2ce708c9b0e
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 12363638-ac13-499e-9f0e-3418dac41e73
+ - column:
+ name: uuid
+ value: c9d0e8d8-2617-4e6f-8b47-3f472677d3ad
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 8d495df7-47c8-4971-91d1-b93de4ed2f40
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: da59ddde-3b7f-4683-9c1b-5918c2002dcd
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: c3c668a3-0280-41c3-87fd-2516c512c1ad
+ - column:
+ name: uuid
+ value: 1a44584d-4308-4f57-b34d-95bbe7f542c0
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 13432bde-f701-4c8d-9962-d4325c60d466
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e0d1984c-42e9-4361-9821-23a329c34a4f
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: 079ad518-4a50-4608-a247-213dc5a36826
+ - column:
+ name: uuid
+ value: 68a59a48-f59f-4ec0-9217-d3700890f6ed
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 23219762-d5d8-48aa-b8e7-674878f16d98
+ - column:
+ name: vf_module_label
+ value: base_vpkg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: e5df393e-e86f-4a04-91ae-04de9a20adf0
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: ac1a7fb3-0d0f-4ab5-9439-ea2e10847aa7
+ - column:
+ name: uuid
+ value: f7007619-04d0-4046-a480-57bca7aa46b8
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 86c1f2b6-a2b5-44cc-97d3-ae29366ac2b1
+ - column:
+ name: vf_module_label
+ value: base_vfw
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f265592e-6ebb-42de-a487-fdf0b4d677f2
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: db536c34-bcdd-42a3-a91c-f162f77807cb
+ - column:
+ name: uuid
+ value: e3a7aeed-cabe-4129-88da-0acb7640f002
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 9f5855de-b9fb-4b14-8bce-1868da9d72aa
+ - column:
+ name: vf_module_label
+ value: base_vcpe_vbrgemu
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: f2ce9c3e-e3bc-4bce-ad75-e3f5ac17d7cb
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: a33130c6-3279-47d4-b4df-547eb60365ad
+ - column:
+ name: uuid
+ value: 8479a9c7-4e51-4994-ada0-a6bb171cd0b0
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Base
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: 3df5fb34-6c7c-4f8e-b5d2-e870c39e2a2a
+ - column:
+ name: vf_module_label
+ value: base_vvg
+ tableName: VF_MODULE_MODEL
+ - insert:
+ columns:
+ - column:
+ name: customization_uuid
+ value: fbb8c440-51a7-4995-8d30-67ceaf683cf5
+ - column:
+ name: model_yaml
+ - column:
+ name: invariant_uuid
+ value: d2648d62-60a5-45d7-945d-0edc3c5a4004
+ - column:
+ name: uuid
+ value: 39571511-21c6-4ff8-b76b-0861adff94fd
+ - column:
+ name: version
+ value: '1'
+ - column:
+ name: vf_module_type
+ value: Expansion
+ - column:
+ name: availability_zone_count
+ - column:
+ name: ecomp_generated_vm_assignments
+ - column:
+ name: vf_customization_uuid
+ value: bcfd6cff-219b-4dea-8c9b-e25541e72827
+ - column:
+ name: vf_module_label
+ value: dnsscaling
+ tableName: VF_MODULE_MODEL
+- changeSet:
+ id: 1616613628341-17
+ author: dt5972 (generated)
+ changes:
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1591
+ - column:
+ name: vf_module_customization_uuid
+ value: 2581c6d0-40a7-48dd-9fb7-30e9b9496b3e
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1592
+ - column:
+ name: vf_module_customization_uuid
+ value: 88e78e02-988a-462d-85c2-7628bf471b9f
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1593
+ - column:
+ name: vf_module_customization_uuid
+ value: 20983c6f-bdbe-43d2-9897-e48f5596ef17
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1594
+ - column:
+ name: vf_module_customization_uuid
+ value: 6b71d46b-1d13-47bd-a97d-b283777c464f
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1595
+ - column:
+ name: vf_module_customization_uuid
+ value: 39a78b1b-d1cf-44af-9994-318dd7a672ce
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1596
+ - column:
+ name: vf_module_customization_uuid
+ value: 937ecbf2-e792-4216-b475-095d03a71c54
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1597
+ - column:
+ name: vf_module_customization_uuid
+ value: 937ecbf2-e792-4216-b475-095d03a71c54
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1598
+ - column:
+ name: vf_module_customization_uuid
+ value: 86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc
+ - column:
+ name: vfc_customization_uuid
+ value: fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1599
+ - column:
+ name: vf_module_customization_uuid
+ value: 86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc
+ - column:
+ name: vfc_customization_uuid
+ value: c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1600
+ - column:
+ name: vf_module_customization_uuid
+ value: 86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc
+ - column:
+ name: vfc_customization_uuid
+ value: 1d63438f-8683-481d-af5c-8a440ff6c86e
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1601
+ - column:
+ name: vf_module_customization_uuid
+ value: d825dcf1-5dd8-45fe-9e4c-c2ce708c9b0e
+ - column:
+ name: vfc_customization_uuid
+ value: 5a81616f-3b85-47f9-b3a6-43ddc9d705d1
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1602
+ - column:
+ name: vf_module_customization_uuid
+ value: e5df393e-e86f-4a04-91ae-04de9a20adf0
+ - column:
+ name: vfc_customization_uuid
+ value: 28ff8b3e-486a-4f15-bcd8-5bab711d5c33
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1603
+ - column:
+ name: vf_module_customization_uuid
+ value: e5df393e-e86f-4a04-91ae-04de9a20adf0
+ - column:
+ name: vfc_customization_uuid
+ value: c8033d10-afbb-4310-b90b-abd4140c191f
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1604
+ - column:
+ name: vf_module_customization_uuid
+ value: 53430646-a6f7-4d80-9d02-97fb3b233521
+ - column:
+ name: vfc_customization_uuid
+ value: e7f9b901-b846-49eb-942b-9bf778a7d2c8
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1605
+ - column:
+ name: vf_module_customization_uuid
+ value: 9f4c7aa4-4454-41ff-95e0-2bf5d9c74558
+ - column:
+ name: vfc_customization_uuid
+ value: 75fabac4-56d8-4976-899f-0119543fd2b8
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1606
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b9d6ff-1320-4b9f-8efa-21030effa9b1
+ - column:
+ name: vfc_customization_uuid
+ value: 9166ff2f-23cb-4028-97e5-dc591fcfef3c
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1607
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b9d6ff-1320-4b9f-8efa-21030effa9b1
+ - column:
+ name: vfc_customization_uuid
+ value: 1782c476-7f94-4c01-9921-02459a6ce3cb
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1608
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b9d6ff-1320-4b9f-8efa-21030effa9b1
+ - column:
+ name: vfc_customization_uuid
+ value: 0b221466-3962-42cd-b241-e08093869999
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1609
+ - column:
+ name: vf_module_customization_uuid
+ value: 5a880f5c-de89-4abf-917d-24ae4e850934
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1610
+ - column:
+ name: vf_module_customization_uuid
+ value: affab6eb-90ce-40d0-bf4c-e81abda2a119
+ - column:
+ name: vfc_customization_uuid
+ value: 023fcd99-b707-4084-81f2-5bc4c58a62fc
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1611
+ - column:
+ name: vf_module_customization_uuid
+ value: 8a15a15d-cbd2-4946-87b5-69476ab2596b
+ - column:
+ name: vfc_customization_uuid
+ value: bc5ce901-76a8-4516-b65d-26cec4ba463c
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1612
+ - column:
+ name: vf_module_customization_uuid
+ value: 5109a63a-2c4f-47fe-b9e3-a90e8fac6a10
+ - column:
+ name: vfc_customization_uuid
+ value: a9139e95-84ea-42d7-a4bb-a72b29a40970
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1613
+ - column:
+ name: vf_module_customization_uuid
+ value: 5109a63a-2c4f-47fe-b9e3-a90e8fac6a10
+ - column:
+ name: vfc_customization_uuid
+ value: 5130f20f-66c2-4ae5-8f93-bdb4ef857585
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1614
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: 67a8fd2d-c4fc-4982-8680-7cceaad13cf6
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1615
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: 7d3af2a5-4d58-4f65-80c5-e9f56d68e374
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1616
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: d921d8e0-72ef-4e82-9a5c-f8c524d9db72
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1617
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: d160bb89-8331-4f8f-b323-aadeaf6ad719
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1618
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: 74a491fb-98e5-4988-aab4-173d018a29c8
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1619
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: 03ac3cb1-60fc-4ae1-bd5a-68c478bf6a8e
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1620
+ - column:
+ name: vf_module_customization_uuid
+ value: 888a977c-13c9-4942-8e53-bd51888625f4
+ - column:
+ name: vfc_customization_uuid
+ value: 76800448-f19b-4834-a0ce-65df373e6433
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1621
+ - column:
+ name: vf_module_customization_uuid
+ value: 1d4653f7-9578-440f-a325-d39495d2dead
+ - column:
+ name: vfc_customization_uuid
+ value: 1fc2d7f5-036f-4a77-b840-83277e76f13c
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1622
+ - column:
+ name: vf_module_customization_uuid
+ value: 1d4653f7-9578-440f-a325-d39495d2dead
+ - column:
+ name: vfc_customization_uuid
+ value: 4795998e-8cd5-4b8f-ada9-fe9488392da8
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1623
+ - column:
+ name: vf_module_customization_uuid
+ value: 1d4653f7-9578-440f-a325-d39495d2dead
+ - column:
+ name: vfc_customization_uuid
+ value: bb69f2d4-be8a-400f-9d6d-6e9500664dbc
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1624
+ - column:
+ name: vf_module_customization_uuid
+ value: 5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6
+ - column:
+ name: vfc_customization_uuid
+ value: db207678-8018-4829-bec6-4143743b1a29
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1625
+ - column:
+ name: vf_module_customization_uuid
+ value: 5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6
+ - column:
+ name: vfc_customization_uuid
+ value: cf60de5e-1332-43fc-8640-a94b5013dea7
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1626
+ - column:
+ name: vf_module_customization_uuid
+ value: 5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6
+ - column:
+ name: vfc_customization_uuid
+ value: 54e98abe-743a-400d-809c-095644d92dd9
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1627
+ - column:
+ name: vf_module_customization_uuid
+ value: fbb8c440-51a7-4995-8d30-67ceaf683cf5
+ - column:
+ name: vfc_customization_uuid
+ value: bfbbab1c-b257-4ea9-81e0-416755b28df7
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1628
+ - column:
+ name: vf_module_customization_uuid
+ value: 8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72
+ - column:
+ name: vfc_customization_uuid
+ value: aa999b75-51fd-451a-8556-c59e13cb3cd6
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1629
+ - column:
+ name: vf_module_customization_uuid
+ value: 8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72
+ - column:
+ name: vfc_customization_uuid
+ value: f8581354-8c0c-4199-9fc3-dcdf0ecef3d9
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1630
+ - column:
+ name: vf_module_customization_uuid
+ value: 8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72
+ - column:
+ name: vfc_customization_uuid
+ value: 66bc8dbf-26c6-4b12-9b87-c29b14cb1bac
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1631
+ - column:
+ name: vf_module_customization_uuid
+ value: 7733191f-c58e-4934-b30d-98c0db7e6108
+ - column:
+ name: vfc_customization_uuid
+ value: 64508b50-a134-41d4-a957-ba40718dc250
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1632
+ - column:
+ name: vf_module_customization_uuid
+ value: 761b31e4-3c0f-4117-bac6-b2581ac9a989
+ - column:
+ name: vfc_customization_uuid
+ value: ff8f1549-c4cf-44b5-b8a3-884e1a586319
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1633
+ - column:
+ name: vf_module_customization_uuid
+ value: 761b31e4-3c0f-4117-bac6-b2581ac9a989
+ - column:
+ name: vfc_customization_uuid
+ value: 12cee19b-3c7e-4a61-9c3e-123702c6a2f5
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1634
+ - column:
+ name: vf_module_customization_uuid
+ value: 761b31e4-3c0f-4117-bac6-b2581ac9a989
+ - column:
+ name: vfc_customization_uuid
+ value: 73c626ff-5b74-4f4f-a13a-a0998fa197e5
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1635
+ - column:
+ name: vf_module_customization_uuid
+ value: c25a3478-97f5-4c1f-bf34-8989d06befba
+ - column:
+ name: vfc_customization_uuid
+ value: 6163e3b4-ad26-4b16-a3cd-d0f3a3c66214
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1636
+ - column:
+ name: vf_module_customization_uuid
+ value: c25a3478-97f5-4c1f-bf34-8989d06befba
+ - column:
+ name: vfc_customization_uuid
+ value: 6be7deec-f93d-48ab-a6c4-ea844da22d0f
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1637
+ - column:
+ name: vf_module_customization_uuid
+ value: c25a3478-97f5-4c1f-bf34-8989d06befba
+ - column:
+ name: vfc_customization_uuid
+ value: 708364f6-83e5-40dd-a3cd-1903cda658f5
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1638
+ - column:
+ name: vf_module_customization_uuid
+ value: da59ddde-3b7f-4683-9c1b-5918c2002dcd
+ - column:
+ name: vfc_customization_uuid
+ value: 31b53e81-28c3-482e-842c-0ebd21053b59
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1639
+ - column:
+ name: vf_module_customization_uuid
+ value: da59ddde-3b7f-4683-9c1b-5918c2002dcd
+ - column:
+ name: vfc_customization_uuid
+ value: b4100ed9-507a-4be4-a456-0e49482a58ac
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1640
+ - column:
+ name: vf_module_customization_uuid
+ value: da59ddde-3b7f-4683-9c1b-5918c2002dcd
+ - column:
+ name: vfc_customization_uuid
+ value: 919ae940-5485-4270-9bb2-980213db6b95
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1641
+ - column:
+ name: vf_module_customization_uuid
+ value: b96b87eb-4030-4ba9-805d-5a92db52759f
+ - column:
+ name: vfc_customization_uuid
+ value: 2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1642
+ - column:
+ name: vf_module_customization_uuid
+ value: b96b87eb-4030-4ba9-805d-5a92db52759f
+ - column:
+ name: vfc_customization_uuid
+ value: f219a42a-d5a6-4354-b072-259932ed8b48
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1643
+ - column:
+ name: vf_module_customization_uuid
+ value: b96b87eb-4030-4ba9-805d-5a92db52759f
+ - column:
+ name: vfc_customization_uuid
+ value: 5418661d-07e1-403a-8caf-03f5442f2308
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1644
+ - column:
+ name: vf_module_customization_uuid
+ value: b96b87eb-4030-4ba9-805d-5a92db52759f
+ - column:
+ name: vfc_customization_uuid
+ value: 652259eb-1b57-4f6e-8d22-6420a8261938
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1645
+ - column:
+ name: vf_module_customization_uuid
+ value: 0db11c68-0af2-4f87-aa91-9303d15d4143
+ - column:
+ name: vfc_customization_uuid
+ value: 9f07ef60-6dea-4e20-b4d4-c78b1b8bda32
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1646
+ - column:
+ name: vf_module_customization_uuid
+ value: f265592e-6ebb-42de-a487-fdf0b4d677f2
+ - column:
+ name: vfc_customization_uuid
+ value: 493be6dd-c307-4d84-bee4-2ed50e044f54
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1647
+ - column:
+ name: vf_module_customization_uuid
+ value: a3c74af3-4441-4e1f-b23b-839227c2b56d
+ - column:
+ name: vfc_customization_uuid
+ value: 4440906c-a7e7-478b-a637-812999219fd1
+ - column:
+ name: vm_type
+ value: vgw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1648
+ - column:
+ name: vf_module_customization_uuid
+ value: bb496648-65a1-4e47-bf92-99f11de47bbe
+ - column:
+ name: vfc_customization_uuid
+ value: bf9a909c-17ef-4a69-ac1f-56d05c53c528
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1649
+ - column:
+ name: vf_module_customization_uuid
+ value: b4f14dde-d03d-49cb-b878-e79ad325bf84
+ - column:
+ name: vfc_customization_uuid
+ value: 2b44c9db-28e1-45aa-b297-a4511d5317fe
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1650
+ - column:
+ name: vf_module_customization_uuid
+ value: b4f14dde-d03d-49cb-b878-e79ad325bf84
+ - column:
+ name: vfc_customization_uuid
+ value: fb09a01b-249b-4038-bcf9-db20b0f206c9
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1651
+ - column:
+ name: vf_module_customization_uuid
+ value: b4f14dde-d03d-49cb-b878-e79ad325bf84
+ - column:
+ name: vfc_customization_uuid
+ value: 4dfadd90-d618-4c8d-b47d-60efebf6d01d
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1652
+ - column:
+ name: vf_module_customization_uuid
+ value: 2f2dc87c-bc90-4596-8456-6a7d60e0850a
+ - column:
+ name: vfc_customization_uuid
+ value: 547126cc-f04f-458b-906a-ecb8463a058a
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1653
+ - column:
+ name: vf_module_customization_uuid
+ value: 42d4fdda-4d99-4887-ba9c-46562c18e3bb
+ - column:
+ name: vfc_customization_uuid
+ value: 195f76ea-8256-4a07-b525-b40267c37b21
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1654
+ - column:
+ name: vf_module_customization_uuid
+ value: 42d4fdda-4d99-4887-ba9c-46562c18e3bb
+ - column:
+ name: vfc_customization_uuid
+ value: 6e3b40fc-e28b-4158-ae96-fcdb901cb7f4
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1655
+ - column:
+ name: vf_module_customization_uuid
+ value: 42d4fdda-4d99-4887-ba9c-46562c18e3bb
+ - column:
+ name: vfc_customization_uuid
+ value: f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1656
+ - column:
+ name: vf_module_customization_uuid
+ value: 9d284b79-ff6d-45cc-81b2-1db821714e84
+ - column:
+ name: vfc_customization_uuid
+ value: b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3
+ - column:
+ name: vm_type
+ value: vbrgemu
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1657
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 2c4cb9db-c093-4c7c-ad3d-fae4ffa17486
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1658
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 48e19b0c-73d4-43c1-8172-a603cc6a0a27
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1659
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 32e76c6c-5676-4ce2-96df-e8b8adde7d42
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1660
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 702036e1-6270-4e3d-b2a2-8d6218dd325d
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1661
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 48687b06-df68-4180-a0b8-bafda155ea4c
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1662
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 54e94ecb-84f1-45d1-88a3-235e6a229ad3
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1663
+ - column:
+ name: vf_module_customization_uuid
+ value: baa40973-450b-413f-86f7-3ac97383d6aa
+ - column:
+ name: vfc_customization_uuid
+ value: 67194296-d115-467b-99c2-bfd50d9e175f
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1664
+ - column:
+ name: vf_module_customization_uuid
+ value: 74aab1af-ad08-43fb-86d1-4810c0cf50ac
+ - column:
+ name: vfc_customization_uuid
+ value: 25011296-744f-4cf6-80ed-476758829e90
+ - column:
+ name: vm_type
+ value: vweb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1665
+ - column:
+ name: vf_module_customization_uuid
+ value: 74aab1af-ad08-43fb-86d1-4810c0cf50ac
+ - column:
+ name: vfc_customization_uuid
+ value: 805be1fb-285d-4487-a9a2-223e995df5a4
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1666
+ - column:
+ name: vf_module_customization_uuid
+ value: 74aab1af-ad08-43fb-86d1-4810c0cf50ac
+ - column:
+ name: vfc_customization_uuid
+ value: 2435ffd0-cf02-4c82-a6df-655986b2518b
+ - column:
+ name: vm_type
+ value: vaaa
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1667
+ - column:
+ name: vf_module_customization_uuid
+ value: 74aab1af-ad08-43fb-86d1-4810c0cf50ac
+ - column:
+ name: vfc_customization_uuid
+ value: d9ee5ccc-acc3-4658-9068-e2d60942040d
+ - column:
+ name: vm_type
+ value: vdhcp
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1668
+ - column:
+ name: vf_module_customization_uuid
+ value: 59ffe5ba-cfaf-4e83-a2f3-159522dcebac
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1669
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: 5f6f8dd5-f078-4a8a-a596-8b18c81d4370
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1670
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: da32c96d-2f04-4548-8670-39ff222a3af4
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1671
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: dbdcd5f1-014c-462c-a950-ba17813f9485
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1672
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: ada34b73-f715-41eb-a6ad-c9d868e86728
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1673
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: 5eb99594-a29e-4943-8820-fd63de08170d
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1674
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: a99c320c-64d0-44ac-8edb-16d781dde678
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1675
+ - column:
+ name: vf_module_customization_uuid
+ value: 931e671e-7725-4147-b377-fc92c5b00cbd
+ - column:
+ name: vfc_customization_uuid
+ value: e5fd954f-adcb-4675-b763-cc216bbe68b1
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1676
+ - column:
+ name: vf_module_customization_uuid
+ value: cbbc2b4e-59e3-4812-98a7-a3b449f0782e
+ - column:
+ name: vfc_customization_uuid
+ value: 98f311f9-39e0-4b96-be75-548fe6953247
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1677
+ - column:
+ name: vf_module_customization_uuid
+ value: cbbc2b4e-59e3-4812-98a7-a3b449f0782e
+ - column:
+ name: vfc_customization_uuid
+ value: 8be6b1e3-cfbb-4f62-8820-067bc784585d
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1678
+ - column:
+ name: vf_module_customization_uuid
+ value: 69d963bf-c0ab-4e75-97b5-f46e1d212f14
+ - column:
+ name: vfc_customization_uuid
+ value: c231d966-7c33-475b-b1da-6d8183a14f36
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1679
+ - column:
+ name: vf_module_customization_uuid
+ value: 31d9a71a-2e44-4581-b9a2-8e000dc6ae6a
+ - column:
+ name: vfc_customization_uuid
+ value: 377825eb-e83d-49b6-81ce-c99a0d30064e
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1680
+ - column:
+ name: vf_module_customization_uuid
+ value: 31d9a71a-2e44-4581-b9a2-8e000dc6ae6a
+ - column:
+ name: vfc_customization_uuid
+ value: 25d3be48-fc4b-453f-96de-97e07e6c18f5
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1681
+ - column:
+ name: vf_module_customization_uuid
+ value: 31d9a71a-2e44-4581-b9a2-8e000dc6ae6a
+ - column:
+ name: vfc_customization_uuid
+ value: 37e7c1c1-d886-47e1-90a8-f907fcb312c3
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1682
+ - column:
+ name: vf_module_customization_uuid
+ value: b7ac8294-0181-45f2-b59e-0a71e11fe5cd
+ - column:
+ name: vfc_customization_uuid
+ value: bffb18fa-e09f-4d2e-9a56-6f032e03ac19
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1683
+ - column:
+ name: vf_module_customization_uuid
+ value: b7ac8294-0181-45f2-b59e-0a71e11fe5cd
+ - column:
+ name: vfc_customization_uuid
+ value: 267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1684
+ - column:
+ name: vf_module_customization_uuid
+ value: 9bbd841f-aa76-4fd6-a3f6-83ba7465c34d
+ - column:
+ name: vfc_customization_uuid
+ value: 08559203-1f1e-4424-ac5f-6ec24bb8bf6d
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1685
+ - column:
+ name: vf_module_customization_uuid
+ value: 3be9227d-ac6f-471a-98fa-4943f42fe91b
+ - column:
+ name: vfc_customization_uuid
+ value: c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e
+ - column:
+ name: vm_type
+ value: vbng
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1686
+ - column:
+ name: vf_module_customization_uuid
+ value: 705e9c3c-e855-4842-a31a-e39f01560985
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1687
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: 21352862-eb18-4867-8ea2-d524f2f98647
+ - column:
+ name: vm_type
+ value: bono
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1688
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: f88cf470-4821-4a8e-a088-9249eaf046b0
+ - column:
+ name: vm_type
+ value: homestead
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1689
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: 20a556fe-312a-41ab-9a03-374063d23aea
+ - column:
+ name: vm_type
+ value: sprout
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1690
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: 17d5c405-cfcb-4abc-96e4-a0e6fce100cb
+ - column:
+ name: vm_type
+ value: dns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1691
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: cb751f30-9cd7-4c7f-999e-73c2691da482
+ - column:
+ name: vm_type
+ value: ralf
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1692
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: 70bf02d6-28ae-4bbb-9c37-0057017a15c9
+ - column:
+ name: vm_type
+ value: ellis
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1693
+ - column:
+ name: vf_module_customization_uuid
+ value: 571c5caf-bea1-4420-8d61-a831b4a22fdc
+ - column:
+ name: vfc_customization_uuid
+ value: fcb6d888-d5ef-4955-9474-ef4deae1201e
+ - column:
+ name: vm_type
+ value: homer
+ - column:
+ name: vm_count
+ valueNumeric: 2
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1694
+ - column:
+ name: vf_module_customization_uuid
+ value: bb71bfc9-edcf-450b-b28b-0d5b57f1d7c9
+ - column:
+ name: vfc_customization_uuid
+ value: 30969396-fa5a-4faf-9163-db6484e54e59
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1695
+ - column:
+ name: vf_module_customization_uuid
+ value: 3f8fc159-6e6a-450c-a99a-eed70e8df403
+ - column:
+ name: vfc_customization_uuid
+ value: 98608c67-9b1a-4160-849c-060171c0ae16
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1696
+ - column:
+ name: vf_module_customization_uuid
+ value: 3f8fc159-6e6a-450c-a99a-eed70e8df403
+ - column:
+ name: vfc_customization_uuid
+ value: 3b08d0cb-3f1c-4178-8dab-bf7b85782f00
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1697
+ - column:
+ name: vf_module_customization_uuid
+ value: 4ba5186b-e0ab-415d-8757-172a9f904ee7
+ - column:
+ name: vfc_customization_uuid
+ value: 416b75a7-32ea-458c-95fe-c14854d618ca
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1698
+ - column:
+ name: vf_module_customization_uuid
+ value: 4ba5186b-e0ab-415d-8757-172a9f904ee7
+ - column:
+ name: vfc_customization_uuid
+ value: 13ec94e1-b04c-4fd1-99e6-c982020e453f
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1699
+ - column:
+ name: vf_module_customization_uuid
+ value: 4ba5186b-e0ab-415d-8757-172a9f904ee7
+ - column:
+ name: vfc_customization_uuid
+ value: 1203cf96-76de-4325-bb58-0053f1c6ddb1
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1700
+ - column:
+ name: vf_module_customization_uuid
+ value: 2ccfec2f-8e46-4d2d-9213-93a5b1395fc0
+ - column:
+ name: vfc_customization_uuid
+ value: 8b84aeae-51cf-48c2-8bb1-50c7aa444a16
+ - column:
+ name: vm_type
+ value: vgmux
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1701
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b87432-690e-4115-8f2a-8ef57597be79
+ - column:
+ name: vfc_customization_uuid
+ value: e472f39e-2371-4dce-8b5e-883094836201
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1702
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b87432-690e-4115-8f2a-8ef57597be79
+ - column:
+ name: vfc_customization_uuid
+ value: 22245ea3-605f-4a9f-94b9-cf39ef7f3c0e
+ - column:
+ name: vm_type
+ value: vlb
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1703
+ - column:
+ name: vf_module_customization_uuid
+ value: 45b87432-690e-4115-8f2a-8ef57597be79
+ - column:
+ name: vfc_customization_uuid
+ value: 61ac4ca1-9516-43c8-ab0e-d869e3d5d011
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1704
+ - column:
+ name: vf_module_customization_uuid
+ value: 341fcc33-de58-4471-9bb5-13a0c643dbce
+ - column:
+ name: vfc_customization_uuid
+ value: cf16c622-b9e4-4712-924b-8008f47d84ef
+ - column:
+ name: vm_type
+ value: vdns
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1705
+ - column:
+ name: vf_module_customization_uuid
+ value: 1903fdc0-e839-4f3c-8b43-bac5503fc056
+ - column:
+ name: vfc_customization_uuid
+ value: 61a24df6-cde4-4d83-ae28-ed1f60e85381
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1706
+ - column:
+ name: vf_module_customization_uuid
+ value: 1903fdc0-e839-4f3c-8b43-bac5503fc056
+ - column:
+ name: vfc_customization_uuid
+ value: 22c63259-70c3-4d19-8f75-47ebef517be4
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1707
+ - column:
+ name: vf_module_customization_uuid
+ value: 1903fdc0-e839-4f3c-8b43-bac5503fc056
+ - column:
+ name: vfc_customization_uuid
+ value: bfd5e865-92a4-45a1-888d-ba7c2497ad50
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1708
+ - column:
+ name: vf_module_customization_uuid
+ value: 0e6a57c1-abd7-436b-963f-1ad051cb3c40
+ - column:
+ name: vfc_customization_uuid
+ value: f9484812-fe80-4f5a-8428-538ddbca2586
+ - column:
+ name: vm_type
+ value: vsn
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1709
+ - column:
+ name: vf_module_customization_uuid
+ value: 0e6a57c1-abd7-436b-963f-1ad051cb3c40
+ - column:
+ name: vfc_customization_uuid
+ value: d057afa2-edab-4be3-93cb-89854e40c298
+ - column:
+ name: vm_type
+ value: vfw
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+ - insert:
+ columns:
+ - column:
+ name: seq
+ valueNumeric: 1710
+ - column:
+ name: vf_module_customization_uuid
+ value: e0d1984c-42e9-4361-9821-23a329c34a4f
+ - column:
+ name: vfc_customization_uuid
+ value: 63227786-48c6-4e70-a229-64a4dd79d8c4
+ - column:
+ name: vm_type
+ value: vpg
+ - column:
+ name: vm_count
+ valueNumeric: 1
+ tableName: VF_MODULE_TO_VFC_MAPPING
+
diff --git a/ms/gra/gra-app/src/test/resources/dblib.properties b/ms/gra/gra-app/src/test/resources/dblib.properties
new file mode 100644
index 0000000..08093c3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=localhost
+org.onap.ccsdk.sli.jdbc.url=jdbc:derby:memory:${MYSQL_DATABASE};create=true
+org.onap.ccsdk.sli.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
+org.onap.ccsdk.sli.jdbc.database = ${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user = ${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password = ${MYSQL_PASSWORD}
+org.onap.ccsdk.sli.jdbc.connection.name=gradb01
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/ms/gra/gra-app/src/test/resources/generic-resource-api-dg.properties b/ms/gra/gra-app/src/test/resources/generic-resource-api-dg.properties
new file mode 100644
index 0000000..3751142
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/generic-resource-api-dg.properties
@@ -0,0 +1,77 @@
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+controller.url=http://localhost:8080
+controller.user=${ODL_USER}
+controller.pwd=${ODL_PASSWORD}
+honeycomb.url=http://{honeycomb-instance-ip}:8183
+honeycomb.user=${HONEYCOMB_USER}
+honeycomb.pwd=${HONEYCOMB_PASSWORD}
+restapi.trustStoreFileName=/opt/onap/sdnc/config/truststoreONAPall.jks
+restapi.trustStorePassword=${TRUSTSTORE_PASSWORD}
+restapi.keyStoreFileName=/opt/onap/sdnc/config/org.onap.sdnc.p12
+restapi.keyStorePassword=${KEYSTORE_PASSWORD}
+restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=ccsdkapps
+naming.gen-name.pwd=ccsdkapps
+so.user=${SO_USER}
+so.pwd=${SO_PASSWORD}
+cds.url=http://cds-blueprints-processor-http:8080
+cds.user=${CDS_USER}
+cds.pwd=${CDS_PASSWORD}
+
+# Templates
+restapi.sz.templatefile=security-zone-allotted-resource.json
+restapi.cr.templatefile=contrail-route-allotted-resource.json
+restapi.brg.templatefile=brg-allotted-resource.json
+restapi.vpp.vxlan-tunnel.templatefile=vcpe-vxlan-tunnel.json
+restapi.vpp.bridge-domain.templatefile=vcpe-vpp-bridge-domain.json
+restapi.vpp.xconnect.templatefile=vcpe-l2-interface.json
+restapi.tx.templatefile=tunnelxconn-allotted-resource.json
+restapi.parentsvc.templatefile=parent-provided-allotted-resource.json
+restapi.network-ar.templatefile=network-provided-allotted-resources.json
+restapi.vnf-ar.templatefile=vnf-provided-allotted-resources.json
+restapi.services.templatefile=vcpe-services-service.json
+restapi.services.vnf.vfmodule.templatefile=vfmodule-vim-parameters.vgw.json
+restapi.sotn-attachment.templatefile=sotn-attachment-allotted-resource.json
+restapi.sdwan-attachment.templatefile=sdwan-attachment-allotted-resource.json
+restapi.oof-getpath.templatefile=oof-getpath.json
+restapi.naming.gen-name.templatefile=naming-ms-post-gen-name.json
+restapi.ss.pnf.templatefile=self-serve-pnf-assignments.json
+restapi.ss.vnf.templatefile=self-serve-vnf-assignments.json
+restapi.ss.vfmodule.templatefile=self-serve-vfmodule-assignments.json
+restapi.ss.mS.vlan.tag.assign.templatefile=self-serve-mS-vlan-tag-assignments.json
+restapi.ss.mS.vlan.tag.unassign.templatefile=self-serve-mS-vlan-tag-unassignments.json
+restapi.ss.mS.mac.address.assign.templatefile=self-serve-mS-mac-address-assign.json
+restapi.ss.mS.mac.address.unassign.templatefile=self-serve-mS-mac-address-unassign.json
+
+# Default cloud owner
+cloud-region.cloud-owner=CloudOwner
+
+# URLs
+restapi.cr-allottedresource=/restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/
+restapi.sz-allottedresource=/restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/{allotted-resource-id}/
+restapi.brg-allottedresource=/restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/{allotted-resource-id}/
+restapi.vpp-honeycomb=/restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}/
+restapi.tx-allottedresource=/restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/{allotted-resource-id}/
+restapi.vnf-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.network-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.pm-configuration=/restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+restapi.network=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/
+restapi.vnf=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/
+restapi.vnf-api.service-information=/restconf/config/VNF-API:vnfs/vnf-list/{vnf-id}/service-data/
+restapi.parent-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource/{allotted-resource-id}/
+restapi.network-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/network/{network-id}/network-data/network-provided-allotted-resources/
+restapi.services=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/
+restapi.service.vnf.vfmodule-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.connection-attachment-allottedresource=/restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/{allotted-resource-id}/
+restapi.naming.gen-name.service=/web/service/v1/genNetworkElementName
+restapi.ss-pnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/pnfs/pnf/{pnf-id}/
+restapi.ss-vnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+restapi.ss-vfmodule-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.ss-mS-vlan-tag-assign=/vlantagapi/v1/{action}
+restapi.ss-mS-mac-address-assign=/api/macaddress/v1/service/assign/
+restapi.ss-mS-mac-address-unassign=/api/macaddress/v1/service/unassign/
+restapi.preload-network=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/{network-name}/network/preload-data/preload-network-topology-information/
+restapi.preloadinformation=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/
+restapi.vf-module=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.vnf-assign=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
diff --git a/ms/gra/gra-app/src/test/resources/network-assign-rpc.json b/ms/gra/gra-app/src/test/resources/network-assign-rpc.json
new file mode 100644
index 0000000..2398ef5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/network-assign-rpc.json
@@ -0,0 +1,70 @@
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "req123",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq123"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-customization-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-invariant-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "network-request-input": {
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "cloud-owner": "k8sCloudOwner",
+ "network-input-parameters": {
+ "param": [
+ {
+ "name": "test-param",
+ "resource-resolution-data": {
+ "capability-name": "myCapability",
+ "payload": "myPayload",
+ "resource-key": [
+ {
+ "name": "resource1",
+ "value": "hello_world"
+ }
+ ],
+ "status": "Pending"
+ },
+ "value": "HiThere"
+ }
+ ]
+ },
+ "network-instance-group-id": "netgrp123",
+ "tenant": "k8s_tenant_1"
+ },
+ "network-information": {
+ "from-preload": true,
+ "network-id": "net123",
+ "network-technology": "virtio",
+ "network-type": "lan",
+ "onap-model-information": {
+ "model-customization-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-invariant-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ }
+ }
+ }
+ }
diff --git a/ms/gra/gra-app/src/test/resources/policy-update-notify-rpc.json b/ms/gra/gra-app/src/test/resources/policy-update-notify-rpc.json
new file mode 100644
index 0000000..6e1c101
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/policy-update-notify-rpc.json
@@ -0,0 +1,7 @@
+{
+ "input": {
+ "policy-name": "name",
+ "update-type": "Update",
+ "version-id": "1.0"
+ }
+}
diff --git a/ms/gra/gra-app/src/test/resources/port-mirror-assign-rpc.json b/ms/gra/gra-app/src/test/resources/port-mirror-assign-rpc.json
new file mode 100644
index 0000000..0b9b0b3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/port-mirror-assign-rpc.json
@@ -0,0 +1,46 @@
+{
+ "input": {
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "source": "MSO",
+ "request-id": "pm-request-1"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "767f2d08-e022-4000-97c2-61c002ebc740",
+ "svc-notification-url": "https://mso-bpmn-url",
+ "svc-action": "assign"
+ },
+ "service-information": {
+ "subscription-service-type": "viprsvc",
+ "service-instance-id": "service1"
+ },
+ "configuration-information": {
+ "onap-model-information": {
+ "model-name": "SmsfNc2578..smsf_base..module-0",
+ "model-version": "3",
+ "model-customization-uuid": "cfg-customization-uuid-1",
+ "model-uuid": "795f1014-7fe5-4c4f-a0ca-dc6ebd2185ab",
+ "model-invariant-uuid": "6265446b-58a6-4689-860f-78bada0faf2c"
+ },
+ "configuration-id": "cfg-1",
+ "configuration-type": "PORT-MIRROR",
+ "configuration-sub-type": "vprobe"
+ },
+ "port-mirror-configuration-request-input": {
+ "source-port": {
+ "source-port-id": "1",
+ "vnf-information": {
+ "vnf-id": "mob-vnf-1"
+ }
+ },
+ "dest-port": {
+ "dest-port-id": "1",
+ "vnf-information": {
+ "vnf-id": "mob-vnf-2"
+ }
+ }
+ },
+ "aic-cloud-region": "mtn6",
+ "tenant": "4714fe06cc24414c914c51ca0aa1bf84"
+ }
+}
diff --git a/ms/gra/gra-app/src/test/resources/port-mirror-configuration-1.json b/ms/gra/gra-app/src/test/resources/port-mirror-configuration-1.json
new file mode 100644
index 0000000..446235d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/port-mirror-configuration-1.json
@@ -0,0 +1,120 @@
+{
+ "port-mirror-configuration": [
+ {
+ "configuration-data": {
+ "configuration-oper-status": {
+ "last-action": "CreatePortMirrorConfigurationInstance",
+ "last-rpc-action": "activate",
+ "order-status": "Active"
+ },
+ "configuration-operation-information": {
+ "configuration-information": {
+ "configuration-id": "pm-config-1",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "onap-model-information": {
+ "model-customization-uuid": "770c991a-47fb-4225-8d72-4790847f8307",
+ "model-invariant-uuid": "a81abec0-222e-4fb2-b1c6-c4162359b2b3",
+ "model-name": "Port Mirroring Configuration",
+ "model-uuid": "18af239e-5397-4224-816f-d2850f3fab38",
+ "model-version": "23.0"
+ }
+ },
+ "port-mirror-configuration-request-input": {
+ "dest-port": {
+ "vnf-information": {
+ "vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5"
+ }
+ },
+ "source-port": {
+ "vnf-information": {
+ "vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d"
+ }
+ }
+ },
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "request-id": "61fe8925-fb53-4968-b9de-74be4acd06cc",
+ "source": "MSO"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-notification-url": "https://mso-sdnc-s3.ecomp.idns.aic.cip.att.com:30254/adapters/rest/SDNCNotify",
+ "svc-request-id": "ba937e51-6baf-486c-9851-3c6a646c9256"
+ },
+ "service-information": {
+ "global-customer-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5",
+ "subscription-service-type": "Mobility"
+ }
+ },
+ "port-mirror-configuration-topology": {
+ "configuration-identifiers": {
+ "configuration-id": "pm-config-1",
+ "configuration-name": "vMME02_VLC_Port_Mirroring_DYH2B_SCTPA",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "parent-service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "port-mirror-configuration-assignments": {
+ "cloud-owner": "att-aic",
+ "cloud-region-id": "dyh2b",
+ "dest-network-fqdn": "default-domain:GRP-27529-T-SIL-13B:GRP-27529-T-SIL-13B_vprobe_int_pkmirror1",
+ "dest-vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5",
+ "dest-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-1",
+ "instance-group-role": "pktmirror",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "owning-entity": "10c645f5-9924-4b89-bec0-b17cf49d3cad",
+ "probe-type": "vprobe",
+ "route-allotted-resource-id": "286d41ea-d644-46b2-98fc-643ea1b591d1",
+ "source-capacity": 100000,
+ "source-network-fqdn": "default-domain:GRP-27529-T-IST-13C:GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12",
+ "source-to-dest-maps": {
+ "source-to-dest-map": [
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.4"
+ }
+ },
+ "dest-port-id": "b91beeda-fae3-4a99-9354-06c965db83f7",
+ "dest-port-name": "zdyh2bprbvlba_module04-vlbagent_eph_aff_0_int_pktmirror_port_0-m5ylyrybbmmb",
+ "dest-vserver-id": "9e2fc5ea-a88f-4955-bda8-10e75c173a8e",
+ "source-port-id": "7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-port-name": "default-virtual-machine-interface-7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-vserver-id": "2e3a8bb2-75ff-4e97-a888-961bfc624caa"
+ },
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.3"
+ }
+ },
+ "dest-port-id": "7cf3fda3-3153-4655-ae47-36fcf4439073",
+ "dest-port-name": "zdyh2bprbvlba_base_5-vlbagentbase_eph_aff_0_int_pktmirror_port_0-vkvey3eyoqk2",
+ "dest-vserver-id": "165db140-c09f-411a-bfdc-b8e6c7dbbda4",
+ "source-port-id": "0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-port-name": "default-virtual-machine-interface-0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-vserver-id": "b5bf2e1f-9f90-445c-be00-2c882e82d1d7"
+ }
+ ]
+ },
+ "source-vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d",
+ "source-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-1",
+ "instance-group-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "tenant": "GRP-27529-T-IST-13C",
+ "tenant-context": "Test",
+ "tenant-id": "077445458306425499337c98bafc8c47",
+ "vnics-group-id": "97"
+ }
+ }
+ },
+ "configuration-id": "pm-config-1"
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/port-mirror-configuration-item.json b/ms/gra/gra-app/src/test/resources/port-mirror-configuration-item.json
new file mode 100644
index 0000000..780d079
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/port-mirror-configuration-item.json
@@ -0,0 +1,116 @@
+{
+ "configuration-data": {
+ "configuration-oper-status": {
+ "last-action": "CreatePortMirrorConfigurationInstance",
+ "last-rpc-action": "activate",
+ "order-status": "Active"
+ },
+ "configuration-operation-information": {
+ "configuration-information": {
+ "configuration-id": "pm-config-2",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "onap-model-information": {
+ "model-customization-uuid": "770c991a-47fb-4225-8d72-4790847f8307",
+ "model-invariant-uuid": "a81abec0-222e-4fb2-b1c6-c4162359b2b3",
+ "model-name": "Port Mirroring Configuration",
+ "model-uuid": "18af239e-5397-4224-816f-d2850f3fab38",
+ "model-version": "23.0"
+ }
+ },
+ "port-mirror-configuration-request-input": {
+ "dest-port": {
+ "vnf-information": {
+ "vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5"
+ }
+ },
+ "source-port": {
+ "vnf-information": {
+ "vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d"
+ }
+ }
+ },
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "request-id": "61fe8925-fb53-4968-b9de-74be4acd06cc",
+ "source": "MSO"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-notification-url": "https://mso-sdnc-s3.ecomp.idns.aic.cip.att.com:30254/adapters/rest/SDNCNotify",
+ "svc-request-id": "ba937e51-6baf-486c-9851-3c6a646c9256"
+ },
+ "service-information": {
+ "global-customer-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5",
+ "subscription-service-type": "Mobility"
+ }
+ },
+ "port-mirror-configuration-topology": {
+ "configuration-identifiers": {
+ "configuration-id": "pm-config-2",
+ "configuration-name": "vMME02_VLC_Port_Mirroring_DYH2B_SCTPA",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "parent-service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "port-mirror-configuration-assignments": {
+ "cloud-owner": "att-aic",
+ "cloud-region-id": "dyh2b",
+ "dest-network-fqdn": "default-domain:GRP-27529-T-SIL-13B:GRP-27529-T-SIL-13B_vprobe_int_pkmirror1",
+ "dest-vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5",
+ "dest-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-2",
+ "instance-group-role": "pktmirror",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "owning-entity": "10c645f5-9924-4b89-bec0-b17cf49d3cad",
+ "probe-type": "vprobe",
+ "route-allotted-resource-id": "286d41ea-d644-46b2-98fc-643ea1b591d1",
+ "source-capacity": 100000,
+ "source-network-fqdn": "default-domain:GRP-27529-T-IST-13C:GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12",
+ "source-to-dest-maps": {
+ "source-to-dest-map": [
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.4"
+ }
+ },
+ "dest-port-id": "b91beeda-fae3-4a99-9354-06c965db83f7",
+ "dest-port-name": "zdyh2bprbvlba_module04-vlbagent_eph_aff_0_int_pktmirror_port_0-m5ylyrybbmmb",
+ "dest-vserver-id": "9e2fc5ea-a88f-4955-bda8-10e75c173a8e",
+ "source-port-id": "7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-port-name": "default-virtual-machine-interface-7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-vserver-id": "2e3a8bb2-75ff-4e97-a888-961bfc624caa"
+ },
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.3"
+ }
+ },
+ "dest-port-id": "7cf3fda3-3153-4655-ae47-36fcf4439073",
+ "dest-port-name": "zdyh2bprbvlba_base_5-vlbagentbase_eph_aff_0_int_pktmirror_port_0-vkvey3eyoqk2",
+ "dest-vserver-id": "165db140-c09f-411a-bfdc-b8e6c7dbbda4",
+ "source-port-id": "0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-port-name": "default-virtual-machine-interface-0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-vserver-id": "b5bf2e1f-9f90-445c-be00-2c882e82d1d7"
+ }
+ ]
+ },
+ "source-vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d",
+ "source-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-2",
+ "instance-group-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "tenant": "GRP-27529-T-IST-13C",
+ "tenant-context": "Test",
+ "tenant-id": "077445458306425499337c98bafc8c47",
+ "vnics-group-id": "97"
+ }
+ }
+ },
+ "configuration-id": "pm-config-2"
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/preload1-net-list-item.json b/ms/gra/gra-app/src/test/resources/preload1-net-list-item.json
new file mode 100644
index 0000000..4a91388
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload1-net-list-item.json
@@ -0,0 +1,81 @@
+{
+ "preload-id": "preload1",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": false,
+ "is-provider-network": false,
+ "is-shared-network": false,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+}
+
diff --git a/ms/gra/gra-app/src/test/resources/preload1-net-model-info.json b/ms/gra/gra-app/src/test/resources/preload1-net-model-info.json
new file mode 100644
index 0000000..586915a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload1-net-model-info.json
@@ -0,0 +1,84 @@
+{
+ "preload-list": [
+ {
+ "preload-id": "preload1",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/ms/gra/gra-app/src/test/resources/preload1-net-preload-data.json b/ms/gra/gra-app/src/test/resources/preload1-net-preload-data.json
new file mode 100644
index 0000000..74da3de
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload1-net-preload-data.json
@@ -0,0 +1,78 @@
+{
+
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": false,
+ "is-provider-network": false,
+ "is-shared-network": false,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+}
+
diff --git a/ms/gra/gra-app/src/test/resources/preload1-rpc-network.json b/ms/gra/gra-app/src/test/resources/preload1-rpc-network.json
new file mode 100644
index 0000000..04bea9e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload1-rpc-network.json
@@ -0,0 +1,91 @@
+{
+ "input": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ },
+ "request-information": {
+ "notification-url": "http://dev.null.com",
+ "order-number": "123456",
+ "order-version": "2010.06",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "REQ123456",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http://dev.null.com",
+ "svc-request-id": "SVCREQ123456"
+ }
+ }
+}
diff --git a/ms/gra/gra-app/src/test/resources/preload1-rpc-vfmodule.json b/ms/gra/gra-app/src/test/resources/preload1-rpc-vfmodule.json
new file mode 100644
index 0000000..12553b0
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload1-rpc-vfmodule.json
@@ -0,0 +1,375 @@
+{
+ "input": {
+ "preload-vf-module-topology-information": {
+ "vf-module-topology": {
+ "aic-clli": "AIC12345",
+ "aic-cloud-region": "Cloud9",
+ "cloud-owner": "aic",
+ "onap-model-information": {
+ "model-customization-uuid": "123123123",
+ "model-invariant-uuid": "123123123",
+ "model-name": "frankfurt",
+ "model-uuid": "121212",
+ "model-version": "frankfurt"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "tenant",
+ "vf-module-assignments": {
+ "dhcp-subnet-assignments": {
+ "dhcp-subnet-assignment": [
+ {
+ "ip-version": "ipv4",
+ "network-role": "netrole",
+ "neutron-subnet-id": "sub1"
+ }
+ ]
+ },
+ "vf-module-status": "Active",
+ "vlan-vnfc-instance-groups": {
+ "vlan-vnfc-instance-group": [
+ {
+ "instance-group-function": "function",
+ "instance-group-id": "groupid",
+ "vnf-id": "123",
+ "vnfcs": {
+ "vnfc": [
+ {
+ "vnfc-name": "vnc1",
+ "vnic-groups": {
+ "vnic-group": [
+ {
+ "network-instance-group-function": "func1",
+ "vlan-assignment-policy-name": "policy1",
+ "vlan-common-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "10.1.2.1"
+ }
+ },
+ "vlan-tag-index-next": 0,
+ "vlan-vnics": {
+ "vlan-vnic": [
+ {
+ "vnic-port-id": "8080",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.2.1"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.1.2.2"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "role1",
+ "network-role-tag": "tag1",
+ "neutron-network-id": "net1",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnic-interface-role": "vnicrole1"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vms": {
+ "vm": [
+ {
+ "nfc-naming-code": "name1",
+ "onap-model-information": {
+ "model-customization-uuid": "456456456",
+ "model-invariant-uuid": "456456456",
+ "model-name": "model2",
+ "model-uuid": "678678678",
+ "model-version": "version2"
+ },
+ "vm-count": 0,
+ "vm-names": {
+ "vm-name": [
+ "vm1"
+ ],
+ "vnfc-names": [
+ {
+ "vnfc-name": "vnc1",
+ "vnfc-networks": {
+ "vnfc-network-data": [
+ {
+ "connection-point": {
+ "connection-point-id": "conn1",
+ "port-id": "8181",
+ "vlan-data": [
+ {
+ "vlan-role": "role2",
+ "vlan-tag-description": "tag2",
+ "vlan-tag-id": "1",
+ "vlan-uuid": "78789789"
+ }
+ ]
+ },
+ "vnfc-network-role": "role3",
+ "vnfc-ports": {
+ "vnfc-port": [
+ {
+ "common-sub-interface-role": "subrole1",
+ "vnfc-port-id": "8787",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.3.10"
+ ]
+ },
+ "network-id": "net2",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.1.3.4"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "netrole4",
+ "network-role-tag": "tag5",
+ "neutron-network-id": "nnet5",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnfc-subnet": [
+ {
+ "vnfc-ip-assignments": [
+ {
+ "vnfc-address-family": "ipv4",
+ "vnfc-subnet-dhcp": "Y",
+ "vnfc-subnet-ip": [
+ {
+ "ip-type": "FIXED",
+ "vnfc-client-key": "string",
+ "vnfc-ip-address": "10.1.7.1"
+ }
+ ],
+ "vnfc-subnet-ip-count": 0
+ }
+ ],
+ "vnfc-subnet-role": "string"
+ }
+ ],
+ "vnfc-type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vm-networks": {
+ "vm-network": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "10.1.9.1"
+ ]
+ },
+ "interface-route-prefixes": {
+ "interface-route-prefix": [
+ "10"
+ ]
+ },
+ "is-trunked": true,
+ "mac-addresses": {
+ "mac-address": [
+ "cafe:beef"
+ ]
+ },
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "ipv4",
+ "network-ips": {
+ "network-ip": [
+ "10.2.3.10"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-role": "netrole9",
+ "network-role-tag": "tag9",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "net9",
+ "network-role": "netrole9",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "vlan0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1",
+ "sriov-parameters": {
+ "application-tags": {
+ "c-tags": {
+ "c-tag": [
+ "ctag1"
+ ]
+ },
+ "s-tags": {
+ "s-tag": [
+ "stag1"
+ ]
+ }
+ },
+ "heat-vlan-filters": {
+ "heat-vlan-filter": [
+ "10"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "vm-type": "vmtype1",
+ "vm-type-tag": "vmtag1"
+ }
+ ]
+ }
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "vfmodname",
+ "resource-resolution-data": {
+ "capability-name": "cap1",
+ "payload": "payload1",
+ "resource-key": [
+ {
+ "name": "key1",
+ "value": "value1"
+ }
+ ],
+ "status": "active"
+ },
+ "value": "value1"
+ }
+ ]
+ },
+ "vf-module-topology-identifier": {
+ "vf-module-id": "vfmodule1",
+ "vf-module-name": "vfmodule1",
+ "vf-module-type": "router"
+ }
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "zone1"
+ ],
+ "max-count": 0
+ },
+ "vnf-networks": {
+ "vnf-network": [
+ {
+ "contrail-network-fqdn": "skynet.net",
+ "is-trunked": true,
+ "network-id": "net1",
+ "network-name": "net1",
+ "network-role": "netrole1",
+ "neutron-id": "neutron1",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "net2",
+ "network-role": "netrole2",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "vlan2"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg2",
+ "subnets-data": {
+ "subnet-data": [
+ {
+ "cidr-mask": "255.255",
+ "dhcp-enabled": "Y",
+ "gateway-address": "10.1.2.254",
+ "ip-version": "ipv4",
+ "network-start-address": "10.1.2.1",
+ "sdnc-subnet-id": "sub1",
+ "subnet-id": "sub1",
+ "subnet-name": "sub1",
+ "subnet-role": "subrole1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnf-status": "active"
+ },
+ "vnf-topology-identifier-structure": {
+ "nf-code": "code1",
+ "nf-function": "function1",
+ "nf-role": "role1",
+ "nf-type": "type1",
+ "vnf-id": "preload1",
+ "vnf-name": "vnf1",
+ "vnf-type": "vnftype1"
+ }
+ },
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "order123",
+ "order-version": "1",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "req001",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "reserve",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq001"
+ }
+ }
+}
diff --git a/ms/gra/gra-app/src/test/resources/preload2-net-list-item.json b/ms/gra/gra-app/src/test/resources/preload2-net-list-item.json
new file mode 100644
index 0000000..65a7bc4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload2-net-list-item.json
@@ -0,0 +1,81 @@
+{
+ "preload-id": "preload2",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload2",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+}
+
diff --git a/ms/gra/gra-app/src/test/resources/preload2-net-model-info.json b/ms/gra/gra-app/src/test/resources/preload2-net-model-info.json
new file mode 100644
index 0000000..2b7b12e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload2-net-model-info.json
@@ -0,0 +1,84 @@
+{
+ "preload-list": [
+ {
+ "preload-id": "preload2",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload2",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/ms/gra/gra-app/src/test/resources/preload2.json b/ms/gra/gra-app/src/test/resources/preload2.json
new file mode 100644
index 0000000..009d548
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/preload2.json
@@ -0,0 +1,482 @@
+{
+ "preload-list": [
+ {
+ "preload-id": "preload2",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": true,
+ "is-provider-network": true,
+ "is-shared-network": true,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "321",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "string",
+ "network-role": "string",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string"
+ },
+ "physical-network-name": "string",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "string",
+ "route-table-reference-id": "string"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "string",
+ "dhcp-start-address": "string",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "start-address": "string",
+ "subnet-name": "string",
+ "subnet-role": "string",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "string",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "preload-id": "preload2",
+ "preload-type": "vf-module",
+ "preload-data": {
+ "preload-vf-module-topology-information": {
+ "vf-module-topology": {
+ "aic-clli": "string",
+ "aic-cloud-region": "string",
+ "cloud-owner": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "string",
+ "vf-module-assignments": {
+ "dhcp-subnet-assignments": {
+ "dhcp-subnet-assignment": [
+ {
+ "ip-version": "string",
+ "network-role": "string",
+ "neutron-subnet-id": "string"
+ }
+ ]
+ },
+ "vf-module-status": "string",
+ "vlan-vnfc-instance-groups": {
+ "vlan-vnfc-instance-group": [
+ {
+ "instance-group-function": "string",
+ "instance-group-id": "string",
+ "vnf-id": "string",
+ "vnfcs": {
+ "vnfc": [
+ {
+ "vnfc-name": "string",
+ "vnic-groups": {
+ "vnic-group": [
+ {
+ "network-instance-group-function": "string",
+ "vlan-assignment-policy-name": "string",
+ "vlan-common-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "string",
+ "ipv6-address": "string",
+ "vipv4-address": "string",
+ "vipv6-address": "string"
+ }
+ },
+ "vlan-tag-index-next": 0,
+ "vlan-vnics": {
+ "vlan-vnic": [
+ {
+ "vnic-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "string",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnic-interface-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vms": {
+ "vm": [
+ {
+ "nfc-naming-code": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "vm-count": 0,
+ "vm-names": {
+ "vm-name": [
+ "string"
+ ],
+ "vnfc-names": [
+ {
+ "vnfc-name": "string",
+ "vnfc-networks": {
+ "vnfc-network-data": [
+ {
+ "connection-point": {
+ "connection-point-id": "string",
+ "port-id": "string",
+ "vlan-data": [
+ {
+ "vlan-role": "string",
+ "vlan-tag-description": "string",
+ "vlan-tag-id": "string",
+ "vlan-uuid": "string"
+ }
+ ]
+ },
+ "vnfc-network-role": "string",
+ "vnfc-ports": {
+ "vnfc-port": [
+ {
+ "common-sub-interface-role": "string",
+ "vnfc-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "string",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnfc-subnet": [
+ {
+ "vnfc-ip-assignments": [
+ {
+ "vnfc-address-family": "ipv4",
+ "vnfc-subnet-dhcp": "Y",
+ "vnfc-subnet-ip": [
+ {
+ "ip-type": "FIXED",
+ "vnfc-client-key": "string",
+ "vnfc-ip-address": "string"
+ }
+ ],
+ "vnfc-subnet-ip-count": 0
+ }
+ ],
+ "vnfc-subnet-role": "string"
+ }
+ ],
+ "vnfc-type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vm-networks": {
+ "vm-network": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "interface-route-prefixes": {
+ "interface-route-prefix": [
+ "string"
+ ]
+ },
+ "is-trunked": true,
+ "mac-addresses": {
+ "mac-address": [
+ "string"
+ ]
+ },
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-role": "string",
+ "network-role-tag": "string",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "string",
+ "network-role": "string",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "sriov-parameters": {
+ "application-tags": {
+ "c-tags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "ctags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "s-tags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ },
+ "stags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ }
+ },
+ "heat-vlan-filters": {
+ "heat-vlan-filter": [
+ "string"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "vm-type": "string",
+ "vm-type-tag": "string"
+ }
+ ]
+ }
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "string",
+ "resource-resolution-data": {
+ "capability-name": "string",
+ "payload": "string",
+ "resource-key": [
+ {
+ "name": "string",
+ "value": "string"
+ }
+ ],
+ "status": "string"
+ },
+ "value": "string"
+ }
+ ]
+ },
+ "vf-module-topology-identifier": {
+ "vf-module-id": "string",
+ "vf-module-name": "string",
+ "vf-module-type": "string"
+ }
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "string"
+ ],
+ "max-count": 0
+ },
+ "vnf-networks": {
+ "vnf-network": [
+ {
+ "contrail-network-fqdn": "string",
+ "is-trunked": true,
+ "network-id": "string",
+ "network-name": "string",
+ "network-role": "string",
+ "neutron-id": "string",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "string",
+ "network-role": "string",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "subnets-data": {
+ "subnet-data": [
+ {
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "network-start-address": "string",
+ "sdnc-subnet-id": "string",
+ "subnet-id": "string",
+ "subnet-name": "string",
+ "subnet-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnf-status": "string"
+ },
+ "vnf-topology-identifier-structure": {
+ "nf-code": "string",
+ "nf-function": "string",
+ "nf-role": "string",
+ "nf-type": "string",
+ "vnf-id": "string",
+ "vnf-name": "string",
+ "vnf-type": "string"
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/ms/gra/gra-app/src/test/resources/service-assign-rpc.json b/ms/gra/gra-app/src/test/resources/service-assign-rpc.json
new file mode 100644
index 0000000..96f6b2b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service-assign-rpc.json
@@ -0,0 +1,34 @@
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateServiceInstance",
+ "request-id": "req123",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq123"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-customization-uuid": "12341234",
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ }
+ }
+ }
diff --git a/ms/gra/gra-app/src/test/resources/service1-service.json b/ms/gra/gra-app/src/test/resources/service1-service.json
new file mode 100644
index 0000000..abf7da2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-service.json
@@ -0,0 +1,69 @@
+{
+ "service": [
+ {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-data": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "request-id": "req123",
+ "order-number": "123",
+ "request-action": "CreateServiceInstance",
+ "order-version": "version1",
+ "source": "curl"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-version": "1920",
+ "model-customization-uuid": "12341234",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3"
+ },
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-name": "zrdm61asmsf01_svc",
+ "service-type": "test",
+ "global-customer-id": "cust123"
+ },
+ "onap-model-information": {
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-version": "1920",
+ "model-customization-uuid": "12341234",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq123"
+ }
+ },
+ "service-status": {
+ "final-indicator": "Y",
+ "rpc-action": "assign",
+ "rpc-name": "service-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-08-17T12:29:24.031Z",
+ "response-message": "",
+ "action": "CreateServiceInstance",
+ "request-status": "synccomplete"
+ }
+ }
+ ]
+}
diff --git a/ms/gra/gra-app/src/test/resources/service1-service_vnf.json b/ms/gra/gra-app/src/test/resources/service1-service_vnf.json
new file mode 100644
index 0000000..973b668
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-service_vnf.json
@@ -0,0 +1,141 @@
+{
+ "service": [
+ {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-data": {
+ "request-information": {
+ "request-id": "f5554477-51c7-4f8e-9183-f8968f3f86bf",
+ "request-action": "CreateServiceInstance",
+ "source": "MSO"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "Demonstration",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-name": "zrdm61asmsf01_svc",
+ "service-type": "service-nginx-ingress-1",
+ "global-customer-id": "Demonstration"
+ },
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "6d06a832-69da-4369-9d99-049767a39400"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "Demonstration",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "acf0c0db-106f-42e4-b77b-191e9d229eb9",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/b8f92243-85cb-4954-970d-7e0159b9a48b"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "request-information": {
+ "request-id": "c382d6d1-2108-4c39-ab7a-c3e67cdbc749",
+ "request-action": "CreateVnfInstance",
+ "source": "MSO"
+ },
+ "vnf-request-input": {
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "tenant": "k8s_tenant_1",
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "k8s_availability_zone_1"
+ ]
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "service-status": {
+ "final-indicator": "Y",
+ "rpc-action": "activate",
+ "rpc-name": "vf-module-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-06-24T13:06:24.525Z",
+ "response-message": "",
+ "action": "CreateVfModuleInstance",
+ "request-status": "synccomplete"
+ }
+ }
+ ]
+}
+
diff --git a/ms/gra/gra-app/src/test/resources/service1-servicedata.json b/ms/gra/gra-app/src/test/resources/service1-servicedata.json
new file mode 100644
index 0000000..8521b76
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-servicedata.json
@@ -0,0 +1,221 @@
+{
+ "request-information": {
+ "request-id": "f5554477-51c7-4f8e-9183-f8968f3f86bf",
+ "request-action": "CreateServiceInstance",
+ "source": "MSO"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-name": "zrdm61asmsf01_svc",
+ "service-type": "service-nginx-ingress-1",
+ "global-customer-id": "Demonstration"
+ },
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "6d06a832-69da-4369-9d99-049767a39400"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-id": "service1",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "acf0c0db-106f-42e4-b77b-191e9d229eb9",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/b8f92243-85cb-4954-970d-7e0159b9a48b"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "request-information": {
+ "request-id": "c382d6d1-2108-4c39-ab7a-c3e67cdbc749",
+ "request-action": "CreateVnfInstance",
+ "source": "MSO"
+ },
+ "vnf-request-input": {
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "tenant": "k8s_tenant_1",
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "k8s_availability_zone_1"
+ ]
+ }
+ }
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-data": {
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "availability_zone_0",
+ "value": "k8s_availability_zone_1"
+ },
+ {
+ "name": "k8s-rb-profile-name",
+ "value": "default"
+ }
+ ]
+ },
+ "tenant": "k8s_tenant_1",
+ "sdnc-generated-cloud-resources": true,
+ "aic-clli": "complexMC",
+ "vf-module-topology-identifier": {
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb"
+ },
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vf-module-request-input": {
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "bf81d48a-d5f9-42f2-bc49-9277f0e2a836",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/64780567-ecf5-41c9-af36-bb06f8ae0e5d"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "from-preload": true
+ },
+ "request-information": {
+ "request-id": "051f3665-002c-4e3c-b62e-f8c0b48ef12e",
+ "request-action": "CreateVfModuleInstance",
+ "source": "MSO"
+ },
+ "vf-module-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+}
+
+
+
diff --git a/ms/gra/gra-app/src/test/resources/service1-serviceitem.json b/ms/gra/gra-app/src/test/resources/service1-serviceitem.json
new file mode 100644
index 0000000..aad2096
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-serviceitem.json
@@ -0,0 +1,233 @@
+{
+ "service-instance-id": "service1",
+ "service-data": {
+ "request-information": {
+ "request-id": "f5554477-51c7-4f8e-9183-f8968f3f86bf",
+ "request-action": "CreateServiceInstance",
+ "source": "MSO"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-name": "zrdm61asmsf01_svc",
+ "service-type": "test",
+ "global-customer-id": "cust123"
+ },
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "6d06a832-69da-4369-9d99-049767a39400"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "acf0c0db-106f-42e4-b77b-191e9d229eb9",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/b8f92243-85cb-4954-970d-7e0159b9a48b"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "request-information": {
+ "request-id": "c382d6d1-2108-4c39-ab7a-c3e67cdbc749",
+ "request-action": "CreateVnfInstance",
+ "source": "MSO"
+ },
+ "vnf-request-input": {
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "tenant": "k8s_tenant_1",
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "k8s_availability_zone_1"
+ ]
+ }
+ }
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-data": {
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "availability_zone_0",
+ "value": "k8s_availability_zone_1"
+ },
+ {
+ "name": "k8s-rb-profile-name",
+ "value": "default"
+ }
+ ]
+ },
+ "tenant": "k8s_tenant_1",
+ "sdnc-generated-cloud-resources": true,
+ "aic-clli": "complexMC",
+ "vf-module-topology-identifier": {
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb"
+ },
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vf-module-request-input": {
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "bf81d48a-d5f9-42f2-bc49-9277f0e2a836",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/64780567-ecf5-41c9-af36-bb06f8ae0e5d"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "from-preload": true
+ },
+ "request-information": {
+ "request-id": "051f3665-002c-4e3c-b62e-f8c0b48ef12e",
+ "request-action": "CreateVfModuleInstance",
+ "source": "MSO"
+ },
+ "vf-module-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ },
+ "service-status": {
+ "final-indicator": "Y",
+ "rpc-action": "activate",
+ "rpc-name": "vf-module-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-06-24T13:06:24.525Z",
+ "response-message": "",
+ "action": "CreateVfModuleInstance",
+ "request-status": "synccomplete"
+ }
+}
+
+
diff --git a/ms/gra/gra-app/src/test/resources/service1-servicestatus.json b/ms/gra/gra-app/src/test/resources/service1-servicestatus.json
new file mode 100644
index 0000000..ca763d3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-servicestatus.json
@@ -0,0 +1,10 @@
+{
+ "final-indicator": "Y",
+ "rpc-action": "activate",
+ "rpc-name": "vf-module-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-06-24T13:06:24.525Z",
+ "response-message": "",
+ "action": "CreateVfModuleInstance",
+ "request-status": "synccomplete"
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/service1-vfmodule-item.json b/ms/gra/gra-app/src/test/resources/service1-vfmodule-item.json
new file mode 100644
index 0000000..67e5b3c
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1-vfmodule-item.json
@@ -0,0 +1,79 @@
+{
+ "vf-module-data": {
+ "vf-module-level-oper-status": {
+ "order-status": "PendingCreate",
+ "last-rpc-action": "assign"
+ },
+ "request-information": {
+ "request-action": "CreateVfModuleInstance",
+ "source": "simulator",
+ "request-id": "c594915b-cd49-4276-8e6b-536caa5f5285"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "svc-action": "assign"
+ },
+ "service-information": {
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "subscription-service-type": "VIRTUAL USP",
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3cac",
+ "global-customer-id": "cust123",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-name": "SmsfNc2578..smsf_base..module-0",
+ "model-version": "3",
+ "model-customization-uuid": "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid": "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid": "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload": true,
+ "vf-module-type": "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input": {
+ "aic-cloud-region": "rdm61a",
+ "cloud-owner": "att-nc",
+ "tenant": "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name": "vfmodule1",
+ "vf-module-input-parameters": {}
+ },
+ "vnf-information": {
+ "onap-model-information": {
+ "model-name": "vcpevsp_vgmux_0412 ",
+ "model-version": "1.0",
+ "model-customization-uuid": "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid": "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid": "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name": "zrdm61asmsf01",
+ "vnf-type": "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-name": "SmsfNc2578..smsf_base..module-0",
+ "model-version": "3",
+ "model-customization-uuid": "59ffe5ba-cfaf-4e83-a2f3-159522dcebac",
+ "model-uuid": "513cc9fc-fff5-4c46-9728-393437536c4d",
+ "model-invariant-uuid": "7ca7567c-f42c-4ed8-bcde-f8971b92d90a"
+ },
+ "aic-cloud-region": "rdm61a",
+ "tenant": "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-topology-identifier": {
+ "vf-module-name": "vfmodule1",
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d",
+ "vf-module-type": "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-parameters": {},
+ "sdnc-generated-cloud-resources": true
+ }
+ },
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d"
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/service1.json b/ms/gra/gra-app/src/test/resources/service1.json
new file mode 100644
index 0000000..00b9b4b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service1.json
@@ -0,0 +1,236 @@
+{
+ "service": [
+ {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-data": {
+ "request-information": {
+ "request-id": "f5554477-51c7-4f8e-9183-f8968f3f86bf",
+ "request-action": "CreateServiceInstance",
+ "source": "MSO"
+ },
+ "service-request-input": {
+ "service-instance-name": "zrdm61asmsf01_svc"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "Demonstration",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-name": "zrdm61asmsf01_svc",
+ "service-type": "service-nginx-ingress-1",
+ "global-customer-id": "Demonstration"
+ },
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "6d06a832-69da-4369-9d99-049767a39400"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "Demonstration",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "acf0c0db-106f-42e4-b77b-191e9d229eb9",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/b8f92243-85cb-4954-970d-7e0159b9a48b"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "request-information": {
+ "request-id": "c382d6d1-2108-4c39-ab7a-c3e67cdbc749",
+ "request-action": "CreateVnfInstance",
+ "source": "MSO"
+ },
+ "vnf-request-input": {
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "tenant": "k8s_tenant_1",
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "k8s_availability_zone_1"
+ ]
+ }
+ }
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-data": {
+ "service-information": {
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "onap-model-information": {
+ "model-name": "service-nginx-ingress-1",
+ "model-invariant-uuid": "0fe6193d-2d65-4b8e-a4ee-a07821566b5e",
+ "model-version": "1.0",
+ "model-uuid": "48223a6a-f5e1-4354-95eb-f5ea014fc9df"
+ },
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id": "Demonstration",
+ "subscription-service-type": "service-nginx-ingress-1"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "availability_zone_0",
+ "value": "k8s_availability_zone_1"
+ },
+ {
+ "name": "k8s-rb-profile-name",
+ "value": "default"
+ }
+ ]
+ },
+ "tenant": "k8s_tenant_1",
+ "sdnc-generated-cloud-resources": true,
+ "aic-clli": "complexMC",
+ "vf-module-topology-identifier": {
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb"
+ },
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "vf-module-request-input": {
+ "vf-module-name": "Python_ONAP_SDK_vf_module_instance_678cc889-0c89-40f3-9f5b-1f475d5c4ebb",
+ "tenant": "k8s_tenant_1",
+ "cloud-owner": "k8sCloudOwner",
+ "aic-cloud-region": "k8s_region_1"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-request-id": "bf81d48a-d5f9-42f2-bc49-9277f0e2a836",
+ "svc-notification-url": "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/SDNCCallback/64780567-ecf5-41c9-af36-bb06f8ae0e5d"
+ },
+ "vnf-information": {
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "onap-model-information": {
+ "model-name": "nginx-ingress-1",
+ "model-invariant-uuid": "ebd1565b-a98f-4d77-9b91-6aefd51d040c",
+ "model-version": "1.0",
+ "model-customization-uuid": "69cff101-d1f2-4bf3-9697-57f52ba3c5dd",
+ "model-uuid": "dfeccc32-2459-43bf-bfdd-36567e696090"
+ },
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2"
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-name": "NginxIngress1..nginx-ingress..module-0",
+ "model-invariant-uuid": "caa22b8e-e0de-4d2c-9048-9a71d39afd91",
+ "model-version": "1",
+ "model-customization-uuid": "d6403fe2-ebe4-4fce-bec2-0218f61b2564",
+ "model-uuid": "e5d2fe74-9534-4a7c-9a1b-f49ecf1105e3"
+ },
+ "vf-module-id": "269bda16-f40c-41a9-baef-e8905ab2b70e",
+ "vf-module-type": "NginxIngress1..nginx-ingress..module-0",
+ "from-preload": true
+ },
+ "request-information": {
+ "request-id": "051f3665-002c-4e3c-b62e-f8c0b48ef12e",
+ "request-action": "CreateVfModuleInstance",
+ "source": "MSO"
+ },
+ "vf-module-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "activate"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ },
+ "service-status": {
+ "final-indicator": "Y",
+ "rpc-action": "activate",
+ "rpc-name": "vf-module-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-06-24T13:06:24.525Z",
+ "response-message": "",
+ "action": "CreateVfModuleInstance",
+ "request-status": "synccomplete"
+ }
+ }
+ ]
+}
+
diff --git a/ms/gra/gra-app/src/test/resources/service9.json b/ms/gra/gra-app/src/test/resources/service9.json
new file mode 100644
index 0000000..aef12ab
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/service9.json
@@ -0,0 +1,268 @@
+{
+ "service": [
+ {
+ "service-instance-id": "service9",
+ "service-data": {
+ "request-information": {
+ "request-id": "id-2006-2",
+ "source": "local-vm",
+ "request-action": "CreateServiceInstance"
+ },
+ "service-request-input": {
+ "service-instance-name": "service-name-9"
+ },
+ "service-information": {
+ "service-id": "service-id-0002",
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ },
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006",
+ "subscription-service-type": "viprsvc"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "service9",
+ "service-instance-name": "service-name-9",
+ "service-type": "viprsvc",
+ "global-customer-id": "MCBH-2006"
+ },
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "id-0002"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "vnf-9",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "PendingCreate",
+ "last-rpc-action": "assign",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "vnf-9",
+ "svc-notification-url": "http://dummy.att.com"
+ },
+ "vnf-information": {
+ "vnf-id": "vnf-9",
+ "vnf-name": "vnf-name-9",
+ "vnf-type": "vdns",
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-9",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-9",
+ "model-uuid": "bgb-model-ver-id"
+ }
+ },
+ "request-information": {
+ "request-id": "vnf-0002",
+ "source": "local-vm",
+ "request-action": "CreateVnfInstance"
+ },
+ "vnf-request-input": {
+ "vnf-name": "vnf-name-9",
+ "tenant": "pc-tenant-1",
+ "cloud-owner": "att-aic",
+ "aic-cloud-region": "mtn6"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-9",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-200",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vnf-parameters-data": {
+ "param": [
+ {
+ "name": "vnf_param_1",
+ "value": "vnf_value_1",
+ "resource-resolution-data": {
+ "status": "SUCCESS",
+ "payload": "vnfpayload",
+ "capability-name": "param-capability"
+ }
+ },
+ {
+ "name": "vnf_param_2",
+ "value": "vnf_value_2"
+ }
+ ]
+ },
+ "tenant": "pc-tenant-1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "vnf-200",
+ "vnf-type": "vdns",
+ "nf-type": "NAT",
+ "nf-role": "vdns",
+ "nf-code": "vn2",
+ "nf-function": "AVPNvdns"
+ },
+ "aic-clli": "AUSTTXGR",
+ "aic-cloud-region": "mtn6"
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "vf-module-9",
+ "vf-module-data": {
+ "service-information": {
+ "service-id": "service-id-0002",
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ },
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006",
+ "subscription-service-type": "viprsvc"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "vSAMP10aDEV::base::module-0",
+ "model-version": "1.0",
+ "model-customization-uuid": "cust-uuid-vf-module-9",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "param1",
+ "value": "param_value_1"
+ },
+ {
+ "name": "param2",
+ "value": "param_value_2",
+ "resource-resolution-data": {
+ "resource-key": [
+ {
+ "name": "key1",
+ "value": "key_value_1"
+ },
+ {
+ "name": "key2",
+ "value": "key_value_2"
+ }
+ ],
+ "payload": "12",
+ "capability-name": "walkingmachine",
+ "status": "SUCCESS"
+ }
+ },
+ {
+ "name": "param3",
+ "value": "param_value3",
+ "resource-resolution-data": {
+ "payload": "12",
+ "capability-name": "walkingmachine",
+ "status": "SUCCESS"
+ }
+ },
+ {
+ "name": "mob1_names",
+ "value": "",
+ "resource-resolution-data": {
+ "payload": "",
+ "capability-name": "None",
+ "status": "FAILED"
+ }
+ },
+ {
+ "name": "mob1_role1_public_vlans",
+ "value": "4000"
+ }
+ ]
+ },
+ "tenant": "pc-tenant-1",
+ "sdnc-generated-cloud-resources": true,
+ "aic-clli": "rxutest201901",
+ "vf-module-topology-identifier": {
+ "vf-module-type": "vSAMP10aDEV::base::module-0",
+ "vf-module-id": "vf-module-9",
+ "vf-module-name": "vf-module-name-9"
+ },
+ "aic-cloud-region": "mtn6"
+ },
+ "vf-module-request-input": {
+ "tenant": "pc-tenant-1",
+ "vf-module-name": "vf-module-name-1",
+ "aic-cloud-region": "mtn6"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "vf-id-0001",
+ "svc-notification-url": "http://dummy.att.com"
+ },
+ "vnf-information": {
+ "vnf-id": "vnf-100",
+ "vnf-type": "vdns",
+ "vnf-name": "vnf-name-1",
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-100",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-100",
+ "model-uuid": "bgb-model-ver-id"
+ }
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "vSAMP10aDEV::base::module-0",
+ "model-version": "1.0",
+ "model-customization-uuid": "cust-uuid-vf-module-100",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vf-module-id": "vf-module-100",
+ "vf-module-type": "ss-vf-module-type",
+ "from-preload": true
+ },
+ "request-information": {
+ "notification-url": "http://some.url.com",
+ "request-id": "request-0001",
+ "request-action": "CreateVfModuleInstance",
+ "source": "VID"
+ },
+ "vf-module-level-oper-status": {
+ "order-status": "PendingCreate",
+ "last-rpc-action": "assign",
+ "last-action": "CreateVfModuleInstance"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic.properties b/ms/gra/gra-app/src/test/resources/svclogic.properties
new file mode 100644
index 0000000..c716e13
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic.properties
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : CCSDK
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.dbtype = jdbc
+org.onap.ccsdk.sli.jdbc.url=jdbc:derby:memory:${MYSQL_DATABASE};create=true
+org.onap.ccsdk.sli.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
+org.onap.ccsdk.sli.jdbc.database = ${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user = ${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password = ${MYSQL_PASSWORD}
+
+serviceLogicDirectory=target/docker-stage/opt/onap/sdnc/svclogic/graphs/generic-resource-api
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-aic-zone.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-aic-zone.xml
new file mode 100644
index 0000000..5f174c6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-aic-zone.xml
@@ -0,0 +1,124 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='aai-get-aic-zone' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='aaiapi.output.cloud-zone' value='' />
+ <parameter name='aaiapi.output.complex-name' value='' />
+ <parameter name='aaiapi.output.aic-clli' value='' />
+ </set>
+ <switch test='`$aaiapi.input.cloud-owner`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$aaiapi.input.cloud-region-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $aaiapi.input.cloud-owner AND
+ cloud-region.cloud-region-id = $aaiapi.input.cloud-region-id AND
+ depth = '0'"
+ pfx='aai.cloud-region' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region not found in AAI"/>
+ </set>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$tmp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error retrieving cloud region from AAI"/>
+ </set>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$tmp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>
+ </set>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$tmp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>
+ </set>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$tmp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='false' index='ridx' start='0' end="`$aai.cloud-region.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.complex-found' value='true' />
+ </set>
+ <set>
+ <parameter name='aaiapi.output.aic-clli' value='`$aai.complex.physical-location-id`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' local-only='false' ></get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <switch test='`$tmp.complex-found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Complex not found in AAI"/>
+ </set>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$tmp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='aaiapi.output.cloud-zone' value='`$aai.cloud-region.cloud-zone`' />
+ <parameter name='aaiapi.output.complex-name' value='`$aai.cloud-region.complex-name`' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml
new file mode 100644
index 0000000..7383c3f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml
@@ -0,0 +1,95 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='aai-get-network-instance-group' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='aaiapi.output.collection-customization-uuid' value='' />
+ <parameter name='aaiapi.output.collection-name' value='' />
+ <parameter name='aaiapi.output.collection-function' value='' />
+ <parameter name='aaiapi.output.collection.collection-id' value='' />
+ </set>
+ <switch test='`$aaiapi.input.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-group"
+ key="instance-group.id = $aaiapi.input.network-instance-group-id"
+ local-only="false"
+ pfx="tmp.AnAI.networkInstanceGroup">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving network instance group with id=' + $aaiapi.input.network-instance-group-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'network instance group id: ' + $aaiapi.input.network-instance-group-id + 'not found in AnAI'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <for silentFailure='true' index='ridx' start='0' end="`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship_length`" >
+ <for silentFailure='true' index='rdidx' start='0' end="`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='collection.collection-id'>
+ <block atomic="true">
+ <set>
+ <parameter name='aaiapi.output.collection.collection-id' value='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <switch test='`$aaiapi.output.collection.collection-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'network instance group id: ' + $aaiapi.input.network-instance-group-id + ' collection not found in AnAI'`" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="collection"
+ key="collection.collection-id = $aaiapi.output.collection.collection-id"
+ local-only="false"
+ pfx="tmp.AnAI.collection">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving collection with id=' + $aaiapi.output.collection.collection-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'collection: ' + $aaiapi.output.collection.collection-id + 'not found in AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='aaiapi.output.collection-customization-uuid' value='`$tmp.AnAI.collection.collection-customization-id`' />
+ <parameter name='aaiapi.output.collection-name' value='`$tmp.AnAI.collection.collection-name`' />
+ <parameter name='aaiapi.output.collection-function' value='`$tmp.AnAI.collection.collection-function`' />
+ </set>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml
new file mode 100644
index 0000000..658cee1
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml
@@ -0,0 +1,560 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='api-contrail-route-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar-assignments.source-network.network-id"
+ local-only="false"
+ pfx="aai.src-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+ <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />
+ <parameter name='regex' value=':' />
+ </execute>
+ <switch test='`$virtual-network-fqdn-split_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='fqname-to-uuid' />
+ <parameter name='api-action' value='get' />
+ <parameter name='resp-prefix' value='uuidresp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='fqname-type' value='virtual-network' />
+ <parameter name='policy-name' value='`$src-virtual-network-fqname`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to find network uuid for Contrail to source network" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='src-uuid' value='`$uuidresp.uuid`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='apply' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to apply policy in Contrail to source network" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test='`$ar-assignments.dest-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Destination network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"
+ local-only="false"
+ pfx="aai.dest-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+ <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />
+ <parameter name='regex' value=':' />
+ </execute>
+ <switch test='`$virtual-network-fqdn-split_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+ <parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='fqname-to-uuid' />
+ <parameter name='api-action' value='get' />
+ <parameter name='resp-prefix' value='uuidresp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$dest-default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='fqname-type' value='virtual-network' />
+ <parameter name='policy-name' value='`$dest-virtual-network-fqname`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to find network uuid for Contrail to destination network" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='dest-uuid' value='`$uuidresp.uuid`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='apply' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to apply policy in Contrail to destination network" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy:relationship-list"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+value="`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.source-network.network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[1].related-link"
+value="`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.dest-network.network-id`" />
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="in-service-path" />
+ <parameter name="orchestration-status" value="activated" />
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml
new file mode 100644
index 0000000..674e547
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml
@@ -0,0 +1,1443 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='api-contrail-route-topology-operation-create' mode='sync'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>
+ <parameter name='field3' value='cto-api.parent-service-instance-id' />
+ <parameter name='field4' value='`$cto-api.parent-service-instance-id`' />
+ <parameter name='field5' value='cto-api.default-domain' />
+ <parameter name='field6' value='`$cto-api.default-domain`' />
+ <parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />
+ <parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />
+ <parameter name='field9' value='cto-api.service-type' />
+ <parameter name='field10' value='`$cto-api.service-type`' />
+ <parameter name='field11' value='cto-api.source-network-role' />
+ <parameter name='field12' value='`$cto-api.source-network-fole`' />
+ <parameter name='field13' value='cto-api.collector-network-role' />
+ <parameter name='field14' value='`$cto-api.collector-network-4ole`' />
+ <parameter name='field15' value='cto-api.default-project' />
+ <parameter name='field16' value='`$cto-api.default-project`' />
+ <parameter name='field17' value='cto-api.cloud-region-id' />
+ <parameter name='field18' value='`$cto-api.cloud-region-id`' />
+ <parameter name='field19' value='cto-api.cloud-owner' />
+ <parameter name='field20' value='`$cto-api.cloud-owner`' />
+ <parameter name='field21' value='cto-api.isTest' />
+ <parameter name='field22' value='`$cto-api.isTest`' />
+ <parameter name='field23' value='cto-api.owning-entity' />
+ <parameter name='field24' value='`$cto-api.owning-entity`' />
+ </record>
+ <set>
+ <parameter name="ctotmp." value="" />
+ <parameter name="ar-request-information." value="" />
+ <parameter name="ar-created" value="" />
+ <parameter name="ar-aai-created" value="" />
+ <parameter name="np-aai-created" value="" />
+ <parameter name="contrail-created" value="" />
+ </set>
+ <set>
+ <parameter name="ctotmp.s-l3-network" value="" />
+ <parameter name="ctotmp.num-s-network" value="0" />
+ <parameter name="ctotmp.s-network-policy" value="" />
+ <parameter name="ctotmp.num-s-np" value="0" />
+ <parameter name="ctotmp.c-l3-network" value="" />
+ <parameter name="ctotmp.num-c-network" value="0" />
+ <parameter name="ctotmp.c-network-policy" value="" />
+ <parameter name="ctotmp.num-c-np" value="0" />
+ <parameter name="ctotmp.s-network-policy-list_length" value="0" />
+ <parameter name="ctotmp.c-network-policy-list_length" value="0" />
+ <parameter name="ctotmp.network-policy-id" value="" />
+ <parameter name="ctotmp.action" value="create" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="ctotmp.aai.source-network">
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/' + $cto-api.cloud-region-id`" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole=' + $cto-api.source-network-role`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Failed to get source network from aai" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Source network not found in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <for index='ctotmp.sidx' start='0' end='`$ctotmp.aai.source-network.results_length`' >
+ <block atomic="true">
+ <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="ctotmp.s-network-policy-list[$ctotmp.num-s-np].network-policy-id" value="`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`" />
+ </set>
+ <set>
+ <parameter name="ctotmp.num-s-np" value="`$ctotmp.num-s-np+1`" />
+ </set>
+ <set>
+ <parameter name="ctotmp.s-network-policy-list_length" value="`$ctotmp.num-s-np`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="ctotmp.s-l3-network." value="`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.`" />
+ <parameter name="ctotmp.num-s-network" value="`$ctotmp.num-s-network+1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$ctotmp.num-s-network`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Source network not found from aai" />
+ </return>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name="ctotmp.source-network.network-id" value="`$ctotmp.s-l3-network.network-id`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Too many networks returned for source network from aai" />
+ </return>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="ctotmp.aai.collector-network">
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/' + $cto-api.cloud-region-id`" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole=' + $cto-api.collector-network-role`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Failed to get collector network from aai" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <for index='ctotmp.cidx' start='0' end='`$ctotmp.aai.collector-network.results_length`' >
+ <block atomic="true">
+ <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found from aai" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="ctotmp.c-l3-network." value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.`" />
+ <parameter name="ctotmp.num-c-network" value="`$ctotmp.num-c-network+1`" />
+ </set>
+ <for index='ridx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship_length`' >
+ <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].related-to`'>
+ <outcome value='service-instance'>
+ <block atomic="true">
+ <for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >
+ <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='service-instance.service-instance-id'>
+ <block atomic="true">
+ <set>
+ <parameter name="collector-service-instance-id" value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='network-policy'>
+ <block atomic="true">
+ <for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >
+ <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='network-policy.network-policy-id'>
+ <block atomic="true">
+ <set>
+ <parameter name="ctotmp.c-network-policy-list[$ctotmp.num-c-np].network-policy-id" value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`" />
+ </set>
+ <set>
+ <parameter name="ctotmp.num-c-np" value="`$ctotmp.num-c-np+1`" />
+ </set>
+ <set>
+ <parameter name="ctotmp.c-network-policy-list_length" value="`$ctotmp.num-c-np`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$ctotmp.num-c-network`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found from aai" />
+ </return>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name="ctotmp.dest-network.network-id" value="`$ctotmp.c-l3-network.network-id`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create: Too many networks returned for collector network from aai" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='ctotmp.spidx' start='0' end='`$ctotmp.s-network-policy-list_length`' >
+ <for index='ctotmp.cpidx' start='0' end='`$ctotmp.c-network-policy-list_length`' >
+ <block atomic="true">
+ <switch test='`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id == $ctotmp.c-network-policy-list[$ctotmp.cpidx].network-policy-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="ctotmp.network-policy-id" value="`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id`" />
+ <parameter name="ctotmp.existing-network-policy-found" value="true" />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <switch test='`$ctotmp.network-policy-id`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="existing policy - error" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ar-request-information.source' value="SDNC" />
+ </set>
+ <set>
+ <parameter name='ar-contrail-route-request-input.source-network.network-role' value="`$cto-api.source-network-role`" />
+ <parameter name='ar-contrail-route-request-input.source-network.network-id' value="`$ctotmp.source-network.network-id`" />
+ <parameter name='ar-contrail-route-request-input.dest-network.network-role' value="`$cto-api.collector-network-role`" />
+ <parameter name='ar-contrail-route-request-input.dest-network.network-id' value="`$ctotmp.dest-network.network-id`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-allottedresource-id' mode='sync' ></call>
+ <set>
+ <parameter name='ar-identifiers.allotted-resource-id' value="`$tmp.return.generate-allottedresource-id.id`" />
+ <parameter name='ar-identifiers.allotted-resource-type' value="contrail-route" />
+ <parameter name='ar-identifiers.parent-service-instance-id' value="`$cto-api.parent-service-instance-id`" />
+ <parameter name='ar-identifiers.consuming-service-instance-id' value="`$cto-api.service-instance-id` " />
+ <parameter name="tmp.ar.allotted-resource-id" value="`$tmp.return.generate-allottedresource-id.id`" />
+ <parameter name='tmp.ar.allotted-resource-type' value="contrail-route" />
+ <parameter name='tmp.ar.parent-service-instance-id' value="`$cto-api.parent-service-instance-id`" />
+ <!-- <parameter name='tmp.ar.contrail-applied-service-instance-id' value='' /> -->
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$cto-api.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network`"/>
+ <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$cto-api.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: Existing contrail route allotted resource" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <!--
+<parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " /><parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" /><parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+-->
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.parent-ar-url`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.network-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ar-name' value='$source-network-name_$cloud-region-id_$source-network-role_$collector-network-role _policy_' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$source-network-name"/>
+ <parameter name="replacement" value="`$ctotmp.s-l3-network.network-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$cloud-region-id"/>
+ <parameter name="replacement" value="`$cto-api.cloud-region-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$source-network-role"/>
+ <parameter name="replacement" value="`$cto-api.source-network-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$collector-network-role"/>
+ <parameter name="replacement" value="`$cto-api.collector-network-role`"/>
+ </execute>
+ <set>
+ <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />
+ <parameter name='generate-unique-name-input.index-length' value='2' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="tmp.ar-name="/>
+ <parameter name="field3" value="`$tmp.ar-name`"/>
+ <parameter name="field4" value="generate-unique-name-input.prefix" />
+ <parameter name="field5" value="`$generate-unique-name-input.prefix`" />
+ </record>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+ </set>
+ </block>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.'
+value="`$ar-identifiers.`" />
+ </set>
+ <set>
+ <parameter name='ar-assignments.source-network.network-id' value="`$ctotmp.s-l3-network.network-id` " />
+ <parameter name='ar-assignments.source-network.network-role' value="`$cto-api.source-network-role` " />
+ <parameter name='ar-assignments.dest-network.network-id' value="`$ctotmp.c-l3-network.network-id` " />
+ <parameter name='ar-assignments.dest-network.network-role' value="`$cto-api.collector-network-role` " />
+ </set>
+ <set>
+ <parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$defaultDomain"/>
+ <parameter name="replacement" value="`$cto-api.default-domain`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$defaultProject"/>
+ <parameter name="replacement" value="`$cto-api.default-project`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$sdncNetworkPolicy"/>
+ <parameter name="replacement" value="`$tmp.ar-name`"/>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.fq-name' value="`$tmp.fq-name` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <switch test='`$cto-api.isTest`'>
+ <outcome value=''>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>
+ <parameter name='field3' value='network-policy' />
+ <parameter name='field4' value='create' />
+ <parameter name='field5' value='contrailResp' />
+ <parameter name='field6' value='`$cto-api.default-domain`' />
+ <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+ <parameter name='field8' value='`$cto-api.default-project`' />
+ <parameter name='field9' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />
+ <parameter name='field10' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />
+ <parameter name='field11' value='&lt;&gt;' />
+ <parameter name='field12' value='`$cto-api.cloud-region-id`' />
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='create' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='policy-name' value='`$tmp.fq-name`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <!-- <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' /> -->
+ <parameter name='dst-virtual-network' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />
+ <parameter name='src-virtual-network' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />
+ <parameter name='direction' value='&lt;&gt;' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="contrail-created" value="true" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>
+ <parameter name='field3' value='network-policy' />
+ <parameter name='field4' value='TESTcreate' />
+ <parameter name='field5' value='contrailResp' />
+ <parameter name='field6' value='`$cto-api.default-domain`' />
+ <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+ <parameter name='field8' value='`$cto-api.default-project`' />
+ <parameter name='field10' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />
+ <parameter name='field11' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />
+ <parameter name='field12' value='&lt;&gt;' />
+ <parameter name='field13' value='`$cto-api.cloud-region-id`' />
+ </record>
+ <set>
+ <parameter name='ar-assignments.contrail-id' value="dummy12345" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>
+ <parameter name='field3' value='network-policy' />
+ <parameter name='field4' value='create' />
+ <parameter name='field5' value='contrailResp' />
+ <parameter name='field6' value='`$cto-api.default-domain`' />
+ <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+ <parameter name='field8' value='`$cto-api.default-project`' />
+ <parameter name='field9' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />
+ <parameter name='field10' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />
+ <parameter name='field11' value='&lt;&gt;' />
+ <parameter name='field12' value='`$cto-api.cloud-region-id`' />
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='create' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='policy-name' value='`$tmp.fq-name`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <!-- <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' /> -->
+ <parameter name='dst-virtual-network' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />
+ <parameter name='src-virtual-network' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />
+ <parameter name='direction' value='&lt;&gt;' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="contrail-created" value="true" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.'
+value="`$ar-assignments.`" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <!-- Create network-policy object -->
+ <parameter name="network-policy-id" value="`$ar-assignments.contrail-id`" />
+ <parameter name="network-policy-fqdn" value="`$ar-assignments.fq-name`" />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="np-aai-created" value="" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Failed to save network-policy in AAI"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Failed to save network-policy in AAI"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $cto-api.service-type AND
+ service-instance.service-instance-id = $cto-api.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="id" value="`$tmp.ar.allotted-resource-id`" />
+ <parameter name="description" value="`$tmp.ar.allotted-resource-type`" />
+ <parameter name="selflink" value="`$tmp.ar.self-link`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <parameter name="order-status" value="Created" />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="ar-aai-created" value="" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Failed to save allotted resource in AAI"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Failed to save allotted resource in AAI"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.cidx' value="`0`" />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$cidx`' />
+ <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+ <parameter name='tmp.found-cidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-cidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$tmp.ar.allotted-resource-type` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error updating md-sal for contrail-route-allotted-resource"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error updating md-sal for contrail-route-allotted-resource"/>
+ </set>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="ar-created" value="true" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="ROLLING BACK the create due to error"/>
+ </record>
+ <switch test='`$np-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'></outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-aai-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-created`'>
+ <outcome value=''></outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'></outcome>
+ <outcome value='not-found'></outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='cto-api.contrail-route-allotted-instance-id' value='`$tmp.ar.allotted-resource-id`' />
+ </set>
+ <set>
+ <parameter name='ctotmp.' value='' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml
new file mode 100644
index 0000000..c49f2eb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml
@@ -0,0 +1,618 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='api-contrail-route-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Active'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar-assignments.source-network.network-id"
+ local-only="false"
+ pfx="aai.src-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+ <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />
+ <parameter name='regex' value=':' />
+ </execute>
+ <switch test='`$virtual-network-fqdn-split_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='fqname-to-uuid' />
+ <parameter name='api-action' value='get' />
+ <parameter name='resp-prefix' value='uuidresp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='fqname-type' value='virtual-network' />
+ <parameter name='policy-name' value='`$src-virtual-network-fqname`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to find network uuid for Contrail to source network" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='src-uuid' value='`$uuidresp.uuid`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to remove policy in Contrail from source network" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test='`$ar-assignments.dest-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Dest network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar-assignments.dest-network.network-id"
+ local-only="false"
+ pfx="aai.dest-network">
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+ <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />
+ <parameter name='regex' value=':' />
+ </execute>
+ <switch test='`$virtual-network-fqdn-split_length`'>
+ <outcome value='0'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+ <parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='fqname-to-uuid' />
+ <parameter name='api-action' value='get' />
+ <parameter name='resp-prefix' value='uuidresp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$dest-default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='fqname-type' value='virtual-network' />
+ <parameter name='policy-name' value='`$dest-virtual-network-fqname`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to find network uuid for Contrail to destination network" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='dest-uuid' value='`$uuidresp.uuid`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to remove policy in Contrail from dest network" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy:relationship-list"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' " >
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </delete>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+ <parameter name="orchestration-status" value="deactivated" />
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml
new file mode 100644
index 0000000..d1ef588
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml
@@ -0,0 +1,332 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='api-contrail-route-topology-operation-delete' mode='sync'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-delete"/>
+ <parameter name='field3' value='cto-api.parent-service-instance-id' />
+ <parameter name='field4' value='`$cto-api.parent-service-instance-id`' />
+ <parameter name='field5' value='cto-api.default-domain' />
+ <parameter name='field6' value='`$cto-api.default-domain`' />
+ <parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />
+ <parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />
+ <parameter name='field9' value='cto-api.service-type' />
+ <parameter name='field10' value='`$cto-api.service-type`' />
+ <parameter name='field11' value='cto-api.source-network-role' />
+ <parameter name='field12' value='`$cto-api.source-network-fole`' />
+ <parameter name='field13' value='cto-api.collector-network-role' />
+ <parameter name='field14' value='`$cto-api.collector-network-4ole`' />
+ <parameter name='field15' value='cto-api.default-project' />
+ <parameter name='field16' value='`$cto-api.default-project`' />
+ <parameter name='field17' value='cto-api.cloud-region-id' />
+ <parameter name='field18' value='`$cto-api.cloud-region-id`' />
+ <parameter name='field19' value='cto-api.cloud-owner' />
+ <parameter name='field20' value='`$cto-api.cloud-owner`' />
+ <parameter name='field21' value='cto-api.isTest' />
+ <parameter name='field22' value='`$cto-api.isTest`' />
+ <parameter name='field23' value='service-data.service-information.global-customer-id' />
+ <parameter name='field24' value='`$service-data.service-information.global-customer-id`' />
+ </record>
+ <set>
+ <parameter name="ctotmp." value="" />
+ </set>
+ <set>
+ <parameter name="ctotmp.action" value="delete" />
+ <parameter name="ctotmp.config-count" value="0" />
+ <parameter name="ctotmp.config-found" value="true" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id"
+ pfx='aai.ar' local-only='false' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <switch test='`$cto-api.rollback-flag`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <for silentFailure='true' index='ridx' start='0' end="`$aai.ar.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.ar.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='configuration.configuration-id'>
+ <block atomic="true">
+ <set>
+ <parameter name='ctotmp.config-count' value='`$ctotmp.config-count+1`' />
+ </set>
+ <switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $cto-api.configuration-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='ctotmp.config-found' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <switch test="`$ctotmp.config-count > 1`">
+ <outcome value='true'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI Allotted Resource is tied to more than one configuration object" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ctotmp.config-count == 1 and $ctotmp.config-found == 'true'`">
+ <outcome value='false'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI Allotted resource is not tied to configuration object" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true"></block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$cto-api.contrail-route-allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found in md-sal" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found in md-sal" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+ <parameter name='default-project' value='`$cto-api.default-project`' />
+ <parameter name='default-domain' value='`$cto-api.default-domain`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to delete policy in Contrail" />
+ </return>
+ </outcome>
+ </execute>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to delete network policy in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to delete network policy in AAI" />
+ </return>
+ </outcome>
+ </delete>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </delete>
+ <for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <block atomic="true">
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $cto-api.contrail-route-allotted-resource-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.sdidx" value="`$snidx`"/>
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.consumed-allotted-resources." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="0"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+ </set>
+ <for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx]." value="$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length]." value=""/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_assign-vlan-tags.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_assign-vlan-tags.xml
new file mode 100644
index 0000000..f23891c
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_assign-vlan-tags.xml
@@ -0,0 +1,441 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='assign-vlan-tags' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vlan-vnics.' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.vlan-vnics.'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.`' />
+ </set>
+ <set>
+ <parameter name='total-subs' value='`$get-data-from-policy-output.precreate-sub-intf-num`' />
+ </set>
+ <switch test='`$total-subs &gt; ( $tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf )`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='total-subs' value='`$tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='cur-tag-id' value='`$get-data-from-policy-output.vlan-tag-start + $get-data-from-policy-output.vlan-tag-offset`' />
+ </set>
+ <set>
+ <parameter name='sub-index' value='0' />
+ <parameter name='vnic-index' value='0' />
+ </set>
+ <while test='`$total-subs &gt; 0`'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id'
+ value='`$cur-tag-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length'
+ value='`$sub-index + 1`' />
+ </set>
+ <set>
+ <parameter name='cur-tag-id' value='`$cur-tag-id + 1`' />
+ </set>
+ <set>
+ <parameter name='vnic-index' value='`$vnic-index + 1`' />
+ </set>
+ <switch test='`$vnic-index == $tmp.vlan-vnics.vlan-vnic_length`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnic-index' value='0' />
+ </set>
+ <set>
+ <parameter name='sub-index' value='`$sub-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='total-subs' value='`$total-subs - 1`' />
+ </set>
+ </block>
+ </while>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-groups"
+ key="instance-group.instance-group-function = $db.group-uuids[$group-index].network-collection-function
+ AND instance-group.instance-group-type = 'L3-NETWORK'"
+ pfx='aai.instance-group' local-only='false' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].network-collection-function
+ + ' and instance-group-type L3-NETWORK'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'System error getting AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].network-collection-function
+ + ' and instance-group-type L3-NETWORK'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='found-instance-group' value='false' />
+ </set>
+ <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >
+ <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >
+ <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >
+ <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key
+ == 'service-instance.service-instance-id'`">
+ <outcome value='true'>
+ <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value
+ == $service-data.service-information.service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-instance-group' value='true' />
+ </set>
+ <set>
+ <parameter name='aai-ig-index' value='`$ig-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <switch test='`$found-instance-group`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].vfc-instance-group-function
+ + ' and instance-group-type VNFC'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='network-instance-group-id' value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id'
+ value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />
+ </set>
+ <set>
+ <parameter name='network-instance-group-index' value='-1' />
+ </set>
+ <for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$network-instance-group-id
+== $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='network-instance-group-index' value='`$nig-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$network-instance-group-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find network instance group ID '
+ + $network-instance-group-id
+ + ' in network-instance-groups'`" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >
+ <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='network-index' value='-1' />
+ <parameter name='unassigned-network-index' value='-1' />
+ </set>
+ <for index='n-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network_length`' >
+ <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id
+ == $service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].vlan-tag-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='network-index' value='`$n-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <switch test="`$unassigned-network-index`">
+ <outcome value='-1'>
+ <switch test='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].network-status`'>
+ <outcome value='unassigned'>
+ <set>
+ <parameter name='unassigned-network-index' value='`$n-index`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$network-index`'>
+ <outcome value='-1'>
+ <switch test='`$unassigned-network-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="L3-network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'
+ value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].vlan-tag-id'
+ value='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id`' />
+ <parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-status'
+ value='assigned' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'
+ value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$network-index].network-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >
+ <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <block atomic="true">
+ <for index='n-index' start='0' end='`$service-data.networks.network_length`' >
+ <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id
+ == $service-data.networks.network[$n-index].network-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name'
+ value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-name`' />
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-role'
+ value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-role`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </for>
+ <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to find a network name for network id '
+ + $service-data.networks.network[$n-index].network-id`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-collection' value='false' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$idx].network-instance-group-function
+ == $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-collection' value='true' />
+ </set>
+ <set>
+ <parameter name='vnc-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-collection`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find vnf-network-collection for network-instance-group-function '
+ + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-network-instance-group' value='false' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id
+ == $service-data.network-instance-groups.network-instance-group[$idx].network-instance-group-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-network-instance-group' value='true' />
+ </set>
+ <set>
+ <parameter name='nig-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-network-instance-group`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find network-instance-group for network-instance-group-id '
+ + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`" />
+ </return>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='subnet-index' start='0'
+ end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >
+ <switch test='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`'>
+ <outcome value='ipv4'>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='tmp.vt-ip.network-instance-group-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />
+ <parameter name='tmp.vt-ip.network-instance-group-function'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />
+ <parameter name='tmp.vt-ip.nf-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />
+ <parameter name='tmp.vt-ip.vm-type'
+ value='`$db.group-uuids[$group-index].vm-type`' />
+ <parameter name='tmp.vt-ip.vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />
+ <parameter name='tmp.vt-ip.type'
+ value='VIP' />
+ <parameter name='tmp.vt-ip.vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='tmp.vt-ip.ip-version'
+ value='ipv4' />
+ <parameter name='tmp.vt-ip.network-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans_length' value='2' />
+ <parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />
+ <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].client-key'
+ value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value="`'34.52.87.1' + $counter`" />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >
+ <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v4'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='tmp.vt-ip.network-instance-group-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />
+ <parameter name='tmp.vt-ip.network-instance-group-function'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />
+ <parameter name='tmp.vt-ip.nf-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />
+ <parameter name='tmp.vt-ip.vm-type'
+ value='`$db.group-uuids[$group-index].vm-type`' />
+ <parameter name='tmp.vt-ip.vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />
+ <parameter name='tmp.vt-ip.type'
+ value='VIP' />
+ <parameter name='tmp.vt-ip.vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='tmp.vt-ip.ip-version'
+ value='ipv6' />
+ <parameter name='tmp.vt-ip.network-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans_length' value='2' />
+ <parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />
+ <parameter name='eipam-ip-block.plans[0].requests_length' value='6' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].client-key'
+ value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value="`'cafe:1111' + $counter`" />
+ <parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='6' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >
+ <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <set>
+ <parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v6'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.'
+ value='`$tmp.vlan-vnics.`' />
+ </set>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_auto-ip-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_auto-ip-assignment.xml
new file mode 100644
index 0000000..77fdb44
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_auto-ip-assignment.xml
@@ -0,0 +1,1593 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='auto-ip-assignment' mode='sync'>
+ <block atomic="true">
+ <switch test='`$auto-ip-assignment-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="auto-ip-assignment-input.aic-cloud-region is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$auto-ip-assignment-input.vf-module.model-customization-uuid`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="auto-ip-assignment-input.vf-module.model-customization-uuid is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$auto-ip-assignment-input.vf-module-id`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="auto-ip-assignment-input.vf-module-id is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$auto-ip-assignment-input.service-instance-id`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="auto-ip-assignment-input.service-instance-id is null" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid'
+ pfx='db1.vf-module-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vnf-topology-operation-input.vnf-request-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid
+ AND vm_count > 0'
+ pfx='db1.vf-module-to-vfc-mapping[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db1.vf-module-to-vfc-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $auto-ip-assignment-input.aic-cloud-region AND
+ depth = '0'"
+ pfx='aai.cloud-region' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving cloud region from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated.clli8' />
+ <parameter name='string' value='`$tmp.aic-clli`' />
+ <parameter name='begin-index' value='0' />
+ <parameter name='end-index' value='8' />
+ </execute>
+ <set>
+ <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />
+ </set>
+ </block>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Complex not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving complex from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-input.aic-cloud-region'
+ value='`$auto-ip-assignment-input.aic-cloud-region`' />
+ </set>
+ </block>
+ <set>
+ <parameter name='tmp.network-role-query-results_length' value='0' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans_length' value = '0' />
+ <parameter name='query-aai-l3-network-by-network-role-output.' value = '' />
+ </set>
+ <set>
+ <parameter name='qridx' value = '0' />
+ </set>
+ <set>
+ <parameter name='pidx' value = '0' />
+ </set>
+ <for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='vm-type-loop' value = 'START' />
+ <parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ </set>
+ <set>
+ <parameter name='tmp.db1.' value = '' />
+ </set>
+ <set>
+ <parameter name='db1.vfc-to-network-role-mapping.' value = '' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid
+ AND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'
+ pfx='db1.vfc-to-network-role-mapping[]'>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db1.vfc-to-network-role-mapping_length' value='0' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />
+ </set>
+ <for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='network-role-loop' value = 'START' />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='false' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role.found' value = 'false' />
+ </set>
+ <set>
+ <parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.db1.network-role-tag' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />
+ </set>
+ <block atomic='true'>
+ <block>
+ <for index='q' start='0' end='`$tmp.network-role-query-results_length`' >
+ <set>
+ <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />
+ </set>
+ <switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.network-name'
+ value='`$tmp.network-role-query-results[$q].l3-network.network-name`' />
+ <parameter name='generate-FQPN-input.network-id'
+ value='`$tmp.network-role-query-results[$q].l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role.found' value = 'true' />
+ </set>
+ <set>
+ <parameter name='query-results-found-index' value = '`$q`' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'></return>
+ </block>
+ <switch test='`$tmp.network-role.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region'
+ value='`$auto-ip-assignment-input.aic-cloud-region`' />
+ <parameter name='query-aai-l3-network-by-network-role-input.service-instance-id'
+ value='`$auto-ip-assignment-input.service-instance-id`' />
+ <parameter name='query-aai-l3-network-by-network-role-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <!--
+filter options: service-instance-id, aic-cloud-region, null, Other (or any string)
+ - null or Other will filter by aic-cloud-region first, then service-instance-id
+<parameter name='query-aai-l3-network-by-network-role-input.filter'
+ value='service-instance-id' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='query-aai-l3-network-by-network-role' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while querying AAI to retrieve l3-network by network-role: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='generate-FQPN-input.network-name'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />
+ <parameter name='generate-FQPN-input.network-id'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role-query-results[$qridx].l3-network.'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.`' />
+ <parameter name='tmp.network-role-query-results[$qridx].l3-network.network-role-tag'
+ value='`$tmp.db1.network-role-tag`' />
+ <!--
+<parameter name='tmp.network-role-query-results[$qridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' /><parameter name='tmp.network-role-query-results[$qridx].network-name'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />
+-->
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].l3-network.'
+ value='query-aai-l3-network-by-network-role-output.l3-network.' />
+ </set>
+ <set>
+ <parameter name='qridx' value='`$qridx + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role-query-results_length' value='`$qridx`' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='ridx' value='0' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].subnet-role'
+ value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />
+ </set>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>
+ <outcome value='4'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>
+ <outcome value='6'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.plan-index-to-be-incremented`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='pidx' value='`$pidx + 1`' />
+ </set>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].l3-network.'
+ value='tmp.network-role-query-results[$query-results-found-index].l3-network.' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='ridx' value='0' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].subnet-role'
+ value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />
+ </set>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>
+ <outcome value='4'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>
+ <outcome value='6'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.plan-index-to-be-incremented`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='pidx' value='`$pidx + 1`' />
+ </set>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='vm-type-floating-loop' value = 'START' />
+ <parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ </set>
+ <set>
+ <parameter name='db1.vfc-to-network-role-mapping.' value = '' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid
+ AND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'
+ pfx='db1.vfc-to-network-role-mapping[]'>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db1.vfc-to-network-role-mapping_length' value='0' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.db1.network-role' value = '' />
+ </set>
+ <for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='network-role-loop' value = 'START' />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='false' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role.found' value = 'false' />
+ </set>
+ <set>
+ <parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ </set>
+ <block atomic="true">
+ <block>
+ <for index='q' start='0' end='`$tmp.network-role-query-results_length`' >
+ <set>
+ <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />
+ </set>
+ <switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.network-name'
+ value='`$tmp.network-role-query-results[$q].l3-network.network-name`' />
+ <parameter name='generate-FQPN-input.network-id'
+ value='`$tmp.network-role-query-results[$q].l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role.found' value = 'true' />
+ </set>
+ <set>
+ <parameter name='query-results-found-index' value = '`$q`' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'></return>
+ </block>
+ <switch test='`$tmp.network-role.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region'
+ value='`$auto-ip-assignment-input.aic-cloud-region`' />
+ <parameter name='query-aai-l3-network-by-network-role-input.service-instance-id'
+ value='`$auto-ip-assignment-input.service-instance-id`' />
+ <parameter name='query-aai-l3-network-by-network-role-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <!--
+filter options: service-instance-id, aic-cloud-region, null, Other (or any string)
+ - null or Other will filter by aic-cloud-region first, then service-instance-id
+<parameter name='query-aai-l3-network-by-network-role-input.filter'
+ value='service-instance-id' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='query-aai-l3-network-by-network-role' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while querying AAI to retrieve l3-network by network-role: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='generate-FQPN-input.network-name'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />
+ <parameter name='generate-FQPN-input.network-id'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role-query-results[$qridx].l3-network.'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.`' />
+ <parameter name='tmp.network-role-query-results[$qridx].l3-network.network-role-tag'
+ value='`$tmp.db1.network-role-tag`' />
+ <!--
+<parameter name='tmp.network-role-query-results[$qridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' /><parameter name='tmp.network-role-query-results[$qridx].network-name'
+ value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />
+-->
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].l3-network.'
+ value='query-aai-l3-network-by-network-role-output.l3-network.' />
+ </set>
+ <set>
+ <parameter name='qridx' value='`$qridx + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role-query-results_length' value='`$qridx`' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='ridx' value='0' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].subnet-role'
+ value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />
+ </set>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>
+ <outcome value='4'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>
+ <outcome value='6'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='0' />
+ </set>
+ <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />
+ </set>
+ <set>
+ <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='FIXED' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <block>
+ <switch test='`$tmp.client-key.seq &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='000' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='00' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='0' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.client-key.seq &lt; 10000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.client-key.padding' value='' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $tmp.client-key.padding + $tmp.client-key.seq`"/>
+ <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.plan-index-to-be-incremented`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='pidx' value='`$pidx + 1`' />
+ </set>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].l3-network.'
+ value='tmp.network-role-query-results[$query-results-found-index].l3-network.' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='ridx' value='0' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].subnet-role'
+ value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />
+ </set>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>
+ <outcome value='4'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-floating-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />
+ </set>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='VIP' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].group-number'
+ value='1' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].group-number + '|0001'`" />
+ <!-- rdn|data|static|FIXED|4|1|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>
+ <outcome value='6'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>
+ <outcome value='N'>
+ <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-floating-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='generate-FQPN-input.vrf-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />
+ <parameter name='generate-FQPN-input.subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='generate-FQPN-input.network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <!--
+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />
+-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='tmp.plan-index-to-be-incremented' value='true' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].plan-name'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].address-family'
+ value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'
+ value='generate-FQPN-output.' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'
+ value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'
+ value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'
+ value='VIP' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].group-number'
+ value='1' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'
+ value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'
+ value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +
+ $eipam-ip-block.plans[$pidx].requests[$ridx].group-number + '|0001'`" />
+ <!-- rdn|data|static|FIXED|4|1|0001 -->
+ <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'
+ value='`$auto-ip-assignment-input.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='ridx' value='`$ridx + 1`' />
+ </set>
+ <set>
+ <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />
+ </set>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.plan-index-to-be-incremented`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='pidx' value='`$pidx + 1`' />
+ </set>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </for>
+ </block>
+ </for>
+ <block atomic='true'>
+ <switch test='`$eipam-ip-block.plans_length &gt; 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$auto-ip-assignment-input.service-type`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.service-information.service-type' value='NA' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..9417333
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml
@@ -0,0 +1,266 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />
+ <parameter name='prop.bbs.HsiPackage' value='50M' />
+ <parameter name='prop.bbs.HsiType' value='IPoE' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$network-input-parameters.param_length`' >
+ <block>
+ <switch test="`$network-input-parameters.param[$idx].name == 'remote_id'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ONTSN'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.ONTSN' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'CVLAN'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.CVLAN' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'SVLAN'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.SVLAN' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <switch test='`$token-result.accessSession`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call queryTokenID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-access-connectivity-create.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/ActiveOnt'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call createAccessConnectivityService" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error createAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='prop.bbs.serviceID' value="`$service-result.accessE2Eservice.serviceID`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.random-data"/>
+ <outcome value='success'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+ <parameter name="original_string" value="`$prop.random-data`"/>
+ <parameter name="regex" value="-"/>
+ <outcome value='success'></outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+ <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+ <parameter name= "vnf-id" value = "`$vnf-id`"/>
+ <parameter name= "vnf-name" value = "`$vnf-name`"/>
+ <parameter name= "vnf-type" value = "AccessConnectivity"/>
+ <parameter name= "service-id" value = "`$network-topology-operation-input.service-information.service-id`"/>
+ <parameter name= "prov-status" value = "ACTIVE"/>
+ <parameter name= "orchestration-status" value = "Active"/>
+ <parameter name= "is-closed-loop-disabled" value = "false" />
+ <parameter name= "model-invariant-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`"/>
+ <parameter name= "model-version-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-uuid`"/>
+ <parameter name= "model-customization-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generic-vnf instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data"
+ >
+ <parameter name="metadata.metadatum[0].metaname" value="remote-id" />
+ <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.remote_id`" />
+ <parameter name="metadata.metadatum[1].metaname" value="controller-service-id" />
+ <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.serviceID`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ </block>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..75d15b5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml
@@ -0,0 +1,171 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />
+ <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call queryTokenID" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$token-result.accessSession`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <for index='idx' start='0' end='`$network-input-parameters.param_length`' >
+ <switch test="`$network-input-parameters.param[$idx].name == 'serviceID'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.serviceID' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="$network-input-parameters.param[$idx].name +' value is null, please check it.'" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/DeactivateOnt?serviceID='+$prop.bbs.serviceID`" />
+ <parameter name="httpMethod" value="get"/>
+ <parameter name="contentType" value="application/x-www-form-urlencoded"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call deleteAccessConnectivityService" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error deleteAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id"
+ pfx='aai.service-instance' local-only='false' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='ridx' start='0' end="`$aai.service-instance.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <block atomic='true'>
+ <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='generic-vnf.vnf-id'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.generic-vnf' local-only='false' >
+ <outcome value='success'>
+ <block atomic='true'>
+ <switch test='`$aai.generic-vnf.vnf-type`'>
+ <outcome value='AccessConnectivity'>
+ <set>
+ <parameter name='prop.bbs.accessConnectivityVNFId' value='`$aai.generic-vnf.vnf-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </get-resource>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $prop.bbs.accessConnectivityVNFId">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ </delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-create-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..2ba5835
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-create-huawei.xml
@@ -0,0 +1,288 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-access-connectivity-vnf-topology-operation-create-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-vnf-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='vnf-input-parameters.' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.`' />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />
+ <parameter name='prop.bbs.HsiPackage' value='50M' />
+ <parameter name='prop.bbs.HsiType' value='IPoE' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$vnf-input-parameters.param_length`' >
+ <block>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'remote_id'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.remote_id' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'ONTSN'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.ONTSN' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'CVLAN'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.CVLAN' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'SVLAN'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.SVLAN' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <!--<parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>-->
+ <outcome value='success'>
+ <switch test='`$token-result.accessSession`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call queryTokenID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-access-connectivity-create.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/ActiveOnt'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <!--<parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/ActiveOnt'`" />-->
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call createAccessConnectivityService" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error createAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='prop.bbs.serviceID' value="`$service-result.accessE2Eservice.serviceID`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.random-data"/>
+ <outcome value='success'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+ <parameter name="original_string" value="`$prop.random-data`"/>
+ <parameter name="regex" value="-"/>
+ <outcome value='success'></outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+ <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+ <!--<set>-->
+ <!--<parameter name='vnf-id' value="123456789"/>-->
+ <!--<parameter name='vnf-name' value="vnf_name"/>-->
+ </set>
+ <record plugin='org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder'>
+ <parameter name='logger' value='message-log'/>
+ <parameter name='field1' value='`$vnf-id`'/>
+ <parameter name='field2' value='`$vnf-name`'/>
+ <!--<record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">-->
+ <!-- <parameter name="file" value="/root/logx.txt" />-->
+ <!-- <parameter name="field1" value="deleteAccessConnectivityService success!" />-->
+ <!-- <parameter name="field2" value='`$topology.networks.network[0].network-types`' />-->
+ </record>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+ <parameter name= "vnf-id" value = "`$vnf-id`"/>
+ <parameter name= "vnf-name" value = "`$vnf-name`"/>
+ <parameter name= "vnf-type" value = "AccessConnectivity"/>
+ <parameter name= "service-id" value = "`$vnf-topology-operation-input.service-information.service-id`"/>
+ <parameter name= "prov-status" value = "ACTIVE"/>
+ <parameter name= "orchestration-status" value = "Active"/>
+ <parameter name= "is-closed-loop-disabled" value = "false" />
+ <parameter name= "model-invariant-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`"/>
+ <parameter name= "model-version-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`"/>
+ <parameter name= "model-customization-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generic-vnf instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data"
+ >
+ <parameter name="metadata.metadatum[0].metaname" value="remote-id" />
+ <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.remote_id`" />
+ <parameter name="metadata.metadatum[1].metaname" value="controller-service-id" />
+ <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.serviceID`" />
+ <parameter name="metadata.metadatum[2].metaname" value="cvlan" />
+ <parameter name="metadata.metadatum[2].metaval" value="`$prop.bbs.CVLAN`" />
+ <parameter name="metadata.metadatum[3].metaname" value="svlan" />
+ <parameter name="metadata.metadatum[3].metaval" value="`$prop.bbs.SVLAN`" />
+ <parameter name="metadata.metadatum[4].metaname" value="expected-ont-id" />
+ <parameter name="metadata.metadatum[4].metaval" value="`$prop.bbs.ONTSN`" />
+ <!--<parameter name="metadata.metadatum[5].metaname" value="rgw-mac-address" />-->
+ <!--<parameter name="metadata.metadatum[5].metaval" value="`$prop.bbs.mac`" />-->
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list"
+ key="service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ </block>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-delete-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..3b98365
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-access-connectivity-vnf-topology-operation-delete-huawei.xml
@@ -0,0 +1,225 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-access-connectivity-vnf-topology-operation-delete-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-vnf-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />
+ <parameter name='vnf-input-parameters.' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call queryTokenID" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$token-result.accessSession`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <for index='idx' start='0' end='`$vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'serviceID'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.serviceID' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="$vnf-input-parameters.param[$idx].name +' value is null, please check it.'" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/DeactivateOnt?serviceID='+$prop.bbs.serviceID`" />
+ <parameter name="httpMethod" value="get"/>
+ <parameter name="contentType" value="application/x-www-form-urlencoded"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call deleteAccessConnectivityService" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error deleteAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id"
+ pfx='aai.service-instance' local-only='false' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='ridx' start='0' end="`$aai.service-instance.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <block atomic='true'>
+ <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='generic-vnf.vnf-id'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.generic-vnf' local-only='false' >
+ <outcome value='success'>
+ <block atomic='true'>
+ <switch test='`$aai.generic-vnf.vnf-type`'>
+ <outcome value='AccessConnectivity'>
+ <set>
+ <parameter name='prop.bbs.accessConnectivityVNFId' value='`$aai.generic-vnf.vnf-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <for silentFailure='true' index='rix' start='0' end="`$aai.service-instance.metadata.metadatum_length`" >
+ <switch test='`$aai.service-instance.metadata.metadatum[$rix].metaname`'>
+ <outcome value='remote-id'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='controller-service-id'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='cvlan'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='svlan'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='expected-ont-id'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </get-resource>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $prop.bbs.accessConnectivityVNFId">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ </delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml
new file mode 100644
index 0000000..37bb23d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml
@@ -0,0 +1,42 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ChangeInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call ChangeInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error ChangeInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml
new file mode 100644
index 0000000..d41dfd5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml
@@ -0,0 +1,166 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='http://172.30.0.121:5000' />
+ <parameter name='prop.bbs.service_id' value='`$network-topology-operation-input.service-information.service-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$network-input-parameters.param_length`' >
+ <block>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ip_remote_id'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ont_sn'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.ont_sn' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ip_service_type'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.service_type' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ip_rg_mac_addr'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.mac' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ip_upstream_speed'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.up_speed' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'ip_downstream_speed'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.down_speed' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 's_vlan'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.s_vlan' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-input-parameters.param[$idx].name == 'c_vlan'`">
+ <outcome value='true'>
+ <switch test='`$network-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.c_vlan' value='`$network-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..2d88b3f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml
@@ -0,0 +1,146 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/CreateInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call CreateInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error CreateInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.random-data"/>
+ <outcome value='success'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+ <parameter name="original_string" value="`$prop.random-data`"/>
+ <parameter name="regex" value="-"/>
+ <outcome value='success'></outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+ <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+ <parameter name= "vnf-id" value = "`$vnf-id`"/>
+ <parameter name= "vnf-name" value = "`$vnf-name`"/>
+ <parameter name= "vnf-type" value = "InternetProfile"/>
+ <parameter name= "service-id" value = "`$network-topology-operation-input.service-information.service-id`"/>
+ <parameter name= "prov-status" value = "ACTIVE"/>
+ <parameter name= "orchestration-status" value = "Active"/>
+ <parameter name= "is-closed-loop-disabled" value = "false" />
+ <parameter name= "model-invariant-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`"/>
+ <parameter name= "model-version-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-uuid`"/>
+ <parameter name= "model-customization-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generic-vnf instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="metadata.metadatum[0].metaname" value="service-type" />
+ <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.service_type`" />
+ <parameter name="metadata.metadatum[1].metaname" value="up-speed" />
+ <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.up_speed`" />
+ <parameter name="metadata.metadatum[2].metaname" value="down-speed" />
+ <parameter name="metadata.metadatum[2].metaval" value="`$prop.bbs.down_speed`" />
+ <parameter name="metadata.metadatum[3].metaname" value="cvlan" />
+ <parameter name="metadata.metadatum[3].metaval" value="`$prop.bbs.c_vlan`" />
+ <parameter name="metadata.metadatum[4].metaname" value="svlan" />
+ <parameter name="metadata.metadatum[4].metaval" value="`$prop.bbs.s_vlan`" />
+ <parameter name="metadata.metadatum[5].metaname" value="expected-ont-id" />
+ <parameter name="metadata.metadatum[5].metaval" value="`$prop.bbs.ont_sn`" />
+ <parameter name="metadata.metadatum[6].metaname" value="rgw-mac-address" />
+ <parameter name="metadata.metadatum[6].metaval" value="`$prop.bbs.mac`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ </block>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..ea6dde9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml
@@ -0,0 +1,84 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/DeleteInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call DeleteInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.errors.error[0].error-message`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error DeleteInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <block atomic='true'>
+ <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='generic-vnf.vnf-id'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.generic-vnf' local-only='false' >
+ <outcome value='success'>
+ <block atomic='true'>
+ <switch test='`$aai.generic-vnf.vnf-type`'>
+ <outcome value='InternetProfile'>
+ <set>
+ <parameter name='prop.bbs.internetProfileVNFId' value='`$aai.generic-vnf.vnf-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $prop.bbs.internetProfileVNFId">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ </delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-change-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-change-huawei.xml
new file mode 100644
index 0000000..4aa36b9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-change-huawei.xml
@@ -0,0 +1,44 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-vnf-topology-operation-change-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-common-huawei' mode='sync' ></call>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ChangeInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call ChangeInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.status`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error ChangeInternetProfileInstance return: '+$service-result.status`" />
+ </return>
+ </outcome>
+ <outcome value='ok'>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-delete-huawei' mode='sync'></call>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-create-huawei' mode='sync'></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-common-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-common-huawei.xml
new file mode 100644
index 0000000..4f67b46
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-common-huawei.xml
@@ -0,0 +1,76 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-vnf-topology-operation-common-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-vnf-input-parameters' mode='sync' ></call>
+ <set>
+ <parameter name='vnf-input-parameters.' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.`' />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='http://172.30.0.121:5000' />
+ <parameter name='prop.bbs.service_id' value='`$vnf-topology-operation-input.service-information.service-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$vnf-input-parameters.param_length`' >
+ <block>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'ip_service_type'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.service_type' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'ip_upstream_speed'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.up_speed' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$vnf-input-parameters.param[$idx].name == 'ip_downstream_speed'`">
+ <outcome value='true'>
+ <switch test='`$vnf-input-parameters.param[$idx].value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-input-parameters.param[$idx].name +' value is null, please check it.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.bbs.down_speed' value='`$vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-create-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..fb07393
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-create-huawei.xml
@@ -0,0 +1,150 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-vnf-topology-operation-create-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-common-huawei' mode='sync' ></call>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/CreateInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <!--<parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/CreateInternetProfileInstance'`" />-->
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call CreateInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.status`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error CreateInternetProfileInstance return: '+$service-result.status`" />
+ </return>
+ </outcome>
+ <outcome value='ok'>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.random-data"/>
+ <outcome value='success'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+ <parameter name="original_string" value="`$prop.random-data`"/>
+ <parameter name="regex" value="-"/>
+ <outcome value='success'></outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+ <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+ <!--<set>-->
+ <!--<parameter name='vnf-id' value="123456789"/>-->
+ <!--<parameter name='vnf-name' value="vnf_name"/>-->
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+ <parameter name= "vnf-id" value = "`$vnf-id`"/>
+ <parameter name= "vnf-name" value = "`$vnf-name`"/>
+ <parameter name= "vnf-type" value = "InternetProfile"/>
+ <parameter name= "service-id" value = "`$vnf-topology-operation-input.service-information.service-id`"/>
+ <parameter name= "prov-status" value = "ACTIVE"/>
+ <parameter name= "orchestration-status" value = "Active"/>
+ <parameter name= "is-closed-loop-disabled" value = "false" />
+ <parameter name= "model-invariant-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`"/>
+ <parameter name= "model-version-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`"/>
+ <parameter name= "model-customization-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generic-vnf instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="metadata.metadatum[0].metaname" value="service-type" />
+ <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.service_type`" />
+ <parameter name="metadata.metadatum[1].metaname" value="up-speed" />
+ <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.up_speed`" />
+ <parameter name="metadata.metadatum[2].metaname" value="down-speed" />
+ <parameter name="metadata.metadatum[2].metaval" value="`$prop.bbs.down_speed`" />
+ <!--<parameter name="metadata.metadatum[3].metaname" value="cvlan" />-->
+ <!--<parameter name="metadata.metadatum[3].metaval" value="`$prop.bbs.c_vlan`" />-->
+ <!--<parameter name="metadata.metadatum[4].metaname" value="svlan" />-->
+ <!--<parameter name="metadata.metadatum[4].metaval" value="`$prop.bbs.s_vlan`" />-->
+ <!--<parameter name="metadata.metadatum[5].metaname" value="expected-ont-id" />-->
+ <!--<parameter name="metadata.metadatum[5].metaval" value="`$prop.bbs.ont_sn`" />-->
+ <!--<parameter name="metadata.metadatum[6].metaname" value="rgw-mac-address" />-->
+ <!--<parameter name="metadata.metadatum[6].metaval" value="`$prop.bbs.mac`" />-->
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list"
+ key="service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-id
+ AND customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id
+ AND service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type
+ AND service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="metadatum instance does not exist in AAI" />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ </block>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-delete-huawei.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..cebb55f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_bbs-internet-profile-vnf-topology-operation-delete-huawei.xml
@@ -0,0 +1,143 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='bbs-internet-profile-vnf-topology-operation-delete-huawei' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-common-huawei' mode='sync' ></call>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='delete'>
+ <block atomic='true'>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/DeleteInternetProfileInstance'`" />
+ <parameter name="contentType" value="application/json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="service-result"/>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error failed to call DeleteInternetProfileInstance" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$service-result.status`">
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error DeleteInternetProfileInstance return: '+$service-result.status`" />
+ </return>
+ </outcome>
+ <outcome value='ok'>
+ <block></block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id"
+ pfx='aai.service-instance' local-only='false' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='ridx' start='0' end="`$aai.service-instance.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <block atomic='true'>
+ <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='generic-vnf.vnf-id'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.generic-vnf' local-only='false' >
+ <outcome value='success'>
+ <block atomic='true'>
+ <switch test='`$aai.generic-vnf.vnf-type`'>
+ <outcome value='InternetProfile'>
+ <set>
+ <parameter name='prop.bbs.internetProfileVNFId' value='`$aai.generic-vnf.vnf-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <for silentFailure='true' index='rix' start='0' end="`$aai.service-instance.metadata.metadatum_length`" >
+ <switch test='`$aai.service-instance.metadata.metadatum[$rix].metaname`'>
+ <outcome value='service-type'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='up-speed'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ <outcome value='down-speed'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $vnf-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $vnf-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $vnf-topology-operation-input.service-information.service-instance-id AND
+ metadatum.metaname = $aai.service-instance.metadata.metadatum[$rix].metaname" ></delete>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </get-resource>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $prop.bbs.internetProfileVNFId">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </outcome>
+ </delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml
new file mode 100644
index 0000000..5e1fbe7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml
@@ -0,0 +1,333 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation-activate' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<!--
+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />
+-->
+
+</set><block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >
+</get-resource><for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >
+
+
+<switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.ar.parent-service-instance-id`'>
+
+
+<outcome value='true'>
+<block>
+<set>
+<parameter name='tmp.ar.brg-vnf-id'
+ value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />
+
+
+
+</set></block></outcome></switch></for></block><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/brg-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-brg-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />
+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />
+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />
+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="in-service-path" />
+<outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome></execute><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" >
+</get-resource><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />
+</set><set>
+<parameter name='tmp.ar.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />
+</set><call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' >
+</call><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`"/>
+</execute><set>
+<parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` " />
+<parameter name='tmp.tunnel-dest-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` " />
+<parameter name='tmp.tunnel-src-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip` " />
+<parameter name='tmp.tunnel-vni' value="`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up vxlan tunnel" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up vxlan tunnel" />
+</return></outcome></execute><set>
+<parameter name='tmp.bridge-domain' value="bridge-domain-10" />
+<parameter name='tmp.split-horizon-group' value="2" /></set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.bridge-domain.templatefile`" />
+ <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up bridge domain" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up bridge domain" />
+</return></outcome></execute><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />
+</set><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />
+</set><set>
+<parameter name='tmp.search.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />
+ </set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >
+<!--
+tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[1].preload-data[0].vnf-topology-information.vnf-parameters[16].vnf-parameter-value = 10.0.101.30
+--><outcome value='success'>
+<block>
+<set>
+<parameter name='tmp.brg-match-vnf-name' value="`'VGW2BRG-'+ $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address`" />
+
+</set><for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >
+
+
+
+<block>
+<switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-match-vnf-name`'>
+
+
+<outcome value='true'>
+<for index='paramidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' >
+
+
+<switch test="`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == 'vgw_private_ip_1'`" >
+
+
+<outcome value='true'>
+<set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip'
+ value="`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`" />
+
+</set></outcome></switch></for></outcome></switch></block></for></block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting GENERIC-RESOURCE-API:services" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting GENERIC-RESOURCE-API:services" />
+</return></outcome></get-resource><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`"/>
+</execute><set>
+<parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />
+<parameter name='tmp.tunnel-dest-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />
+<parameter name='tmp.tunnel-src-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip` " />
+<parameter name='tmp.tunnel-vni' value="`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf-api.service-information`"/>
+ <parameter name="outputPath" value="tmp.vnf-api-url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.brg-vnf-id`"/>
+
+ <!--
+ <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`"/>
+ -->
+ <!--
+ <parameter name="replacement" value="`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`"/>
+-->
+<!--
+brg-ar.allotted-resource-data.brg-topology.brg-assignments
+--></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-api-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="service-data" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-service-data' value='$service-data.' />
+</set><switch test='`$service-data.service-data_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='tmp.service-data.' value='$service-data.service-data[0].' />
+</set><switch test='`$tmp.service-data.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='tmp.service-data.service-information.service-instance-id' value='`$brg-topology-operation-input.service-information.service-instance-id`' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.services`"/>
+ <parameter name="outputPath" value="tmp.services-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-data.service-information.service-instance-id`"/>
+<!-- tmp.service-data.service-information.service-instance-id
+brg-topology-operation-input.allotted-resource-information.parent-service-instance-id
+brg-topology-operation-input.service-information.service-instance-id
+
+--></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.services.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.services-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tmp.service-data.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+ <!--
+brg-topology-operation-input.allotted-resource-information.parent-service-instance-id
+
+ brg-topology-operation-input.service-information.service-instance-id
+ -->
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml
new file mode 100644
index 0000000..21f0efb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml
@@ -0,0 +1,227 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation-assign' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/tunnelxconn-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='brg-allotted-resources/brg-allotted-resource/$brg-topology-operation-input.allotted-resource-information.allotted-resource-id/' pfx='mdsal-ar' >
+<outcome value='Other'>
+<block atomic="true">
+<set>
+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />
+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />
+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set><set>
+<parameter name='brg-ar-identifiers.consuming-service-instance-id' value="`$brg-topology-operation-input.service-information.service-instance-id` " />
+<parameter name='brg-ar-identifiers.parent-service-instance-id' value="`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+<parameter name='brg-ar-identifiers.allotted-resource-type' value="`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+<parameter name='brg-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+
+</set><set>
+<parameter name='tx-ar.allotted-resource-data.brg-topology.onap-model-information.'
+value="`$brg-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+
+
+</set><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+<outcome value=''>
+<set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-invariant-uuid'
+value="`$ar-model.invariant-uuid`" />
+
+
+</set></outcome></switch><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+<outcome value=''>
+<set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-uuid'
+value="`$ar-model.uuid`" />
+
+
+</set></outcome></switch><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+<outcome value=''>
+<set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version'
+value="`$ar-model.version`" />
+
+
+</set></outcome></switch><switch test='`$ar-model.ecomp-generated-naming`'>
+<outcome value='Y'>
+<block atomic="true">
+<switch test='`$ar-model.naming-policy`'>
+<outcome value='oam_network_policy'>
+<block atomic='true'>
+<set>
+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>
+
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>
+
+</execute><set>
+<parameter name='brg-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+</set></block></outcome><outcome value='Other'>
+<block atomic='true'>
+<set>
+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>
+
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>
+
+</execute><set>
+<parameter name='brg-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in allotted-resource-model data. Ecomp-generated-naming should be true" />
+
+</return></outcome></switch><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.'
+value="`$brg-ar-identifiers.`" />
+
+
+</set><set>
+<parameter name='brg-ar-assignments.vbrg-wan-ip' value='127.0.0.1'/>
+</set><set>
+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.'
+value="`$brg-ar-assignments.`" />
+
+
+</set><switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+<outcome value=''>
+<set>
+<parameter name='tmp.cidx' value="`0`" />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+
+
+</set></outcome><outcome value='Other'>
+<block atomic="true"><for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+<switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+
+<outcome value='true'>
+<block atomic="true"><set>
+<parameter name='tmp.cidx' value='`$cidx`' />
+<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+<parameter name='tmp.found-cidx' value='true' /></set><break></break></block></outcome></switch></for><switch test='`$tmp.found-cidx`'>
+<outcome value='false'>
+<block atomic="true"><set>
+<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+</set></block></outcome></switch></block></outcome></switch><set>
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="description" value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+ <parameter name="selflink" value="`$tmp.ar.self-link`" />
+ <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+ <parameter name="model-version-id" value="`$ar-model.uuid`" />
+ <parameter name="operational-status" value="null" />
+<outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+
+<outcome value='success'>
+<block></block></outcome><outcome value='failure'>
+<block></block></outcome><outcome value='not-found'>
+<block></block></outcome></execute></block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $brg-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></outcome></get-resource></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-create.xml
new file mode 100644
index 0000000..54c99cb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-create.xml
@@ -0,0 +1,100 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation-create' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/brg-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-brg-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />
+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='PendingCreate'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />
+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />
+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $brg-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml
new file mode 100644
index 0000000..0fda417
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml
@@ -0,0 +1,275 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'>
+ <method rpc='brg-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/brg-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-brg-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.brg-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />
+ </set>
+ <switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />
+ <parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />
+ <parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND service-instance.service-instance-id = $brg-topology-operation-input.service-information.service-instance-id AND allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.consuming-service-instance-id' value='`$allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' ></call>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`"/>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vgmux-lan-ip` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error deleting vxlan tunnel" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error deleting vxlan tunnel" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />
+ </set>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='services' pfx='tmp.servicedata' >
+ <outcome value='success'>
+ <for index='serviceidx' start='0' end='`$tmp.servicedata.services.service_length`' >
+ <switch test='`$tmp.servicedata.services.service[$serviceidx].service-instance-id == $tmp.search.consuming-service-instance-id`'>
+ <outcome value='true'>
+ <for index='vnfidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf_length`' >
+ <for index='vfmoduleidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >
+ <for index='paramidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].name == vgw_private_ip_1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip' value='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting GENERIC-RESOURCE-API:services" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting GENERIC-RESOURCE-API:services" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`"/>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up vxlan tunnel" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error setting up vxlan tunnel" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $brg-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml
new file mode 100644
index 0000000..40effac
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml
@@ -0,0 +1,105 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation-delete' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/brg-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-brg-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />
+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />
+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />
+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><set>
+<parameter name='brg-ar-assignments.' value="" />
+
+
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $brg-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml
new file mode 100644
index 0000000..0a01dd9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml
@@ -0,0 +1,81 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation-unassign' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/brg-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-brg-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />
+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />
+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for brg-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $brg-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation.xml
new file mode 100644
index 0000000..90a9389
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_brg-topology-operation.xml
@@ -0,0 +1,26 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='brg-topology-operation' mode='sync'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='validate-brg-input' mode='sync' >
+</call><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value='assign'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-assign' mode='sync' >
+</call></block></outcome><outcome value='create'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-create' mode='sync' >
+</call></block></outcome><outcome value='activate'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-activate' mode='sync' >
+</call></block></outcome><outcome value='deactivate'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-deactivate' mode='sync' >
+</call></block></outcome><outcome value='delete'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-delete' mode='sync' >
+</call></block></outcome><outcome value='unassign'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-unassign' mode='sync' >
+</call></block></outcome><outcome value='Other'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+</return></outcome></switch><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml
new file mode 100644
index 0000000..7376942
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml
@@ -0,0 +1,94 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='connection-attachment-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-connection-attachment-input' mode='sync' ></call>
+ <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSOTNAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='activate'>
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSOTNAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='deactivate'>
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSOTNAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='delete'>
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSOTNAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANAttachmentInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is invalid" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="ack-final" value="Y"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml
new file mode 100644
index 0000000..06756c6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml
@@ -0,0 +1,341 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ </set>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.fq-name' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` " />
+ </set>
+ <set>
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='apply' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to apply policy in Contrail to source network" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"
+ local-only="false"
+ pfx="aai.dest-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='apply' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to apply policy in Contrail to source network" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+resource="related-link"
+key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id"
+local-only="true"
+pfx="tmp.AnAI-src">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+resource="related-link"
+key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"
+local-only="true"
+pfx="tmp.AnAI-dest">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy:relationship-list"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`tmp.AnAI-src.related-link`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[1].related-link" value="`tmp.AnAI-dest.related-link`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ </save>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="in-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml
new file mode 100644
index 0000000..444b50d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml
@@ -0,0 +1,981 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-assign' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.contrail-applied-service-instance-id' value='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`' />
+ <parameter name='tmp.ar.allotted-resource-type' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network`"/>
+ <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf`"/>
+ <parameter name="outputPath" value="tmp.ar-contrailappliedsvc-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.contrail-applied-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.parent-ar-url`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.network-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: Existing contrail route allotted resource" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ </set>
+ <set>
+ <parameter name='ar-identifiers.consuming-service-instance-id' value="`$contrail-route-topology-operation-input.service-information.service-instance-id` " />
+ <parameter name='ar-identifiers.parent-service-instance-id' value="`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+ <parameter name='ar-identifiers.allotted-resource-type' value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+ <parameter name='ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ </set>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.'
+value="`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+ </set>
+ <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+ <outcome value=''>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-invariant-uuid'
+value="`$ar-model.invariant-uuid`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+ <outcome value=''>
+ <set>
+ <parameter name='sar.allotted-resource-data.contrail-route-topology.onap-model-information.model-uuid'
+value="`$ar-model.uuid`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+ <outcome value=''>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-version'
+value="`$ar-model.version`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='source-network-found' value='false' />
+ </set>
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="tmp.ar-name="/>
+ <parameter name="field3" value="`$tmp.ar-name`"/>
+ <parameter name="field4" value="service-data-network-id" />
+ <parameter name="field5" value="`$service-data.networks.network[$nidx].network-id`" />
+ <parameter name="field6" value="contrail-route-input-network-id" />
+ <parameter name="field7" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`" />
+ <parameter name="field8" value="`$nidx`" />
+ </record>
+ <switch test="`$service-data.networks.network[$nidx].network-id == $contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />
+ <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+ <parameter name='source-network-found' value='true' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="tenant"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND
+ tenant.tenant-id = $tmp.ar.tenant-id"
+ pfx='aai.tenant' local-only='false' >
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$source-network-found`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$ar-model.ecomp-generated-naming`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <switch test='`$ar-model.naming-policy`'>
+ <outcome value='oam_network_policy'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ar-name' value='$TenantName_$CloudRegionID_$TenantNetworkRole_$LandingNetworkRole_policy_' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantName"/>
+ <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$CloudRegionID"/>
+ <parameter name="replacement" value="`$tmp.ar.cloud-region-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantNetworkRole"/>
+ <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`"/>
+ </execute>
+ <set>
+ <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />
+ <parameter name='generate-unique-name-input.index-length' value='2' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="tmp.ar-name="/>
+ <parameter name="field3" value="`$tmp.ar-name`"/>
+ <parameter name="field4" value="generate-unique-name-input.prefix" />
+ <parameter name="field5" value="`$generate-unique-name-input.prefix`" />
+ </record>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ar-name' value='$TenantName_$CloudRegionID_$TenantNetworkRole_$LandingNetworkRole_policy_' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantName"/>
+ <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$CloudRegionID"/>
+ <parameter name="replacement" value="`$tmp.ar.cloud-region-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantNetworkRole"/>
+ <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`"/>
+ </execute>
+ <set>
+ <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />
+ <parameter name='generate-unique-name-input.index-length' value='2' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="tmp.ar-name="/>
+ <parameter name="field3" value="`$tmp.ar-name`"/>
+ <parameter name="field4" value="generate-unique-name-input.prefix" />
+ <parameter name="field5" value="`$generate-unique-name-input.prefix`" />
+ </record>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in allotted-resource-model data. Ecomp-generated-naming should be true" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.'
+value="`$ar-identifiers.`" />
+ </set>
+ <set>
+ <parameter name='ar-assignments.source-network.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.` " />
+ <parameter name='ar-assignments.dest-network.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.` " />
+ <parameter name='ar-assignments.contrail-applied-service.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.` " />
+ </set>
+ <set>
+ <parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$defaultDomain"/>
+ <parameter name="replacement" value="default-domain"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$defaultProject"/>
+ <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.fq-name`"/>
+ <parameter name="outputPath" value="tmp.fq-name"/>
+ <parameter name="target" value="$sdncNetworkPolicy"/>
+ <parameter name="replacement" value="`$tmp.ar-name`"/>
+ </execute>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-parentnetwork-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="parent-net" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$parent-net.networks.network_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='ar-assignments.dest-network.network-id' value="`$parent-net.networks.network[0].network-id` " />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: Network id not found. Parent Service should only have one network" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: No existing parent netorks" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='ar-assignments.dest-network.network-id' value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id` " />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-contrailappliedsvc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="vnf" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$vnf.vnfs.vnf_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='ar-assignments.contrail-applied-service.vnf-id' value="`$vnf.vnfs.vnf[0].vnf-id` " />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: vnf id not found. Contrail applied service should only have one vnf" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: No existing contrail applied service vnfs" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`'>
+ <outcome value=''>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ar-assignments.contrail-applied-service.vnf-id"
+ pfx='aai.vnf' local-only='false' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Vnf not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving vnf from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.vnf.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="VF Module not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$aai.vnf.vf-modules.vf-module_length`' >
+ <switch test='`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value="`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn` " />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value="`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn` " />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$ar-assignments.contrail-applied-service.contrail-fqdn`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: No vf-module with contrail-service-instance-fqdn found in AAI" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ar-assignments.fq-name' value="`$tmp.fq-name` " />
+ </set>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.'
+value="`$ar-assignments.`" />
+ </set>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.cidx' value="`0`" />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$cidx`' />
+ <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+ <parameter name='tmp.found-cidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-cidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="description" value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+ <parameter name="selflink" value="`$tmp.ar.self-link`" />
+ <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+ <parameter name="model-version-id" value="`$ar-model.uuid`" />
+ <parameter name="operational-status" value="null" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.network-ar-url`"/>
+ <parameter name="outputPath" value="tmp.network-ar-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$ar-assignments.dest-network.network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="net-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='false' />
+ </set>
+ <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+ <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-nidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+ </set>
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='false' />
+ </set>
+ <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+ <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-nidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+ </set>
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='false' />
+ </set>
+ <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+ <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-nidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+ </set>
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='failure'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource. Parent provided resource rolled back" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource. Parent provided resource rolled back" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml
new file mode 100644
index 0000000..2f3c907
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml
@@ -0,0 +1,380 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-create' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ </set>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />
+ <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="tenant"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND
+ tenant.tenant-id = $tmp.ar.tenant-id"
+ pfx='aai.tenant' local-only='false' >
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id"
+ local-only="false"
+ pfx="aai.src-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"
+ local-only="false"
+ pfx="aai.dest-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.contrail-route-topology-operation-create"/>
+ <parameter name='field3' value='network-policy' />
+ <parameter name='field4' value='create' />
+ <parameter name='field5' value='contrailResp' />
+ <parameter name='field6' value='default-domain' />
+ <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+ <parameter name='field8' value='`$tmp.ar.tenant-name`' />
+ <parameter name='field9' value='`$ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`' />
+ <parameter name='field10' value='$aai.dest-network.contrail-network-fqdn' />
+ <parameter name='field11' value='$aai.src-network.contrail-network-fqdn' />
+ <parameter name='field12' value='&lt;&gt;' />
+ <parameter name='field13' value='$tmp.ar.cloud-region-id' />
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='create' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='policy-name' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+ <parameter name='default-project' value='`$tmp.ar.tenant-name`' />
+ <!-- dummy for dev <parameter name='default-project' value='default-project' /> -->
+ <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' />
+ <parameter name='dst-virtual-network' value='`$aai.dest-network.contrail-network-fqdn`' />
+ <parameter name='src-virtual-network' value='`$aai.src-network.contrail-network-fqdn`' />
+ <parameter name='direction' value='&lt;&gt;' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test='`$contrailResp.resp-code`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='policy-manager-create-policy' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create Policy in Policy Mgr. Rollback failed to delete policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create policy in PolicyMgr. '+ $error-message + 'Contrail network policy rolled back.'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-policy-id" value="`$ar-assignments.contrail-id`" />
+ <parameter name="network-policy-fqdn" value="`$ar-assignments.fq-name`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ </save>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' value='`$ar-assignments.`' />
+ </set>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml
new file mode 100644
index 0000000..5fc21d2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml
@@ -0,0 +1,309 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ </set>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error activating contrail route. Source network not found" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id"
+ local-only="false"
+ pfx="aai.src-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.fq-name' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` " />
+ </set>
+ <set>
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to remove policy in Contrail from source network" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"
+ local-only="false"
+ pfx="aai.dest-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='remove' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+ <parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to remove policy in Contrail from dest network" />
+ </return>
+ </outcome>
+ </execute>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy:relationship-list"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' " >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ </delete>
+ <set>
+ <parameter name='ar-assignments.vlan-tag' value="" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml
new file mode 100644
index 0000000..c57b5f9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml
@@ -0,0 +1,258 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-delete' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ </set>
+ <set>
+ <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+ </set>
+ <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error assigning contrail route. Source network not found" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+ <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to create policy in Contrail" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='policy-manager-delete-policy' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to save network policy in AAI" />
+ </return>
+ </outcome>
+ </delete>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="null" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml
new file mode 100644
index 0000000..e4cbfc2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml
@@ -0,0 +1,338 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.parent-ar-url`"/>
+ <parameter name="outputPath" value="tmp.parent-ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network`"/>
+ <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.network-ar-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+ </set>
+ <set>
+ <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+ </set>
+ <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="Error: Contrail Route not found" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+ <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+ <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+ <parameter name='tmp.dest-network-id' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.network-ar-url`"/>
+ <parameter name="outputPath" value="tmp.network-ar-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$tmp.dest-network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="net-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='false' />
+ </set>
+ <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+ <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-nidx' value='true' />
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-nidx`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+ </set>
+ <set>
+ <parameter name="$net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.newidx]" value="$net-ar.network-provided-allotted-resources.network-provided-ar-id[$snidx]" />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length - 1`' />
+ </set>
+ <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length == 0`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="p-network-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <block atomic="true">
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $tmp.ar.allotted-resource-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.sdidx" value="`$snidx`"/>
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.consumed-allotted-resources." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="0"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+ </set>
+ <for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx]." value="$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length]." value=""/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml
new file mode 100644
index 0000000..3b4b87e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml
@@ -0,0 +1,56 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='contrail-route-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-contrail-route-input' mode='sync' ></call>
+ <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-assign' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-create' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-activate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-deactivate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-delete' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-unassign' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="ack-final" value="Y"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-l3-subnet.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-l3-subnet.xml
new file mode 100644
index 0000000..c7e3454
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-l3-subnet.xml
@@ -0,0 +1,192 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='create-l3-subnet' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-idx' value='0' />
+ </set>
+ <switch test='`$v4.entity-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="v4.entity-id"/>
+ <parameter name="field5" value="null"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test='`$network-model.ipv4-dhcp-enabled`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ipv4dhcp-enabled' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ipv4dhcp-enabled' value='false' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">
+ <parameter name="ipAddress" value="`$v4.ip-prefix`" />
+ <parameter name="ipVersion" value="4" />
+ <parameter name="subnet" value="`$v4.mask`" />
+ <parameter name="dhcp-enabled" value="`$tmp.ipv4dhcp-enabled`" />
+ <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />
+ <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />
+ <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to generate ipv4 addresses using IpAddressTools" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v4.entity-id`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value="`$tmp.l3-network.network-name + '_S' + $subnet-idx`" />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v4.ip-prefix`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v4.mask`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv4-ip-version`' />
+ </set>
+ <switch test='`$network-model.ipv4-dhcp-enabled`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='subnet-idx' value='`$subnet-idx+1`' />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$v6.entity-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="v6.entity-id"/>
+ <parameter name="field5" value="null"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="v6.entity-id"/>
+ <parameter name="field5" value="`$v6.entity-id`"/>
+ </record>
+ <switch test='`$network-model.ipv6-dhcp-enabled`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ipv6dhcp-enabled' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ipv6dhcp-enabled' value='false' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">
+ <parameter name="ipAddress" value="`$v6.ip-prefix`" />
+ <parameter name="ipVersion" value="6" />
+ <parameter name="subnet" value="`$v6.mask`" />
+ <parameter name="dhcp-enabled" value="`$tmp.ipv6dhcp-enabled`" />
+ <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />
+ <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />
+ <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to generate ipv6 addresses using IpAddressTools" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v6.entity-id`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value="`$tmp.l3-network.network-name + '_S' + $subnet-idx`" />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v6.ip-prefix`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v6.mask`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv6-ip-version`' />
+ </set>
+ <switch test='`$network-model.ipv6-dhcp-enabled`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />
+ <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='subnet-idx' value='`$subnet-idx+1`' />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml
new file mode 100644
index 0000000..f9866fe
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml
@@ -0,0 +1,437 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='create-route-target-and-vpn-binding' mode='sync'>
+ <block atomic="true">
+ <switch test='`$rt.aic-zone`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.resource`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.resource-value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.network-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rt.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error missing parameters to create-local-route-target" />
+ </return>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-instance-group-vpn-binding`"/>
+ <parameter name="outputPath" value="tmp.vpn-binding-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$rt.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.vpn-binding-url`"/>
+ <parameter name="outputPath" value="tmp.vpn-binding-url"/>
+ <parameter name="target" value="{network-instance-group-id}"/>
+ <parameter name="replacement" value="`$rt.network-instance-group-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.vpn-binding-url`"/>
+ <parameter name="outputPath" value="tmp.vpn-binding-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$rt.network-id`"/>
+ </execute>
+ <set>
+ <parameter name="get-data-from-policy-input.policy-instance-name" value="`$get-complex-resource-service-model-output.vpn-binding-policy`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' ></call>
+ <set>
+ <parameter name="vpn-binding.vpn-name" value="`$rt.network-name`" />
+ <parameter name="vpn-binding.asn" value="`$get-data-from-policy-output.asn`" />
+ <parameter name="vpn-binding.route-target-role" value="`$get-data-from-policy-output.route-target-role`" />
+ <parameter name="vpn-binding.aic-zone" value="`$rt.aic-zone`" />
+ <parameter name="vpn-binding.route-target-category" value="local" />
+ <parameter name="vpn-binding.resource" value="`$rt.resource`" />
+ <parameter name="vpn-binding.resource-value" value="`$rt.resource-value`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-vpn-binding-id' mode='sync' ></call>
+ <set>
+ <parameter name='vpn-binding.vpn-binding-id' value='`$tmp.return.generate-vpn-binding-id.uuid`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.vpn-binding-url`"/>
+ <parameter name="outputPath" value="tmp.vpn-binding-url"/>
+ <parameter name="target" value="{vpn-binding-id}"/>
+ <parameter name="replacement" value="`$vpn-binding.vpn-binding-id`"/>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-binding.vpn-id = $vpn-binding.vpn-binding-id" >
+ <parameter name="vpn-id" value="`$vpn-binding.vpn-binding-id`" />
+ <parameter name="vpn-name" value="`$vpn-binding.vpn-name`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating vpn-binding in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating vpn-binding in AAI" />
+ </return>
+ </outcome>
+ </save>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.allocateRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$msRT.responseCode`'>
+ <outcome value='200'></outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Error: calling allocate resource microservice - responseCode: ' + $msRT.responseCode + ' responseMsg: ' + $msRT.responseMessage + ' allocateRouteTargetStatus: ' + $msRT.allocateRouteTargetStatus `"/>
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error: calling allocate resource microservice"/>
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="vpn-binding.global-route-target" value="`$msRT.routeTargetID`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error: failed to save vpn-binding in md-sal" />
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error: failed to save vpn-binding in md-sal" />
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="route-target"
+ key="vpn-binding.vpn-binding-id = $vpn-binding.vpn-binding-id
+ AND route-target.global-route-target = $vpn-binding.global-route-target
+ AND route-target.route-target-role = $vpn-binding.route-target-role" >
+ <!-- Create route-target object -->
+ <parameter name="global-route-target" value="`$vpn-binding.global-route-target`" />
+ <parameter name="route-target-role" value="`$vpn-binding.route-target-role`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error: failed to save route target in AAI"/>
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error: failed to save route target in AAI"/>
+ </set>
+ <block atomic='true'>
+ <switch test="`$vpn-binding.global-route-target != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />
+ <parameter name='restapiUser' value='`$prop.rt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />
+ <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="msRT" />
+ </execute>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-id = $rt.vpn-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-vpn-binding" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml
new file mode 100644
index 0000000..411cbb3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="dci-connects-network-topology-operation-activate" mode="sync">
+ <block atomic="true">
+ <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />
+ <block atomic="true">
+ <block atomic="true">
+ <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_description'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND depth = '0'" pfx="tmp.aai.l3-network" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`">
+ <set>
+ <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" />
+ </set>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`">
+ <set>
+ <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" />
+ </set>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.tunnelType" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log" />
+ <parameter name="field1" value="__TIMESTAMP__" />
+ <parameter name="field2" value="dci-network-topology-operation-activate" />
+ <parameter name="field3" value="dci-connects.name" />
+ <parameter name="field4" value="`$prop.dci-connects.name`" />
+ <parameter name="field5" value="dci-connects.id" />
+ <parameter name="field6" value="`$prop.dci-connects.id`" />
+ <parameter name="field7" value="dci-connects.tunnelType" />
+ <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />
+ <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />
+ </record>
+ <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">
+ <outcome value="SPTN">
+ <switch test="`$prop.dci-connects.tunnelType`">
+ <outcome value="L3-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ <outcome value="L2-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ <block atomic="true">
+ <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_description'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ <outcome value="false">
+ <set>
+ <parameter name="prop.dci-connects.description" value="" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND depth = '0'" pfx="tmp.aai.l3-network" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`">
+ <set>
+ <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" />
+ </set>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_exportRT1'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" />
+ <parameter name="regex" value="," />
+ <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" />
+ <outcome value="success">
+ <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`">
+ <set>
+ <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" />
+ </set>
+ </for>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log" />
+ <parameter name="field1" value="__TIMESTAMP__" />
+ <parameter name="field2" value="dci-network-topology-operation-activate" />
+ <parameter name="field3" value="dci-connects.name" />
+ <parameter name="field4" value="`$prop.dci-connects.name`" />
+ <parameter name="field5" value="dci-connects.id" />
+ <parameter name="field6" value="`$prop.dci-connects.id`" />
+ <parameter name="field7" value="dci-connects.tunnelType" />
+ <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />
+ <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />
+ </record>
+ <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">
+ <outcome value="SPTN">
+ <switch test="`$prop.dci-connects.tunnelType`">
+ <outcome value="L3-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ <outcome value="L2-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.dci.network-id" />
+ </execute>
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0" />
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value="`$prop.dci.network-id`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`" />
+ <parameter name="service-data.networks.network_length" value="`$nidx+1`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status" value="Created" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action" value="`$network-topology-operation-input.sdnc-request-header.svc-action`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action" value="`$network-topology-operation-input.request-information.request-action`" />
+ </set>
+ <set>
+ <parameter name="networkId" value="`$prop.dci.network-id`" />
+ <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.dci.network-id + '/network-data/'` " />
+ </set>
+ </block>
+ </block>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $prop.dci.network-id">
+ <parameter name="configuration-id" value="`$prop.dci.network-id`" />
+ <parameter name="configuration-type" value="overlay" />
+ <parameter name="configuration-sub-type" value="VPN-DCI" />
+ <parameter name="orchestration-status" value="Created" />
+ <parameter name="operational-status" value="Created" />
+ <parameter name="model-customization-id" value="`$prop.dci.network-id`" />
+ <parameter name="configuration-selflink" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.dci.network-id + '/network-data/'` " />
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" key="service-instance.service-instance-id = $service-data.service-information.service-instance-id AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="configuration" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/configurations/configuration/' + $prop.dci.network-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="configuration.configuration-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.dci.network-id`" />
+ </save>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..d70691b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="dci-connects-network-topology-operation-deactivate" mode="sync">
+ <block atomic="true">
+ <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />
+ <block atomic="true">
+ <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.tunnelType" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log" />
+ <parameter name="field1" value="__TIMESTAMP__" />
+ <parameter name="field2" value="dci-network-topology-operation-deactivate" />
+ <parameter name="field3" value="dci-connects.id" />
+ <parameter name="field4" value="`$prop.dci-connects.id`" />
+ <parameter name="field5" value="dci-connects.tunnelType" />
+ <parameter name="field6" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field7" value="dci-connects.tunnelType" />
+ <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />
+ <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />
+ </record>
+ <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">
+ <outcome value="SPTN">
+ <switch test="`$prop.dci-connects.tunnelType`">
+ <outcome value="L3-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l3-dci-connects/' + $prop.dci-connects.id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ <outcome value="L2-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l2-dci-connects/' + $prop.dci-connects.id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ <block atomic="true">
+ <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.dci-connects.id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log" />
+ <parameter name="field1" value="__TIMESTAMP__" />
+ <parameter name="field2" value="dci-network-topology-operation-deactivate" />
+ <parameter name="field3" value="dci-connects.id" />
+ <parameter name="field4" value="`$prop.dci-connects.id`" />
+ <parameter name="field5" value="dci-connects.tunnelType" />
+ <parameter name="field6" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field7" value="dci-connects.tunnelType" />
+ <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />
+ <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />
+ <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />
+ </record>
+ <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">
+ <outcome value="SPTN">
+ <switch test="`$prop.dci-connects.tunnelType`">
+ <outcome value="L3-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l3-dci-connects/' + $prop.dci-connects.id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ <outcome value="L2-DCI">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l2-dci-connects/' + $prop.dci-connects.id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $network-topology-operation-input.network-information.network-id" />
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="1">
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.networks." value="" />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network_length" value="0" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`" />
+ </set>
+ <for silentFailure="true" index="snidx" start="`$tmp.nidx + 1`" end="`$service-data.networks.network_length`">
+ <block atomic="true" />
+ </for>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`" />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.new_length]." value="" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`" />
+ <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'` " />
+ </set>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
new file mode 100644
index 0000000..1e6c8bb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
@@ -0,0 +1,1127 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='eipam-allocate-generic-subnet' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.eipam-error" value="false" />
+ <parameter name="tmp.allocate-v4-subnet-flag" value="N" />
+ <parameter name="tmp.allocate-v6-subnet-flag" value="N" />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-pool.v4.pre-existing" value="N"/>
+ <parameter name="eipam-pool.v6.pre-existing" value="N"/>
+ <parameter name="tmp.leaf-level" value="N" />
+ </set>
+ <switch test="`$tmp.activate-subnet-flag`">
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.activate-subnet-flag" value="Y"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Y'></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.leaf-level" value="Y" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <!--Need to know which ipv version to get the plan name from the network-model.-->
+ <switch test="`$eipam-ip-block.allocate-version`">
+ <outcome value='ipv4'>
+ <block atomic='true'>
+ <switch test="`$l-idx`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <switch test="`$tmp.skip-first-level`">
+ <outcome value='Y'></outcome>
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block atomic='true'>
+ <switch test="`$l-idx`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <switch test="`$tmp.skip-first-level`">
+ <outcome value='Y'></outcome>
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet info are saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet info are saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>
+ <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-generic-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="subnet info are saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.allocate-version for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml
new file mode 100644
index 0000000..8fd6376
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml
@@ -0,0 +1,537 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='eipam-allocate-network-role-subnet' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.eipam-error" value="false" />
+ <parameter name="eipam-ip-block.ip-prefix" value='' />
+ <parameter name="eipam-ip-block.mask" value='' />
+ <parameter name="pfx.eipam-pool-row" value='' />
+ <parameter name="tmp.level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />
+ <parameter name="tmp.level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />
+ </set>
+ <!--Need to know which ipv version to get the plan name from the network-model.-->
+ <switch test="`$eipam-ip-block.allocate-version`">
+ <outcome value='ipv4'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="Y"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="N"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>
+ <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="Level 1 subnet saved to DB."/>
+ </record>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='2'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="Y"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="2"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>
+ <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.pools[1].key-name" value="`$tmp.level2-key-name`"/>
+ <parameter name="eipam-ip-block.pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ <switch test="`$eipam-ip-block.subnet-size-override`">
+ <outcome value=''>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level2-key-value`"/>
+ <parameter name="field6" value="Level 2 subnet override not set, default to network model value."/>
+ </record>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.subnet-size-override" value="`$network-model.ipv4-cidr-mask`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ALLOCATED' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level2-key-name ,
+ key_value = $tmp.level2-key-value ,
+ level = 2 ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ </save>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.subnet-size-override" value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <!-- Level 2 -->
+ <parameter name="field6" value="NETWORK_ROLE_NETWORK_ID"/>
+ <parameter name="field7" value="`$tmp.level2-key-value`"/>
+ <parameter name="field8" value="Level 2 subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="Y"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="N"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>
+ <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ACTIVE' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>
+ <parameter name="field7" value="Level 1 subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='2'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.activate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.leaf-level-indicator" value="Y"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.pools_length" value="2"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>
+ <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.pools[1].key-name" value="`$tmp.level2-key-name`"/>
+ <parameter name="eipam-ip-block.pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ <switch test="`$eipam-ip-block.subnet-size-override`">
+ <outcome value=''>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level2-key-value`"/>
+ <parameter name="field6" value="Level 2 subnet override not set, default to network model value."/>
+ </record>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.subnet-size-override" value="`$network-model.ipv6-cidr-mask`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; "
+ pfx='pfx.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />
+ </return>
+ </outcome>
+ </get-resource>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ALLOCATED' ,
+ pool_id = $pfx.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level2-key-name ,
+ key_value = $tmp.level2-key-value ,
+ level = 2 ; "
+ force='true'
+ pfx='pfx.eipam-v6subnet-key-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-allocate-network-role-subnet"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <!-- Level 2 -->
+ <parameter name="field6" value="NETWORK_ROLE_NETWORK_ID"/>
+ <parameter name="field7" value="`$tmp.level2-key-value`"/>
+ <parameter name="field8" value="Level 2 subnet saved to DB."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.allocate-version for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml
new file mode 100644
index 0000000..1940615
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml
@@ -0,0 +1,901 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='eipam-create-generic-pool' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.eipam-error" value="false" />
+ <parameter name="tmp.create-v4-pool-flag" value="N" />
+ <parameter name="tmp.create-v6-pool-flag" value="N" />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-pool.v4.pre-existing" value="N"/>
+ <parameter name="eipam-pool.v6.pre-existing" value="N"/>
+ <parameter name="level" value="`$eipam-ip-block.level - 1`" />
+ </set>
+ <switch test="`$tmp.allocate-subnet-flag`">
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.allocate-subnet-flag" value="Y"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Y'></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>
+ <parameter name="field6" value="Level already exists, SKIP."/>
+ <parameter name="field7" value="`$eipam-ip-block.level`"/>
+ <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>
+ </record>
+ <set>
+ <parameter name="eipam-pool.v4.pre-existing" value="Y"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <switch test="`$l-idx`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <switch test="`$tmp.qip-pool`">
+ <outcome value=""></outcome>
+ <outcome value='Other'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.skip-first-level`">
+ <outcome value='Y'></outcome>
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v4-pool-flag" value="Y" />
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v4-pool-flag" value="Y" />
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v4-pool-flag" value="Y" />
+ </set>
+ <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>
+ <parameter name="field6" value="Level already exists, SKIP."/>
+ <parameter name="field7" value="`$eipam-ip-block.level`"/>
+ <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>
+ </record>
+ <set>
+ <parameter name="eipam-pool.v6.pre-existing" value="Y"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <switch test="`$l-idx`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <switch test="`$tmp.qip-pool`">
+ <outcome value=""></outcome>
+ <outcome value='Other'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.skip-first-level`">
+ <outcome value='Y'></outcome>
+ <outcome value="">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v6-pool-flag" value="Y" />
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v6-pool-flag" value="Y" />
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.create-v6-pool-flag" value="Y" />
+ </set>
+ <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
+ <block atomic='true'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
+ <parameter name="field7" value="`$l6-idx`"/>
+ </record>
+ </block>
+ </for>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$tmp.create-v4-pool-flag`">
+ <outcome value='Y'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='N'>
+ <switch test="`$tmp.create-v6-pool-flag`">
+ <outcome value='Y'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-pool.v4.pre-existing`">
+ <outcome value='N'>
+ <block atomic='true'>
+ <set>
+ <parameter name="key-name" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />
+ <parameter name="key-value" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name="parent_pool" value="`$tmp.v4-qip-pool`" />
+ <parameter name="level" value="`$eipam-ip-block.level - 1`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="parent_pool" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />
+ <parameter name="level" value="`$eipam-ip-block.level - 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-generic-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$key-name`"/>
+ <parameter name="field6" value="`$key-value`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
+ </record>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ address_family = $network-model.ipv4-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v4pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ address_family = $network-model.ipv4-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ address_family = $network-model.ipv4-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test="`$tmp.allocate-subnet-flag`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v4-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="index_found" value="true" />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$index_found`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,
+ prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ status = 'ALLOCATED' ,
+ pool_id = $tmp.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv4-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Y'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-pool.v6.pre-existing`">
+ <outcome value='N'>
+ <block atomic='true'>
+ <set>
+ <parameter name="key-name" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />
+ <parameter name="key-value" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <set>
+ <parameter name="parent_pool" value="`$tmp.v6-qip-pool`" />
+ <parameter name="level" value="`$eipam-ip-block.level - 1`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="parent_pool" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />
+ <parameter name="level" value="`$eipam-ip-block.level - 1`" />
+ </set>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$v6FQPN-output.pools[$level].key-name`"/>
+ <parameter name="field6" value="`$v6FQPN-output.pools[$level].key-value`"/>
+ <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
+ <parameter name="field8" value="`$eipam-ip-block.level`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
+ </record>
+ <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
+ <outcome value='shared'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $v6FQPN-output.pools[$level].key-name ,
+ key_value = $v6FQPN-output.pools[$level].key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ address_family = $network-model.ipv6-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ,
+ network_instance_group_id = $tmp.network-instance-group-id ; "
+ force='true'
+ pfx='pfx.eipam-v6pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $v6FQPN-output.pools[$level].key-name ,
+ key_value = $v6FQPN-output.pools[$level].key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ address_family = $network-model.ipv6-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value=''>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $v6FQPN-output.pools[$level].key-name ,
+ key_value = $v6FQPN-output.pools[$level].key-value ,
+ level = $eipam-ip-block.level ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ address_family = $network-model.ipv6-ip-version ,
+ parent_pool = $parent_pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test="`$tmp.allocate-subnet-flag`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v6-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="index_found" value="true" />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$index_found`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
+ service_type = $tmp.service-type ,
+ ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,
+ prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ status = 'ALLOCATED' ,
+ pool_id = $tmp.eipam-pool-row.pool-id ,
+ address_family = $network-model.ipv6-ip-version ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
+ key_name = $key-name ,
+ key_value = $key-value ,
+ level = $eipam-ip-block.level ; "
+ force='true'
+ pfx='pfx.eipam-v4subnet-key-row'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Y'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml
new file mode 100644
index 0000000..49436b4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml
@@ -0,0 +1,699 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='eipam-create-network-role-pool' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.eipam-error" value="false" />
+ <parameter name="tmp.create-v4-pool-flag" value="N" />
+ <parameter name="tmp.create-v6-pool-flag" value="N" />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-pool.v4.pre-existing" value="false"/>
+ <parameter name="eipam-pool.v6.pre-existing" value="false"/>
+ <parameter name="tmp.v4-level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />
+ <parameter name="tmp.v4-level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />
+ <parameter name="tmp.v6-level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />
+ <parameter name="tmp.v6-level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />
+ </set>
+ <switch test="`$tmp.region`">
+ <outcome value="USA">
+ <set>
+ <parameter name="tmp.region" value="US" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <parameter name="field6" value="Level 1 already exists, SKIP."/>
+ <parameter name="field7" value="`$tmp.eipam-pool-row.pool-id`"/>
+ </record>
+ <set>
+ <parameter name="eipam-pool.v4.pre-existing" value="true"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v4-address-plan`">
+ <outcome value="AIC_ATM_UNPROTECTED_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-U ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_UNPROTECTED_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-U ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PRIVATE_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-Private ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_ATM_PROTECTED_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-P ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PROTECTED_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-P ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_AIM_LANDING_NETWORK_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V4 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="EIPAM Address Plan is not valid." />
+ </return>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v4-level1-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <parameter name="tmp.create-v4-pool-flag" value="Y" />
+ <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <set>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v4-level2-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>
+ <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>
+ <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>
+ </record>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v4-address-plan`">
+ <outcome value="AIC_ATM_UNPROTECTED_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-U ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_UNPROTECTED_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-U ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PRIVATE_V4">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-Private ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_ATM_PROTECTED_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-P ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PROTECTED_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'DP-P ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_AIM_LANDING_NETWORK_V4">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V4 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="EIPAM Address Plan is not valid." />
+ </return>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v4-level1-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <parameter name="tmp.create-v4-pool-flag" value="Y" />
+ <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <set>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v4-level2-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>
+ <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>
+ <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>
+ </record>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$tmp.level1-key-value`"/>
+ <parameter name="field6" value="Level 1 already exists, SKIP."/>
+ <parameter name="field7" value="`$tmp.eipam-pool-row.pool-id`"/>
+ </record>
+ <set>
+ <parameter name="eipam-pool.v6.pre-existing" value="true"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v6-address-plan`">
+ <outcome value="AIC_ATM_UNPROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-U-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_AIM_LANDING_NETWORK_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_ATM_PROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-P-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-U-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PRIVATE_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-Private-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-P-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="EIPAM Address Plan is not valid." />
+ </return>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v6-level1-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <parameter name="tmp.create-v6-pool-flag" value="Y" />
+ <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v6-level2-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>
+ <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>
+ <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>
+ </record>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ </outcome>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <block atomic='true'>
+ <switch test="`$network-model.eipam-v6-address-plan`">
+ <outcome value="AIC_ATM_UNPROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-U-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_AIM_LANDING_NETWORK_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_ATM_PROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'ATM-P-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-U-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PRIVATE_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-Private-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PROTECTED_V6">
+ <set>
+ <parameter name="tmp.qip-pool" value="`'AIC-DP-P-V6 ' + $tmp.region`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="EIPAM Address Plan is not valid." />
+ </return>
+ </outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>
+ <!-- Level 1 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v6-level1-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>
+ <parameter name="tmp.create-v6-pool-flag" value="Y" />
+ <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />
+ </set>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
+ </return>
+ </outcome>
+ <outcome value='2'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <!-- Number of Pool Levels -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
+ <!-- Level 2 -->
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v6-level2-key-name`"/>
+ <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>
+ </set>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
+ <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>
+ <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>
+ <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>
+ </record>
+ <set>
+ <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$tmp.create-v4-pool-flag`">
+ <outcome value='Y'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='N'>
+ <switch test="`$tmp.create-v6-pool-flag`">
+ <outcome value='Y'>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$tmp.create-v4-pool-flag`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $tmp.v4-level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ address_family = $network-model.ipv4-ip-version ,
+ parent_pool = $tmp.v4-qip-pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ <outcome value='Other'></outcome>
+ <outcome value='Other'></outcome>
+ </save>
+ </outcome>
+ <outcome value='2'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $tmp.v4-level2-key-name ,
+ key_value = $tmp.level2-key-value ,
+ level = 2 ,
+ plan_name = $network-model.eipam-v4-address-plan ,
+ address_family = $network-model.ipv4-ip-version ,
+ parent_pool = $tmp.level1-key-value ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v4pool-row'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ <outcome value='Other'></outcome>
+ <outcome value='Other'></outcome>
+ </save>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
+ <parameter name="field5" value="`$tmp.v4-level1-key-name`"/>
+ <parameter name="field6" value="`$tmp.level1-key-value`"/>
+ <parameter name="field7" value="`$tmp.v4-level2-key-name`"/>
+ <parameter name="field8" value="`$tmp.level2-key-value`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$tmp.create-v6-pool-flag`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test="`$eipam-ip-block.level`">
+ <outcome value='1'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $tmp.v6-level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ address_family = $network-model.ipv6-ip-version ,
+ parent_pool = $tmp.v6-qip-pool ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6pool-row'>
+ <outcome value='Other'></outcome>
+ <outcome value='Other'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='2'>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_POOLS
+ SET
+ key_name = $tmp.v6-level2-key-name ,
+ key_value = $tmp.level2-key-value ,
+ level = 2 ,
+ plan_name = $network-model.eipam-v6-address-plan ,
+ address_family = $network-model.ipv6-ip-version ,
+ parent_pool = $tmp.level1-key-value ,
+ service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
+ network_id = $tmp.network-id ; "
+ force='true'
+ pfx='pfx.eipam-v6pool-row'>
+ <outcome value='Other'></outcome>
+ <outcome value='Other'></outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="network-topology-operation"/>
+ <parameter name="field3" value="eipam-create-network-role-pool"/>
+ <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
+ <parameter name="field5" value="`$tmp.v6-level1-key-name`"/>
+ <parameter name="field6" value="`$tmp.level1-key-value`"/>
+ <parameter name="field7" value="`$tmp.v6-level2-key-name`"/>
+ <parameter name="field8" value="`$tmp.level2-key-value`"/>
+ <parameter name="field9" value="`$network-model.network-role`"/>
+ <parameter name="field10" value="`$tmp.network-id`"/>
+ <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ <outcome value='N'></outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-FQPN.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-FQPN.xml
new file mode 100644
index 0000000..b9699d6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-FQPN.xml
@@ -0,0 +1,472 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generate-FQPN' mode='sync'>
+ <block atomic="true">
+ <switch test='`$generate-FQPN-input.plan-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="generate-FQPN-input.plan-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='eipam-ip-block.plan-name' value='`$generate-FQPN-input.plan-name`' />
+ </set>
+ <set>
+ <parameter name='generate-FQPN-output.' value='' />
+ </set>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="getPlanTopology">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while getting Keyname and Keyvalue for address plan, '+ $eipam-ip-block.planName + ', from EIPAM'`" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="eipam-ip-block.getPlanTopologyResponse.TopologyDetails is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-FQPN' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
+ <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>
+ <outcome value='false'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pool-index'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.final.key-value' value="" />
+ </set>
+ <set>
+ <parameter name='tmp.getPlanTopologyResponse.key-name'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />
+ <parameter name="regex" value=":" />
+ <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />
+ </execute>
+ <for index="split-index" start="0" end="`$tmp.split.key-name_length`">
+ <set>
+ <parameter name='tmp.eipam.key-name'
+ value='`$tmp.split.key-name[$split-index]`' />
+ </set>
+ <block atomic='true'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '
+ pfx='db.address-plan-policies'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '
+ pfx='db.routing-characteristic_mapping[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.key-value' value='' />
+ </set>
+ <switch test='`$db.address-plan-policies.key-value-source`'>
+ <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.key-value' value='-1' />
+ </set>
+ <switch test='`$db.routing-characteristic_mapping_length &gt; 1`'>
+ <outcome value='true'>
+ <block>
+ <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">
+ <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.key-value`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Location_Clli8'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Vrf_Name'>
+ <switch test='`$generate-FQPN-input.vrf-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='cloud_region_id'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Complex_region'>
+ <set>
+ <parameter name='tmp.key-value' value='`$aai.complex.region`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Name'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Subnet_Role'>
+ <switch test='`$generate-FQPN-input.subnet-role`' >
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.key-value' value='STATIC' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Role'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Id'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Collection'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Zone'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ <switch test='`$split-index == 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.final.key-value'
+ value="`$tmp.final.key-value + ':' + $tmp.key-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-name'
+ value='`$tmp.getPlanTopologyResponse.key-name`' />
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-value'
+ value='`$tmp.final.key-value`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-output.pools_length'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic='true'>
+ <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
+ <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>
+ <outcome value='false'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pool-index'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.final.key-value' value="" />
+ </set>
+ <set>
+ <parameter name='tmp.getPlanTopologyResponse.key-name'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />
+ <parameter name="regex" value=":" />
+ <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />
+ </execute>
+ <for index="split-index" start="0" end="`$tmp.split.key-name_length`">
+ <set>
+ <parameter name='tmp.eipam.key-name'
+ value='`$tmp.split.key-name[$split-index]`' />
+ </set>
+ <block atomic='true'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '
+ pfx='db.address-plan-policies'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '
+ pfx='db.routing-characteristic_mapping[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.key-value' value='' />
+ </set>
+ <switch test='`$db.address-plan-policies.key-value-source`'>
+ <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.key-value' value='-1' />
+ </set>
+ <switch test='`$db.routing-characteristic_mapping_length &gt; 1`'>
+ <outcome value='true'>
+ <block>
+ <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">
+ <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.key-value`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Location_Clli8'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Vrf_Name'>
+ <switch test='`$generate-FQPN-input.vrf-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='cloud_region_id'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Complex_region'>
+ <set>
+ <parameter name='tmp.key-value' value='`$aai.complex.region`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Name'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Subnet_Role'>
+ <switch test='`$generate-FQPN-input.subnet-role`' >
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.key-value' value='STATIC' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Role'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Id'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Network_Collection'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />
+ </set>
+ </outcome>
+ <outcome value='AddressPlanPolicyDG-Zone'>
+ <set>
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ <switch test='`$split-index == 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.final.key-value'
+ value="`$tmp.final.key-value + ':' + $tmp.key-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-name'
+ value='`$tmp.getPlanTopologyResponse.key-name`' />
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-value'
+ value='`$tmp.final.key-value`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-output.pools_length'
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-allottedresource-id.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-allottedresource-id.xml
new file mode 100644
index 0000000..b6792ad
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-allottedresource-id.xml
@@ -0,0 +1,68 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="generate-allottedresource-id" mode="sync">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.local-variables.generate-allottedresource-id." value="" />
+ <parameter name="tmp.return.generate-allottedresource-id." value="" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-allottedresource-id.id" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <!-- Used to work around execute node bug -->
+ <parameter name="execute_failure" value="false" />
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+ </return>
+ </outcome>
+ </execute>
+ <for atomic="true" index="n" start="0" end="1" >
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $cto-api.service-type AND
+ service-instance.service-instance-id = $cto-api.port-mirror-configuration-instance-id AND
+ allotted-resource.id = $tmp.return.generate-allottedresource-id.id"
+ local-only="false"
+ pfx="tmp.local-variables.generate-allottedresource-id.ALLOTTEDRESOURCE" >
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local-variables.generate-allottedresource-id.is-unique" value="0" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-allottedresource-id.id" />
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-allottedresource-id" value="An error occured while generating a UUID for ALLOTTED-RESOURCE." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-allottedresource-id" value="`'An error occured while checking if a generated allotted-resource-id was unique. allotted-resource-id = ' + $tmp.local-variables.generate-allottedresource-id.id`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-allottedresource-id" value="`'An error occured while checking if a generated allotted-resource-id was unique. allotted-resource-id = ' + $tmp.local-variables.generate-allottedresource-id.id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ <set>
+ <parameter name="tmp.local-variables.generate-allottedresource-id." value="" />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml
new file mode 100644
index 0000000..928e3a8
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml
@@ -0,0 +1,67 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="generate-host-routes-host-route-id" mode="sync">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.local-variables.generate-host-routes-host-route-id." value="" />
+ <parameter name="tmp.return.generate-host-routes-host-route-id." value="" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-host-routes-host-route-id.uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <!-- Used to work around execute node bug -->
+ <parameter name="execute_failure" value="false" />
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+ </return>
+ </outcome>
+ </execute>
+ <for atomic="true" index="s" start="0" end="1" >
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.local.network-id
+ AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid
+ AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid"
+ local-only="false"
+ pfx="tmp.local-variables.generate-host-routes-host-route-id.HOST_ROUTE" >
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local-variables.generate-host-routes-host-route-id.is-unique" value="0" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-host-routes-host-route-id.uuid" />
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-host-routes-host-route-id" value="An error occured while generating a UUID for HOST_ROUTE." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-host-routes-host-route-id" value="`'An error occured while checking if a generated host-routes-host-route-id was unique. host-route-id = ' + $tmp.local-variables.generate-host-routes-host-route-id.uuid`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-host-routes-host-route-id" value="`'An error occured while checking if a generated host-routes-host-route-id was unique. host-route-id = ' + $tmp.local-variables.generate-host-routes-host-route-id.uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ <set>
+ <parameter name="tmp.local-variables.generate-host-routes-host-route-id." value="" />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-l3network-network-id.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-l3network-network-id.xml
new file mode 100644
index 0000000..e44c148
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-l3network-network-id.xml
@@ -0,0 +1,65 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="generate-l3network-network-id" mode="sync">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.local-variables.generate-l3network-network-id." value="" />
+ <parameter name="tmp.return.generate-l3network-network-id." value="" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <!-- Used to work around execute node bug -->
+ <parameter name="execute_failure" value="false" />
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+ </return>
+ </outcome>
+ </execute>
+ <for atomic="true" index="n" start="0" end="1" >
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"
+ local-only="false"
+ pfx="tmp.local-variables.generate-l3network-network-id.L3NETWORK" >
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local-variables.generate-l3network-network-id.is-unique" value="0" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" />
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ <set>
+ <parameter name="tmp.local-variables.generate-l3network-network-id." value="" />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-panorama-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-panorama-name.xml
new file mode 100644
index 0000000..b31a9ff
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-panorama-name.xml
@@ -0,0 +1,136 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generate-panorama-name' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.trust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_T' />
+ <parameter name='tmp.untrust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_U' />
+ </set>
+ <set>
+ <parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$original-name`" />
+ <parameter name="regex" value="\."/>
+ <parameter name="limit" value="2" />
+ <parameter name="ctx_memory_result_key" value="splits" />
+ </execute>
+ <switch test='`$splits_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='new-name' value='`$splits[0]`' />
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <set>
+ <parameter name='new-name' value='`$splits[1]`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unexpected network role used for panorama naming' />
+ </return>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >
+ <parameter name="source" value="`$new-name`" />
+ <parameter name="outputPath" value="tmp.strlen"/>
+ </execute>
+ <switch test='`$tmp.strlen > 14`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >
+ <parameter name="string" value="`$new-name`" />
+ <parameter name="result" value="new-name"/>
+ <parameter name="begin-index" value="0" />
+ <parameter name="end-index" value="14" />
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='new-name' value='`$new-name`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.trust-sz`"/>
+ <parameter name="outputPath" value="tmp.trust-sz"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$new-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.untrust-sz`"/>
+ <parameter name="outputPath" value="tmp.untrust-sz"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$new-name`"/>
+ </execute>
+ <set>
+ <parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$original-name`" />
+ <parameter name="regex" value="\."/>
+ <parameter name="limit" value="2" />
+ <parameter name="ctx_memory_result_key" value="splits" />
+ </execute>
+ <switch test='`$splits_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='new-name' value='`$splits[0]`' />
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <set>
+ <parameter name='new-name' value='`$splits[1]`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Unexpected network role used for panorama naming' />
+ </return>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >
+ <parameter name="source" value="`$new-name`" />
+ <parameter name="outputPath" value="tmp.strlen"/>
+ </execute>
+ <switch test='`$tmp.strlen > 14`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >
+ <parameter name="string" value="`$new-name`" />
+ <parameter name="result" value="new-name"/>
+ <parameter name="begin-index" value="0" />
+ <parameter name="end-index" value="14" />
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='new-name' value='`$new-name`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.trust-sz`"/>
+ <parameter name="outputPath" value="tmp.trust-sz"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$new-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.untrust-sz`"/>
+ <parameter name="outputPath" value="tmp.untrust-sz"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$new-name`"/>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml
new file mode 100644
index 0000000..14ba7fe
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml
@@ -0,0 +1,66 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="generate-subnets-subnet-id" mode="sync">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" />
+ <parameter name="tmp.return.generate-subnets-subnet-id." value="" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <!-- Used to work around execute node bug -->
+ <parameter name="execute_failure" value="false" />
+ <!-- return parameters -->
+ <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+ </return>
+ </outcome>
+ </execute>
+ <for atomic="true" index="s" start="0" end="1" >
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.local.network-id
+ AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid"
+ local-only="false"
+ pfx="tmp.local-variables.generate-subnets-subnet-id.SUBNETS" >
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local-variables.generate-subnets-subnet-id.is-unique" value="0" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" />
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-subnets-subnet-id" value="An error occured while generating a UUID for SUBNETS." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ <set>
+ <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-unique-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-unique-name.xml
new file mode 100644
index 0000000..7393842
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-unique-name.xml
@@ -0,0 +1,591 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generate-unique-name' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.error-message' value='' />
+ <parameter name='generate-unique-name-output.generated-name' value='' />
+ </set>
+ <switch test='`$generate-unique-name-input.supplied-name`'>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.name-table-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'
++ ' AND name = $generate-unique-name-input.supplied-name'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value="`'Error reading the ' + $generate-unique-name-input.name-table-index + ' table'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.sql' value="`'insert into GENERIC_RESOURCE_NAME values ( '
++ ' $generate-unique-name-input.name-table-type , $generate-unique-name-input.supplied-name , null , null, $generate-unique-name-input.service-instance-id )'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value="`'The name ' + $generate-unique-name-input.supplied-name + ' has already been used'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.index-table-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-name not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.index-table-prefix-column`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-prefix-column not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.name-table-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.prefix`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.gun.list-end' value='100000' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.gun.list-end' value='0' />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.gun.list-end' value='10' />
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <set>
+ <parameter name='tmp.gun.list-end' value='100' />
+ </set>
+ </outcome>
+ <outcome value='3'>
+ <set>
+ <parameter name='tmp.gun.list-end' value='1000' />
+ </set>
+ </outcome>
+ <outcome value='4'>
+ <set>
+ <parameter name='tmp.gun.list-end' value='10000' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.noindex-flag' value='false' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.sql' value="`'SELECT * from ' + $generate-unique-name-input.index-table-name
++ ' WHERE ' + $generate-unique-name-input.index-table-prefix-column + ' = '
++ '$generate-unique-name-input.prefix'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='tmp.gun.prefixdb'>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='tmp.gun.index-exists' value='true' />
+ </set>
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.gun.index-number' value='`$tmp.gun.prefixdb.index-number + 1`' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='tmp.gun.index-number' value='0' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.noindex-flag' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='tmp.gun.index-exists' value='false' />
+ </set>
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='tmp.gun.index-number' value='0' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.noindex-flag' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.gun.index-number' value='1' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="`'Error reading the ' + $generate-unique-name-input.index-table-name + ' table'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.gun.found-flag' value='false' />
+ </set>
+ <block>
+ <for index='tmp.gun.idx' start='`$tmp.gun.index-number`' end='`$tmp.gun.list-end`' >
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <switch test='`$tmp.gun.idx &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='3'>
+ <switch test='`$tmp.gun.idx &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.gun.idx &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='4'>
+ <switch test='`$tmp.gun.idx &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '000' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.gun.idx &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.gun.idx &lt; 1000`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'
++ ' AND name = $tmp.gun.generated-name'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.error-message' value="`'Error reading the GENERIC_RESOURCE_NAME table'`" />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.found-flag' value='true' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ <switch test='`$tmp.gun.noindex-flag`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.index-string' value='0' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix`' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'
++ ' AND name = $tmp.gun.generated-name'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.error-message' value="`'Error reading the GENERIC_RESOURCE_NAME table'`" />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.found-flag' value='true' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.found-flag' value='true' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'></return>
+ </block>
+ <switch test='`$generate-unique-name-output.error-message`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'></return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.gun.found-flag`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />
+ </set>
+ <switch test='`$tmp.gun.index-exists`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.sql' value="`'update ' + $generate-unique-name-input.index-table-name
++ ' set index_number = ' + $tmp.gun.index-string + ' where '
++ $generate-unique-name-input.index-table-prefix-column
++ ' = $generate-unique-name-input.prefix'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`" />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.sql' value="`'insert into ' + $generate-unique-name-input.index-table-name
++ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('
++ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`" />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.sql'
+ value="`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />
+ </return>
+ </outcome>
+ </save>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$tmp.gun.noindex-flag`'>
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="naming exhausted for input with index-length = 0" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="We have exhausted the naming index count" />
+ </return>
+ </outcome>
+ </switch>
+ <block>
+ <for index='tmp.gun.idx' start='1' end='`$tmp.gun.index-number`' >
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.index-length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <switch test='`$tmp.gun.idx &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='3'>
+ <switch test='`$tmp.gun.idx &lt; 10`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.gun.idx &lt; 100`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.namedb.name' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'
++ ' AND name = $tmp.gun.generated-name'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.error-message' value="Error reading the GENERIC_RESOURCE_NAME table" />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.found-flag' value='true' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ <return status='success'></return>
+ </block>
+ <switch test='`$generate-unique-name-output.error-message`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'></return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.gun.found-flag`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />
+ </set>
+ <switch test='`$tmp.gun.index-exists`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.sql' value="`'update ' + $generate-unique-name-input.index-table-name
++ ' set index_number = ' + $tmp.gun.index-string + ' where '
++ $generate-unique-name-input.index-table-prefix-column
++ ' = $generate-unique-name-input.prefix'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`" />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.gun.sql' value="`'insert into ' + $generate-unique-name-input.index-table-name
++ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('
++ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`" />
+ </return>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.sql'
+ value="`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.gun.sql`" pfx='pfx'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />
+ </return>
+ </outcome>
+ </save>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name="generate-unique-name-output.error-message" value="We have exhausted the naming index count" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml
new file mode 100644
index 0000000..1a981fa
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml
@@ -0,0 +1,65 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="generate-vpn-binding-id" mode="sync">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.local-variables.generate-vpn-binding-id." value="" />
+ <parameter name="tmp.return.generate-vpn-binding-id." value="" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-vpn-binding-id.uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <!-- Used to work around execute node bug -->
+ <parameter name="execute_failure" value="false" />
+ <!-- return parameters -->
+ <parameter name="error-message.generate-vpn-binding-id" value="An error occured while generating a UUID for VPN-BINDING." />
+ </return>
+ </outcome>
+ </execute>
+ <for atomic="true" index="n" start="0" end="1" >
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-binding.vpn-id = $tmp.return.generate-vpn-binding-id.uuid"
+ local-only="false"
+ pfx="tmp.local-variables.generate-vpn-binding-id.VPNBINDING" >
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local-variables.generate-vpn-binding-id.is-unique" value="0" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate-vpn-binding-id.uuid" />
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-vpn-binding-id" value="An error occured while generating a UUID for VPN-BINDING." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-vpn-binding-id" value="`'An error occured while checking if a generated vpn-binding-id was unique. vpn-id = ' + $tmp.local-variables.generate-vpn-binding-id.uuid`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <!-- return parameters -->
+ <parameter name="error-message.generate-vpn-binding-id" value="`'An error occured while checking if a generated vpn-binding-id was unique. vpn-id = ' + $tmp.local-variables.generate-vpn-binding-id.uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </for>
+ <set>
+ <parameter name="tmp.local-variables.generate-vpn-binding-id." value="" />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml
new file mode 100644
index 0000000..3ee1bbc
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml
@@ -0,0 +1,108 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-notification-activate' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.gc-configuration`"/>
+ <parameter name="outputPath" value="tmp.gc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'
+ value='Active' />
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'
+ value='CreateGenericConfigurationInstance' />
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'
+ value='activate' />
+ </set>
+ <set>
+ <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="`$generic-configuration-notification-input.ack-final-indicator`" />
+ <parameter name="input.response-code"
+ value="`$generic-configuration-notification-input.response-code`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml
new file mode 100644
index 0000000..5db9776
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml
@@ -0,0 +1,485 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-notification-assign' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.gc-configuration`"/>
+ <parameter name="outputPath" value="tmp.gc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$generic-configuration-notification-input.response-code`'>
+ <outcome value='Other'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="`$generic-configuration-notification-input.ack-final-indicator`" />
+ <parameter name="input.response-code"
+ value="`$generic-configuration-notification-input.response-code`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$generic-configuration-notification-input.response-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='200'>
+ <block></block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.provided-configurations.provided-configuration_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-provided-configuration' value='false' />
+ </set>
+ <set>
+ <parameter name='pc-index' value='0' />
+ </set>
+ <for silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >
+ <switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-provided-configuration' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-provided-configuration`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration_length'
+ value='`$service-data.provided-configurations.provided-configuration_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-id'
+ value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-type'
+ value='`$generic-configuration-notification-input.configuration-information.configuration-type`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-sub-type'
+ value='`$generic-configuration-notification-input.configuration-information.configuration-sub-type`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-topology-link'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $generic-configuration-notification-input.service-information.service-instance-id
+ + '/service-data/provided-configurations/provided-configuration/'
+ + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf-sub-interface-group`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{vnfc-instance-group-function}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{network-instance-group-function}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.vsig-url"/>
+ <parameter name="target" value="{parent-port-role}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.parent-port-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-vsig" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >
+ <for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >
+ <for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >
+ <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id
+ == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'
+ value='assigned' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'
+ value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-customer-bonding-request' value='false' />
+ </set>
+ <for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-customer-bonding-request' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-customer-bonding-request`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'
+ value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />
+ </set>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'
+ value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-vsig" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Failure writing vnf-sub-interface-group" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure writing vnf-sub-interface-group" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-instance-group-network`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{network-instance-group-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.nign-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-nign" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'
+ value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-customer-bonding-request' value='false' />
+ </set>
+ <set>
+ <parameter name='cbr-index' value='0' />
+ </set>
+ <for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-customer-bonding-request' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-customer-bonding-request`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'
+ value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />
+ </set>
+ <set>
+ <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'
+ value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='mdsal-nign.network[0].network-status' value='assigned' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-nign" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Failure writing network-instance-group network" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure writing network-instance-group network" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'
+ value='Created' />
+ </set>
+ <set>
+ <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Error updating md-sal for gc-configuration" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Error updating md-sal for gc-configuration" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="`$generic-configuration-notification-input.ack-final-indicator`" />
+ <parameter name="input.response-code"
+ value="`$generic-configuration-notification-input.response-code`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml
new file mode 100644
index 0000000..88fcf35
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml
@@ -0,0 +1,108 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-notification-deactivate' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.gc-configuration`"/>
+ <parameter name="outputPath" value="tmp.gc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'
+ value='PendingDelete' />
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'
+ value='DeleteGenericConfigurationInstance' />
+ <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'
+ value='deactivate' />
+ </set>
+ <set>
+ <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="`$generic-configuration-notification-input.ack-final-indicator`" />
+ <parameter name="input.response-code"
+ value="`$generic-configuration-notification-input.response-code`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml
new file mode 100644
index 0000000..a3c5fff
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml
@@ -0,0 +1,353 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-notification-unassign' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >
+ <switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='pc2-index' start='`$pc-index + 1`' end='`$service-data.provided-configurations.provided-configuration_length`' >
+ <block>
+ <set>
+ <parameter name='prev-index' value='`$pc2-index - 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration[$prev-index].'
+ value='`$service-data.provided-configurations.provided-configuration[$pc2-index].`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration_length'
+ value='`$service-data.provided-configurations.provided-configuration_length - 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.gc-configuration`"/>
+ <parameter name="outputPath" value="tmp.gc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$generic-configuration-notification-input.response-code`'>
+ <outcome value='Other'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="`$generic-configuration-notification-input.ack-final-indicator`" />
+ <parameter name="input.response-code"
+ value="`$generic-configuration-notification-input.response-code`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$generic-configuration-notification-input.response-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='200'>
+ <block></block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf-sub-interface-group`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{vnfc-instance-group-function}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{network-instance-group-function}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.vsig-url"/>
+ <parameter name="target" value="{parent-port-role}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.parent-port-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-vsig" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >
+ <for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >
+ <for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >
+ <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id
+ == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'
+ value='unassigned' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <block>
+ <set>
+ <parameter name='prev-index' value='`$cbr2-index - 1`' />
+ </set>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'
+ value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'
+ value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length - 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-vsig" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Failure writing vnf-sub-interface-group" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure writing vnf-sub-interface-group" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-instance-group-network`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{network-instance-group-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.nign-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-nign" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='mdsal-nign.network[0].network-status' value='unassigned' />
+ </set>
+ <for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id
+ == $generic-configuration-notification-input.configuration-information.configuration-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >
+ <block>
+ <set>
+ <parameter name='prev-index' value='`$cbr2-index - 1`' />
+ </set>
+ <set>
+ <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'
+ value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'
+ value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length - 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-nign" />
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url"
+ value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator"
+ value="Y" />
+ <parameter name="input.response-code"
+ value="500" />
+ <parameter name="input.response-message"
+ value="Failure writing network-instance-group network" />
+ <parameter name="input.svc-request-id"
+ value="`$generic-configuration-notification-input.svc-request-id`" />
+ <parameter name="input.service-information.service-type"
+ value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id"
+ value="`$generic-configuration-notification-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure writing network-instance-group network" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification.xml
new file mode 100644
index 0000000..34bfcec
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-notification.xml
@@ -0,0 +1,39 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-notification' mode='sync'>
+ <block atomic="true">
+ <switch test='`$generic-configuration-notification-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-assign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='activate'>
+ <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-activate' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='deactivate'>
+ <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-deactivate' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='unassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-unassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml
new file mode 100644
index 0000000..56f0d74
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml
@@ -0,0 +1,117 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='generic-configuration-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-generic-configuration-input' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <set>
+ <parameter name='gc.configuration-id'
+ value='`$generic-configuration-topology-operation-input.configuration-information.configuration-id`' />
+ <parameter name='gc.configuration-data.configuration-operation-information.sdnc-request-header.'
+ value='`$generic-configuration-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='gc.configuration-data.configuration-operation-information.request-information.'
+ value='`$generic-configuration-topology-operation-input.request-information.`' />
+ <parameter name='gc.configuration-data.configuration-operation-information.service-information.'
+ value='`$generic-configuration-topology-operation-input.service-information.`' />
+ <parameter name='gc.configuration-data.configuration-operation-information.configuration-information.'
+ value='`$generic-configuration-topology-operation-input.configuration-information.`' />
+ <parameter name='gc.configuration-data.configuration-operation-information.gc-request-input.'
+ value='`$generic-configuration-topology-operation-input.gc-request-input.`' />
+ </set>
+ <set>
+ <parameter name='gc.configuration-data.configuration-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='gc.configuration-data.configuration-oper-status.last-rpc-action'
+ value='assign' />
+ <parameter name='gc.configuration-data.configuration-oper-status.last-action'
+ value='CreateGenericConfigurationInstance' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.gc-configuration`"/>
+ <parameter name="outputPath" value="tmp.gc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$gc.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-gc" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Error updating md-sal for gc-configuration' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='notification-url'
+ value="`$prop.controller.url + '/restconf/operations/GENERIC-RESOURCE-API:generic-configuration-notification'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.bondingservice.server + $prop.bondingservice.uri`"/>
+ <parameter name="outputPath" value="tmp.bs-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.bondingservice.templatefile`" />
+ <parameter name='restapiUrl' value='`$tmp.bs-url`' />
+ <parameter name='restapiUser' value='`$prop.bondingservice.user`' />
+ <parameter name='restapiPassword' value='`$prop.bondingservice.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="bonding-service-response" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.bondingservice.authorization`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Error calling bonding service; ' + $error-message`" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-data.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-genconfig.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="`$bonding-service-response.ackFinalIndicator`" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml
new file mode 100644
index 0000000..07a0486
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml
@@ -0,0 +1,181 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='get-complex-resource-service-model' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from COMPLEX_RESOURCE
+ WHERE customization_uuid = $get-complex-resource-service-model-input.customization-uuid'
+ pfx='db.complex-resource'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ATTRIBUTE_VALUE_PAIR
+ WHERE resource_uuid = $db.complex-resource.uuid
+ and resource_type = $db.complex-resource.type'
+ pfx='db.av-pair'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No attribute found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No attribute found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <for silentFailure='true' index='idx' start='0' end='`$db.av-pair_length`' >
+ <block atomic='true'>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_function' `">
+ <outcome value='true'>
+ <set>
+ <parameter name='get-complex-resource-service-model-output.cr-function' value='`$db.sdn-circuit-req[$idx].attribute-value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_role'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.cr-role" value="`$db.sdn-circuit-req[$idx].attribute-value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_type'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.cr-type" value="`$db.sdn-circuit-req[$idx].attribute-value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_function'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.network-collection-function" value="`$db.sdn-circuit-req[$idx].attribute-value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_description'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.network-collection-description" value="`$db.sdn-circuit-req[$idx].attribute-value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'subinterface_network_quantity'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.subinterface-network-quantity" value="`$db.sdn-circuit-req[$idx].attribute-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL
+ WHERE complex_resource_uuid = $db.complex-resource.uuid'
+ pfx='db.network-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No network model found" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No network model found" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from RESOURCE_POLICY_TO_TARGET_NODE_MAPPING
+ WHERE target_node_uuid = $db.network-model.uuid
+ AND target_node_customization_uuid = db.network-model.customization-uuid'
+ pfx='db.respoltargetnodemap' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No resource_policy_to_target_node_mapping found" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No resource_policy_to_target_node_mapping found" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="SELECT * from RESOURCE_POLICY
+ WHERE policy_uuid = $db.respoltargetnodemap.policy_uuid
+ and policy_type = 'ecomp.policies.External' "
+ pfx='db.resource-policy'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <for silentFailure='true' index='idx' start='0' end='`$db.resource-policy_length`' >
+ <block atomic='true'>
+ <switch test="`$db.resource-policy[$idx].property-type == 'Name' and $db.resource-policy[$idx].property-name == 'Network Collection Name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.network-naming-policy" value="`$db.resource-policy[$idx].policy-name`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.resource-policy[$idx].property-type == 'subnetwork assignments' and $db.resource-policy[$idx].property-name == 'subnet'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.subnet-assignment-policy" value="`$db.resource-policy[$idx].policy-name`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$db.resource-policy[$idx].property-type == 'network assignments' and $db.resource-policy[$idx].property-name == 'route target'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="get-complex-resource-service-model-output.vpn-binding-policy" value="`$db.resource-policy[$idx].policy-name`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </get-resource>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-data-from-policy.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-data-from-policy.xml
new file mode 100644
index 0000000..2c825d6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-data-from-policy.xml
@@ -0,0 +1,204 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='get-data-from-policy' mode='sync'>
+ <block atomic='true'>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: read properties file."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: Could not read properties file."/>
+ <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='501' />
+ <parameter name='error-message' value='get-data-from-policy: could not read generic-resource-api properties' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$get-data-from-policy-input.policy-instance-name`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: input.policy-instance-name is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='507' />
+ <parameter name='error-message' value='get-data-from-policy: input.policy-instance-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.policy-name' value="`$get-data-from-policy-input.policy-instance-name`" />
+ </set>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: restapi-call-node Call Policy Manager getPolicy"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <parameter name="responsePrefix" value="tmp.pm-response" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: Error calling Policy Manager getPolicy"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: getPolicy SUCCESS"/>
+ <parameter name='field3' value='`$tmp.pm-response.type`' />
+ <parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />
+ <parameter name='field5' value='`$tmp.pm-response.config`' />
+ <parameter name='field6' value='`$tmp.pm-response.response-code`' />
+ <parameter name='field7' value='`$tmp.pm-response.response-message`' />
+ </record>
+ <set>
+ <parameter name='policy-config' value="`$tmp.pm-response.config`" />
+ </set>
+ <switch test='`$tmp.pm-response.response-code`'>
+ <outcome value='500'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: Error calling Policy Manager getPolicy"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: call jsonStringToCtx"/>
+ <parameter name='field3' value='`$policy-config`' />
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="policy-config" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: Error calling jsonStringToCtx"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='504' />
+ <parameter name='error-message' value='get-data-from-policy: failed to parse Policy Manger getPolicy response' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: jsonStringToCtx SUCCESS: policyName|policy-data|"/>
+ <parameter name='field3' value='`$jsonContextPrefix.policyName`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.policy-data`' />
+ </record>
+ <switch test='`$jsonContextPrefix.content.policy-data_length > 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <for index='policyDataIndex' start='0' end='`$jsonContextPrefix.content.policy-data_length`' >
+ <set>
+ <parameter name="`'get-data-from-policy-output[' + $policyDataIndex + ']'`." value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: policyDataIndex|nf-role|rule-1|rule-2:"/>
+ <parameter name='field3' value='`$policyDataIndex`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].nf-role`' />
+ <parameter name='field5' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-1`' />
+ <parameter name='field6' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-2`' />
+ </record>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$jsonContextPrefix.content.policy-data.extended-params_length > 0`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <for index='policyDataExtendedParamsIndex' start='0' end='`$jsonContextPrefix.content.policy-data.extended-params_length`' >
+ <set>
+ <parameter name='output-param-name' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-name`' />
+ <parameter name='output-param-value' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-value`' />
+ </set>
+ <set>
+ <parameter name="`'get-data-from-policy-output.' + $output-param-name`" value="`$output-param-value`" />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: policyDataExtendedParamsIndex|output-param-name|output-param-value:"/>
+ <parameter name='field3' value='`$policyDataExtendedParamsIndex`' />
+ <parameter name='field4' value='`$output-param-name`' />
+ <parameter name='field5' value='`$output-param-value`' />
+ </record>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='get-data-from-policy-output.' value='`$jsonContextPrefix.content.policy-data.`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: get-data-from-policy: get-data-from-policy-output.:"/>
+ <parameter name='field3' value='`$get-data-from-policy-output.`' />
+ </record>
+ </block>
+ </outcome>
+ </execute>
+ <return status='success'></return>
+ </block>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml
new file mode 100644
index 0000000..be34b3b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml
@@ -0,0 +1,17 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='get-tunnelxconn-ar' mode='sync'>
+<block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='tunnelxconn-allotted-resources' pfx='tmp.tunnel-ar.data' >
+</get-resource><for index='tunnelidx' start='0' end='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >
+
+
+<block>
+<set>
+<parameter name='tmp.printout.consuming-service-instance-id' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />
+<parameter name='tmp.printout.index' value='`$tunnelidx`' />
+</set><switch test='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id == $tmp.ar.consuming-service-instance-id`'>
+
+
+<outcome value='true'>
+<block>
+<set>
+<parameter name='tmp.tunnelxconn-ar.' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].`' />
+</set></block></outcome></switch></block></for></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml
new file mode 100644
index 0000000..a844fa5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml
@@ -0,0 +1,31 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='get-vnf-api-parent-instance' mode='sync'>
+<block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >
+</get-resource><for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >
+
+
+<block>
+<set>
+<parameter name='tmp.debug.tmp.search.parent-service-instance-id' value='`$tmp.search.parent-service-instance-id`' />
+</set><switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.search.parent-service-instance-id`'>
+
+
+<outcome value='true'>
+<block>
+<set>
+<parameter name='tmp.debug.service-instance.id1' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id`' />
+<parameter name='tmp.debug.service-instance.id2' value='`$tmp.search.parent-service-instance-id`' />
+<parameter name='tmp.debug.service-instance.id3.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />
+
+
+
+</set><set>
+<parameter name='tmp.old-service-data.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />
+</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs/vnf-list/$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id/service-data/' pfx='parent-service-instance' >
+
+ <outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`" />
+</return></outcome></get-resource><break></break></block></outcome></switch></block></for></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml
new file mode 100644
index 0000000..0fb35de
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml
@@ -0,0 +1,1912 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-composite-match-pair' mode='sync'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/gpsc.log' />
+ </execute>
+ <for index='left-node-index' start='0' end='`$serv-cust_length - 1`' >
+ <block>
+ <set>
+ <parameter name='right-node-index' value='`$left-node-index + 1`' />
+ </set>
+ <for silentFailure='true' index='left-serv-index' start='0' end='`$serv-cust[$left-node-index].serv-insts_length`' >
+ <block>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length' value='0' />
+ </set>
+ <for silentFailure='true' index='right-serv-index' start='0' end='`$serv-cust[$right-node-index].serv-insts_length`' >
+ <block>
+ <switch test='`$match-type`'>
+ <outcome value='network-name'>
+ <block>
+ <set>
+ <parameter name='found-match' value='false' />
+ </set>
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ <parameter name='left-vnf-index' value='0' />
+ <parameter name='right-vnf-index' value='0' />
+ </set>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == 'oam'`">
+ <outcome value='false'>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ <parameter name='left-vnf-index' value='0' />
+ <parameter name='right-vnf-index' value='0' />
+ </set>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == 'oam'`">
+ <outcome value='false'>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id
+ == 1`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$right-vnf-instance-id
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >
+ <block>
+ <for index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$right-vnf-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='0'>
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ <parameter name='left-vnf-index' value='0' />
+ <parameter name='right-vnf-index' value='0' />
+ </set>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == 'oam'`">
+ <outcome value='false'>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ <parameter name='left-vnf-index' value='0' />
+ <parameter name='right-vnf-index' value='0' />
+ </set>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == 'oam'`">
+ <outcome value='false'>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id
+ == 1`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$right-vnf-instance-id
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >
+ <block>
+ <for index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$right-vnf-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >
+ <block>
+ <set>
+ <parameter name='max-seq' value='-1' />
+ </set>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id
+ &gt; $max-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-seq'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />
+ <parameter name='left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$left-vnf-instance-id
+ == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$left-vnf-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ </outcome>
+ <outcome value='0'>
+ <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >
+ <block>
+ <set>
+ <parameter name='max-seq' value='-1' />
+ </set>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id
+ &gt; $max-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-seq'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />
+ <parameter name='left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$left-vnf-instance-id
+ == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$left-vnf-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >
+ <block>
+ <set>
+ <parameter name='max-seq' value='-1' />
+ </set>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id
+ &gt; $max-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-seq'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />
+ <parameter name='left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$left-vnf-instance-id
+ == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >
+ <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`'>
+ <outcome value=''>
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id
+ == 1`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$right-vnf-instance-id
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index'
+ value='`$right-vnf-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='right-vnf-index'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />
+ </set>
+ <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >
+ <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id
+ == 1`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >
+ <block>
+ <switch test='`$right-vnf-instance-id
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index'
+ value='`$right-vnf-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='right-vnf-index'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />
+ </set>
+ <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='right-vnf-index'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />
+ </set>
+ <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'
+ value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />
+ <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'
+ value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$found-match`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/gpsd.log' />
+ </execute>
+ <set>
+ <parameter name='path-index' value='0' />
+ </set>
+ <for silentFailure='true' index='first-serv-index' start='0' end='`$serv-cust[0].serv-insts_length`' >
+ <switch test='`$serv-cust[0].serv-insts[$first-serv-index].path-segments_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='cur-vnf-seq' value='1' />
+ </set>
+ <set>
+ <parameter name='end-to-end-path' value='false' />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.service-path-instance-id" />
+ </execute>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='`$tmp.service-path-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service-path-instance-name'
+ value='`$db.path-segment[0].path-name + $tmp.service-path-instance-id`' />
+ </set>
+ <switch test='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length' value='1' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'
+ value='1' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='cur-vnf-seq' value='`$cur-vnf-seq + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length' value='1' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'
+ value='1' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='cur-vnf-seq' value='`$cur-vnf-seq + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='max-vnf-seq' value='-1' />
+ <parameter name='max-vnf-idx' value='-1' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length' value='1' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'
+ value='1' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id
+ &gt; $max-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='max-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='cur-vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-name'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-role'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'
+ value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='next-service-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-service-instance-id`' />
+ <parameter name='prev-network-name' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />
+ <parameter name='next-vnf-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vnf-instance-id`' />
+ <parameter name='next-vf-module-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vf-module-id`' />
+ </set>
+ <for index='node-index' start='1' end='`$serv-cust_length`' >
+ <block>
+ <set>
+ <parameter name='found-match' value='false' />
+ </set>
+ <for index='serv-index' start='0' end='`$serv-cust[$node-index].serv-insts_length`' >
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments_length`'>
+ <outcome value=''>
+ <switch test='`$node-index == $serv-cust_length - 1`'>
+ <outcome value='false'>
+ <block></block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id
+ == $next-service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <switch test='`$node-index == $serv-cust_length - 1`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='min-vnf-seq' value='99' />
+ <parameter name='min-vnf-idx' value='99' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &lt; $min-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='min-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'
+ value='`$prev-network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='end-to-end-path' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='max-vnf-seq' value='-1' />
+ <parameter name='max-vnf-idx' value='-1' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &gt; $max-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='max-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='0'>
+ <switch test='`$node-index == $serv-cust_length - 1`'>
+ <outcome value='false'>
+ <block></block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id
+ == $next-service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <switch test='`$node-index == $serv-cust_length - 1`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='min-vnf-seq' value='99' />
+ <parameter name='min-vnf-idx' value='99' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &lt; $min-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='min-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'
+ value='`$prev-network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='end-to-end-path' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='max-vnf-seq' value='-1' />
+ <parameter name='max-vnf-idx' value='-1' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &gt; $max-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='max-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id
+ == $next-service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <switch test='`$node-index == $serv-cust_length - 1`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$next-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$next-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='min-vnf-seq' value='99' />
+ <parameter name='min-vnf-idx' value='99' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &lt; $min-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='min-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'
+ value='`$prev-network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='end-to-end-path' value='true' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'
+ value='`$cur-vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='max-vnf-seq' value='-1' />
+ <parameter name='max-vnf-idx' value='-1' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service_length'
+ value='`$service-paths.service-path[$path-index].service_length + 1`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'
+ value='`$node-index + 1`' />
+ </set>
+ <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-seq'
+ value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'
+ value='`$vnf-seq`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />
+ </set>
+ <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id
+ &gt; $max-vnf-seq`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />
+ <parameter name='max-vnf-idx' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ </set>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'
+ value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='next-service-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-service-instance-id`' />
+ <parameter name='prev-network-name' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='next-vnf-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vnf-instance-id`' />
+ <parameter name='next-vf-module-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='cur-vnf-seq' value='`$max-vnf-seq + 1`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='path-index' value='`$path-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='service-paths.service-path_length' value='`$path-index`' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml
new file mode 100644
index 0000000..76b8df4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml
@@ -0,0 +1,627 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-create-composite-path' mode='sync'>
+ <block>
+ <set>
+ <parameter name='match-type' value='network-name' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'
+ pfx='db.path-segment[]'>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'System error reading PATH_SEGMENT table for uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ + ' and path '
+ + $db.forwarding-path[$path-index].path-name`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'No entries in PATH_SEGMENT table for uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ + ' and path '
+ + $db.forwarding-path[$path-index].path-name`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='serv-cust_length' value='0' />
+ </set>
+ <for index='path-segment-index' start='0' end='`$db.path-segment_length`' >
+ <block>
+ <set>
+ <parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />
+ <parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />
+ </set>
+ <switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>
+ <outcome value='true'>
+ <set>
+ <parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />
+ <parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for index='serv-index' start='0' end='`$serv-cust_length`' >
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select sm.invariant_uuid
+ from SERVICE_PROXY sp, SERVICE_MODEL sm
+ where sp.source_service_uuid = sm.service_uuid
+ and sp.customization_uuid = $serv-cust[$serv-index].id'
+ pfx='db'>
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`'Failure reading SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`'Cannot find entries in SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='serv-cust[$serv-index].inv-id' value='`$db.invariant-uuid`' />
+ </set>
+ </outcome>
+ </get-resource>
+ </for>
+ <for index='serv-index' start='0' end='`$serv-cust_length`' >
+ <switch test='`$serv-cust[$serv-index].inv-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="aai.service-instances" >
+ <parameter name="start[0]" value="`'nodes/service-instances?model-invariant-id=' + $serv-cust[$serv-index].inv-id`" />
+ <parameter name="start_length" value="1" />
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`'Unable to find runtime service instances for invariant UUID ' + $serv-cust[$serv-index].inv-id`" />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`'System error finding runtime service instances for customization UUID ' + $serv-cust[$serv-index].inv-id`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='tmp.serv-insts_length' value='0' />
+ </set>
+ <for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >
+ <switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>
+ <outcome value='Active'>
+ <block>
+ <set>
+ <parameter name='serv-inst.service-instance-id' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />
+ </set>
+ <switch test='`$output-global-customer-id`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource_and_url'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.si">
+ <parameter name="start[0]" value="`'nodes/service-instance/' + $serv-inst.service-instance-id `" />
+ <parameter name="start_length" value="1" />
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.AnAI-data.si.results[0].url`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="limit" value="11" />
+ <parameter name="ctx_memory_result_key" value="split" />
+ </execute>
+ <set>
+ <parameter name='output-global-customer-id' value='`$split[6]`' />
+ <parameter name='output-service-type' value='`$split[9]`' />
+ <parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <block>
+ <switch test='`$runtime-index`'>
+ <outcome value='0'>
+ <set>
+ <parameter name='service.service-role' value='`$aai.service-instances.results[0].service-instance.service-role`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='mdsal-service.' value='' />
+ <parameter name='serv-inst.api' value='' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$serv-inst.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-service" />
+ <outcome value='success'>
+ <block>
+ <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $serv-inst.service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $serv-inst.service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'
+ value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />
+ </set>
+ <set>
+ <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' ></call>
+ <switch test='`$serv-inst.api`'>
+ <outcome value=''>
+ <set>
+ <parameter name='data-error' value="`'Failure finding service instance ' + $si.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$serv-inst.vnf-list_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <block>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT forwarding_path_service_instance_id from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING WHERE simple_service_instance_id = $serv-inst.service-instance-id'
+ pfx='db.mapped-service-instance-id'>
+ <outcome value='failure'>
+ <set>
+ <parameter name='data-error' value="System error reading SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='data-error' value="`'No entry in SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table for service instance ' + $serv-inst.service-instance-id`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$db.mapped-service-instance-id.forwarding-path-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-service" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='data-error' value="`'Cannot find service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' in MD-SAL'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='data-error' value="`'Service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'
+ value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />
+ </set>
+ <set>
+ <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='serv-inst.' value='' />
+ </set>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='serv-cust[$serv-index].serv-insts_length' value='`$tmp.serv-insts_length`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-composite-match-pair' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/gpsx.log' />
+ </execute>
+ <switch test='`$service-paths.service-path_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='found-service-path' value='false' />
+ </set>
+ <for index='sp-index' start='0' end='`$service-paths.service-path_length`' >
+ <switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-service-path' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-service-path`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='error-message' value="`'No service paths found for path name '
+ + $db.path-segment[0].path-name`" />
+ </set>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />
+ </execute>
+ <set>
+ <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />
+ <parameter name='forwarding-path.forwarding-path-type' value='Service' />
+ <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />
+ </set>
+ <set>
+ <parameter name='forwarding-path.service-paths.' value='`$service-paths.`' />
+ </set>
+ <switch test='`$output-service-instance-id`'>
+ <outcome value=''>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.service-instance-id" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-sr" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $output-global-customer-id
+ AND service-subscription.service-type = $output-service-type
+ AND service-instance.service-instance-id = $tmp.service-instance-id" >
+ <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
+ <parameter name="global-customer-id" value="`$output-global-customer-id`" />
+ <parameter name="service-type" value="`$output-service-type`" />
+ <parameter name="service-role" value="`$output-service-role`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='output-service-instance-id' value='`$tmp.service-instance-id`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.service-instance-id" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-sr" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $output-global-customer-id
+ AND service-subscription.service-type = $output-service-type
+ AND service-instance.service-instance-id = $tmp.service-instance-id" >
+ <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
+ <parameter name="global-customer-id" value="`$output-global-customer-id`" />
+ <parameter name="service-type" value="`$output-service-type`" />
+ <parameter name="service-role" value="`$output-service-role`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='output-service-instance-id' value='`$tmp.service-instance-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.forwarding-path`"/>
+ <parameter name="outputPath" value="tmp.fp-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$output-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-fp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <for index='sp-index' start='0' end='`$service-paths.service-path_length`' >
+ <switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>
+ <outcome value='true'>
+ <block>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id" >
+ <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`" />
+ <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-name`" />
+ <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $output-service-instance-id
+ + '/forwarding-paths/forwarding-path/'
+ + $forwarding-path.forwarding-path-id
+ + '/services-paths/service-path/'
+ + $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/business/customers/customer/'
+ + $output-global-customer-id
+ + '/service-subscriptions/service-subscription/'
+ + $output-service-type
+ + '/service-instances/service-instance/'
+ + $output-service-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <for index='service-index' start='0' end='`$service-paths.service-path[$sp-index].service_length`' >
+ <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf_length`' >
+ <block>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id
+ AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >
+ <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id
+ AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/'
+ + $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml
new file mode 100644
index 0000000..71d3c77
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml
@@ -0,0 +1,749 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-create-simple-path' mode='sync'>
+ <block>
+ <set>
+ <parameter name='match-type' value='network-name' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'
+ pfx='db.path-segment[]'>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'System error reading PATH_SEGMENT table for uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ + ' and path '
+ + $db.forwarding-path[$path-index].path-name`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'No entries in PATH_SEGMENT table for uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
+ + ' and path '
+ + $db.forwarding-path[$path-index].path-name`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='vnf-ids_length' value='0' />
+ </set>
+ <for index='path-segment-index' start='0' end='`$db.path-segment_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />
+ <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />
+ </set>
+ <switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />
+ <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="aai.service-instances" >
+ <parameter name="start[0]" value="`'nodes/service-instances?model-invariant-id=' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name="start_length" value="1" />
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'No run-time service instances in AAI for invariant uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'System error calling AAI to get run-time service instances for invariant uuid '
+ + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='runtime_length' value='0' />
+ </set>
+ <for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >
+ <switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>
+ <outcome value='Active'>
+ <block>
+ <set>
+ <parameter name='runtime-ids[$runtime_length]' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='runtime_length' value='`$runtime_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='serv-insts_length' value='0' />
+ </set>
+ <for index='runtime-index' start='0' end='`$runtime_length`' >
+ <block>
+ <set>
+ <parameter name='serv-inst.service-instance-id' value='`$runtime-ids[$runtime-index]`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource_and_url'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.si">
+ <parameter name="start[0]" value="`'nodes/service-instance/' + $serv-inst.service-instance-id `" />
+ <parameter name="start_length" value="1" />
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.AnAI-data.si.results[0].url`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="limit" value="11" />
+ <parameter name="ctx_memory_result_key" value="split" />
+ </execute>
+ <set>
+ <parameter name='output-global-customer-id' value='`$split[6]`' />
+ <parameter name='output-service-type' value='`$split[9]`' />
+ <parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='mdsal-service.' value='' />
+ <parameter name='serv-inst.api' value='' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$serv-inst.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-service" />
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='found-path' value='false' />
+ </set>
+ <for silentFailure='true' index='fp-index' start='0' end='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`' >
+ <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path[$fp-index].forwarding-path-name
+ == $db.path-segment[0].path-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-path' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-path`'>
+ <outcome value='false'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>
+ <set>
+ <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select forwarding_path_service_instance_id
+ from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
+ where simple_service_instance_id = $serv-inst.service-instance-id'
+ pfx='db.sitcim'>
+ <outcome value='not-found'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' ></call>
+ <switch test='`$serv-inst.api`'>
+ <outcome value=''>
+ <set>
+ <parameter name='error-message' value="`'Failure finding service instance ' + $serv-inst.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />
+ </set>
+ <set>
+ <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-simple-match-pair' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/gps.log' />
+ </execute>
+ <for index='serv-index' start='0' end='`$serv-insts_length`' >
+ <switch test='`$serv-insts[$serv-index].api`'>
+ <outcome value='GR'>
+ <switch test='`$serv-insts[$serv-index].path-segments_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />
+ </execute>
+ <set>
+ <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />
+ <parameter name='forwarding-path.forwarding-path-type' value='VNF' />
+ <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />
+ <parameter name='forwarding-path.service-paths.service-path_length' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'
+ value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'
+ value='`$serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
+ value='`$serv-insts[$serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'
+ value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'
+ value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'
+ value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
+ </set>
+ <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >
+ <block>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'
+ value='`$ps-index + 1`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'
+ value='`$ps-index + 2`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
+ value='`$serv-insts[$serv-index].path-segments_length + 1`' />
+ </set>
+ <switch test='`$serv-insts[$serv-index].api`'>
+ <outcome value='GR'>
+ <set>
+ <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />
+ </set>
+ </outcome>
+ <outcome value='VNF'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.service-instance-id" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-sr" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $output-global-customer-id
+ AND service-subscription.service-type = $output-service-type
+ AND service-instance.service-instance-id = $tmp.service-instance-id" >
+ <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
+ <parameter name="global-customer-id" value="`$output-global-customer-id`" />
+ <parameter name="service-type" value="`$output-service-type`" />
+ <parameter name="service-role" value="`$output-service-role`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
+ (simple_service_instance_id, forwarding_path_service_instance_id)
+ VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.forwarding-path`"/>
+ <parameter name="outputPath" value="tmp.fp-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-fp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >
+ <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
+ <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />
+ <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tmp.service-instance-id
+ + '/forwarding-paths/forwarding-path/'
+ + $forwarding-path.forwarding-path-id
+ + '/services-paths/service-path/'
+ + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/business/customers/customer/'
+ + $output-global-customer-id
+ + '/service-subscriptions/service-subscription/'
+ + $output-service-type
+ + '/service-instances/service-instance/'
+ + $tmp.service-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >
+ <block>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >
+ <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id
+ AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/'
+ + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='VNF'>
+ <switch test='`$serv-insts[$serv-index].path-segments_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />
+ </execute>
+ <set>
+ <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />
+ <parameter name='forwarding-path.forwarding-path-type' value='VNF' />
+ <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />
+ <parameter name='forwarding-path.service-paths.service-path_length' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'
+ value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'
+ value='`$serv-insts[$serv-index].service-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
+ value='`$serv-insts[$serv-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'
+ value='1' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'
+ value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'
+ value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
+ </set>
+ <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >
+ <block>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'
+ value='`$ps-index + 1`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
+ <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'
+ value='`$ps-index + 2`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'
+ value='`$prev-network-name`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'
+ value='`$prev-network-role`' />
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'
+ value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
+ value='`$serv-insts[$serv-index].path-segments_length + 1`' />
+ </set>
+ <switch test='`$serv-insts[$serv-index].api`'>
+ <outcome value='GR'>
+ <set>
+ <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />
+ </set>
+ </outcome>
+ <outcome value='VNF'>
+ <block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.service-instance-id" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.service`"/>
+ <parameter name="outputPath" value="tmp.service-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-sr" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $output-global-customer-id
+ AND service-subscription.service-type = $output-service-type
+ AND service-instance.service-instance-id = $tmp.service-instance-id" >
+ <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
+ <parameter name="global-customer-id" value="`$output-global-customer-id`" />
+ <parameter name="service-type" value="`$output-service-type`" />
+ <parameter name="service-role" value="`$output-service-role`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure creating service instance in AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
+ (simple_service_instance_id, forwarding_path_service_instance_id)
+ VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.forwarding-path`"/>
+ <parameter name="outputPath" value="tmp.fp-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$tmp.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-fp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >
+ <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
+ <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />
+ <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tmp.service-instance-id
+ + '/forwarding-paths/forwarding-path/'
+ + $forwarding-path.forwarding-path-id
+ + '/services-paths/service-path/'
+ + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarding-path:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/business/customers/customer/'
+ + $output-global-customer-id
+ + '/service-subscriptions/service-subscription/'
+ + $output-service-type
+ + '/service-instances/service-instance/'
+ + $tmp.service-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >
+ <block>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >
+ <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder to AAI" />
+ </set>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="forwarder:relationship-list"
+ key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id
+ AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/'
+ + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
+ </set>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </get-resource>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml
new file mode 100644
index 0000000..1ae609a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml
@@ -0,0 +1,145 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-populate-from-grapi' mode='sync'>
+ <block>
+ <switch test='`$vnf-ids_length`'>
+ <outcome value=''>
+ <block>
+ <for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-network-list_length' value='0' />
+ </set>
+ <set>
+ <parameter name='vnf-ids-index' value='`$vnf-index`' />
+ </set>
+ <block>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-id' value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ </set>
+ <for silentFailure='true' index='vnf-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <for silentFailure='true' index='vf-module-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <for silentFailure='true' index='vm-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vm-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network_length`' >
+ <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role
+ == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network[$vm-network-index].network-role`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-name'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-role'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].vf-module-id'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='vnf-network-list_length' value='`$vnf-network-list_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list_length' value='`$vnf-network-list_length`' />
+ </set>
+ </block>
+ </block>
+ </for>
+ <set>
+ <parameter name='serv-inst.api' value='GR' />
+ </set>
+ <set>
+ <parameter name='serv-inst.vnf-list_length'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='mismatch' value='false' />
+ </set>
+ <for silentFailure='true' index='vnf-ids-index' start='0' end='`$vnf-ids_length`' >
+ <block>
+ <set>
+ <parameter name='vnf-network-list_length' value='0' />
+ </set>
+ <for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >
+ <switch test='`$vnf-ids[$vnf-ids-index] == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.onap-model-information.model-customization-uuid`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-id' value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ </set>
+ <for silentFailure='true' index='vnf-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <for silentFailure='true' index='vf-module-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <for silentFailure='true' index='vm-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vm-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network_length`' >
+ <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role
+ == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network[$vm-network-index].network-role`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-name'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-role'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].vf-module-id'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='vnf-network-list_length' value='`$vnf-network-list_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list_length' value='`$vnf-network-list_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-network-list_length == 0`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='matching-error' value="`'Unable to find VNF with customization UUID of ' + $vnf-ids[vnf-ids-index] + ' for service instance ' + $serv-inst.service-instance-id`" />
+ </set>
+ <set>
+ <parameter name='mismatch' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$mismatch`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='serv-inst.api' value='GR' />
+ </set>
+ <set>
+ <parameter name='serv-inst.vnf-list_length'
+ value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml
new file mode 100644
index 0000000..e84e426
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml
@@ -0,0 +1,569 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-populate-from-vnfapi' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name="serv-inst.api" value= ""/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: read properties file."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Could not read properties file."/>
+ <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>
+ </record>
+ <set>
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name="error-message" value="Could not read properties file" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$serv-inst.service-instance-id`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input service-instance-id is not set"/>
+ </record>
+ <set>
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name="error-message" value="serv-inst.service-instance-id is not set" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$match-type`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input match-type is not set"/>
+ </record>
+ <set>
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name="error-message" value="input match-type is not set" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-ids_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name="path-type" value= "COMPOSITE"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is blank, this is a COMPOSITE path"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name="path-type" value= "SIMPLE"/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is NOT blank, this is a SIMPLE path"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="vnfListIndex" value= "0"/>
+ </set>
+ <switch test='`$path-type`'>
+ <outcome value='SIMPLE'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids"/>
+ </record>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.vf-module-ids">
+ <parameter name="start[0]" value="`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `" />
+ <!--<parameter name="start[0]" value="`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `" />-->
+ <!--<parameter name="start[0]" value="`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `" />-->
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="/query/vfModule-fromServiceInstance" />
+ <!--<parameter name="query" value="/query/vnfs-fromServiceInstance" /> -->
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: vfModule-fromServiceInstance" />
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name='tmp.vf-module-ids_length' value='0' />
+ <parameter name='tmp.vnf-instances_length' value='0' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-message" value="No vfModules returned from AAI: vfModule-fromService-instance" />
+ <parameter name="serv-inst.api" value= ""/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >
+ <set>
+ <parameter name="`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name="tmp.triplet-list_length" value= "0" />
+ <parameter name="tmp.tripletListIndex" value= "0" />
+ <parameter name="tmp.vnf-instances_length" value= "0" />
+ <parameter name="tmp.vnfInstancesIndex" value= "0" />
+ <parameter name="tmp.mdsal-error-encountered" value= "false"/>
+ </set>
+ <for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >
+ <block>
+ <set>
+ <parameter name="tmp.vnf-url" value="`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="vnf-mdsal" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-message" value="Failed to read vnf info from MD-SAL" />
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name="tmp.mdsal-error-encountered" value= "true"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-message" value="Cannot find vnf info in MD-SAL" />
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name="tmp.mdsal-error-encountered" value= "true"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="`'tmp.vnf-instances[' + $tmp.vnfInstancesIndex + ']'`." value= '`$vnf-mdsal.vnf-list[0].`' />
+ <parameter name="genericVnfIdFound" value= 'false' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id|generic-vnf-id: "/>
+ <parameter name="field3" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.vnf-id`' />
+ <parameter name="field4" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`' />
+ </record>
+ <for index='tmp.tripletListIndex2' start='0' end='`$tmp.triplet-list_length`' >
+ <switch test='`$tmp.triplet-list[$tmp.tripletListIndex2].generic-vnf-id == $tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`'>
+ <outcome value='false'></outcome>
+ <outcome value='true'>
+ <set>
+ <parameter name="genericVnfIdFound" value= 'true' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$genericVnfIdFound`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].generic-vnf-id'`" value= '`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`' />
+ <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].vf-module-id'`" value= '`$tmp.vf-module-ids[$vfModuleIndex]`' />
+ <parameter name="tmp.triplet-list_length" value= '`$tmp.triplet-list_length + 1`'/>
+ <parameter name="tmp.tripletListIndex" value= '`$tmp.tripletListIndex + 1`'/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id in NOT found in triplet-list, add it"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id is already in triplet-list, don't add it"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.vnfInstancesIndex" value= '`$tmp.vnfInstancesIndex + 1`'/>
+ <parameter name="tmp.vnf-instances_length" value= '`$tmp.vnf-instances_length + 1`'/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ <switch test='`$tmp.mdsal-error-encountered`'>
+ <outcome value='false'>
+ <block>
+ <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >
+ <block>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id"
+ pfx='aai.generic-vnf' local-only='false' >
+ <outcome value='success'>
+ <switch test='`$aai.generic-vnf.model-customization-id`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: model-customization-id is BLANK for vf-module-id|generic-vnf-id: "/>
+ <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>
+ <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Set model-customization-id for vf-module-id|generic-vnf-id: "/>
+ <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>
+ <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>
+ <parameter name="field5" value='`$aai.generic-vnf.model-customization-id`'/>
+ </record>
+ <set>
+ <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].model-customization-id'`" value= '`$aai.generic-vnf.model-customization-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='not-found'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf not found in AAI for generic-vnf-id: "/>
+ <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>
+ </record>
+ </outcome>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: unable to access AAI for generic-vnf-id: "/>
+ <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>
+ </record>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block></block>
+ </outcome>
+ </switch>
+ <block>
+ <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: PRINT triplet-list | vf-module-id:generic-vnf-id:model-customization-id | "/>
+ <parameter name="field3" value='`$tmp.tripletListIndex`'/>
+ <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>
+ <parameter name="field5" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>
+ <parameter name="field6" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>
+ </record>
+ </for>
+ </block>
+ <for index='vnfIdIndex' start='0' end='`$vnf-ids_length`' >
+ <block>
+ <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | tripletListIndex:model-customization-id | : "/>
+ <parameter name="field3" value='`$vnfIdIndex`'/>
+ <parameter name="field4" value='`$vnf-ids[$vnfIdIndex]`'/>
+ <parameter name="field5" value='`$tmp.tripletListIndex`'/>
+ <parameter name="field6" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>
+ </record>
+ <switch test='`$vnf-ids[$vnfIdIndex] == $tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'>
+ <outcome value='true'>
+ <block>
+ <for index='vnfInstanceIndex' start='0' end='`$tmp.vnf-instances_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | vnfInstanceIndex:id | : "/>
+ <parameter name="field3" value='`$vnfIdIndex`'/>
+ <parameter name="field4" value='`$vnf-ids[$vnfIdIndex]`'/>
+ <parameter name="field5" value='`$vnfInstanceIndex`'/>
+ <parameter name="field6" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`'/>
+ </record>
+ <switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id == $tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-instances.vnf-id and triplet-list.vf-module-id: "/>
+ <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>
+ </record>
+ <switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>
+ <outcome value='true'>
+ <for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-id and vnf-instances for vnf-id: "/>
+ <parameter name="field3" value='`$vnf-ids[$vnfIdIndex]`'/>
+ <parameter name="field4" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>
+ </record>
+ <set>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length" value= '`$vnfNetworksIndex + 1`'/>
+ </set>
+ </block>
+ </for>
+ </outcome>
+ <outcome value='false'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: "/>
+ <parameter name="field3" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`' />
+ </record>
+ <set>
+ <parameter name='`tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value="0" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-id" value= "`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`"/>
+ </set>
+ <set>
+ <parameter name="vnfListIndex" value= '`$vnfListIndex + 1`'/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='false'></outcome>
+ </switch>
+ </block>
+ </for>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for input vnf-id and triplet-list.model-customizaiton-id: "/>
+ <parameter name="field3" value='`$vnf-ids[$vnfIdIndex]`'/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='false'></outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='COMPOSITE'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids"/>
+ </record>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.vf-module-ids">
+ <parameter name="start[0]" value="`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `" />
+ <!--<parameter name="start[0]" value="`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `" />-->
+ <!--<parameter name="start[0]" value="`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `" />-->
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="/query/vfModule-fromServiceInstance" />
+ <!--<parameter name="query" value="/query/vnfs-fromServiceInstance" /> -->
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: vfModule-fromServiceInstance" />
+ <parameter name="serv-inst.api" value= ""/>
+ <parameter name='tmp.vf-module-ids_length' value='0' />
+ <parameter name='tmp.vnf-instances_length' value='0' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-message" value="No vfModules returned from AAI: vfModule-fromService-instance" />
+ <parameter name="serv-inst.api" value= ""/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >
+ <set>
+ <parameter name="`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >
+ <block>
+ <set>
+ <parameter name="tmp.vnf-url" value="`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="vnf-mdsal" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed to read vnf info from MD-SAL" />
+ <parameter name="serv-inst.api" value= ""/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cannot find vnf info in MD-SAL" />
+ <parameter name="serv-inst.api" value= ""/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="`'tmp.vnf-instances[0]'`." value= '`$vnf-mdsal.vnf-list[0].`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id: "/>
+ <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />
+ </record>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>
+ <outcome value='true'>
+ <for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: copy vnf-instance data to output: "/>
+ <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>
+ </record>
+ <set>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name" value= "`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role" value= "`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id" value= "`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`"/>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length" value= '`$vnfNetworksIndex + 1`'/>
+ </set>
+ </block>
+ </for>
+ </outcome>
+ <outcome value='false'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: "/>
+ <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />
+ </record>
+ <set>
+ <parameter name='`tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value="0" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-id" value= "`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`"/>
+ </set>
+ <set>
+ <parameter name="vnfListIndex" value= '`$vnfListIndex + 1`'/>
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="serv-inst.service-instance-id" value= "`$serv-inst.service-instance-id`"/>
+ <parameter name="serv-inst.vnf-list_length" value= "`$vnfListIndex`"/>
+ </set>
+ <switch test='`$serv-inst.vnf-list_length > 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name="serv-inst.api" value= "VNF"/>
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/getpathsegment-populate-from-vnfapi-output.log' />
+ </execute>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml
new file mode 100644
index 0000000..049f22e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml
@@ -0,0 +1,125 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-simple-match-pair' mode='sync'>
+ <for index='serv-insts-index' start='0' end='`$serv-insts_length`' >
+ <switch test='`$serv-insts[$serv-insts-index].vnf-list_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'Matching VNFs were not found in service instance '
+ + $serv-insts[$serv-insts-index].service-instance-id`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='error-message' value="`'Matching VNFs were not found in service instance '
+ + $serv-insts[$serv-insts-index].service-instance-id`" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='matched-all-vnfs' value='true' />
+ </set>
+ <set>
+ <parameter name='serv-insts[$serv-insts-index].path-segments_length' value='0' />
+ </set>
+ <for index='left-vnf-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list_length - 1`' >
+ <block>
+ <set>
+ <parameter name='found-match' value='false' />
+ </set>
+ <set>
+ <parameter name='right-vnf-index' value='`$left-vnf-index + 1`' />
+ </set>
+ <switch test='`$match-type`'>
+ <outcome value='network-name'>
+ <for index='left-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >
+ <block>
+ <for index='right-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >
+ <switch test='`( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name
+ == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name )
+ and
+ ( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role
+ == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-role )`'>
+ <outcome value='true'>
+ <switch test="`$serv-insts[$serv-insts-index].vnf-list[$vnf-index].vnf-network-list[$vnf-network-index].network-name == 'oam'`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='ps-index' value='`$serv-insts[$serv-insts-index].path-segments_length`' />
+ </set>
+ <set>
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-service-instance-id'
+ value='`$serv-insts[$serv-insts-index].service-instance-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vnf-instance-id'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vf-module-id'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-service-instance-id'
+ value='`$serv-insts[$serv-insts-index].service-instance-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vnf-instance-id'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vf-module-id'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-name'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-role'
+ value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />
+ <parameter name='serv-insts[$serv-insts-index].path-segments_length'
+ value='`$serv-insts[$serv-insts-index].path-segments_length + 1`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$found-match`">
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$found-match`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='matched-all-vnfs' value='false' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$matched-all-vnfs`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='matching-error' value="`'Not able to find matches for all vnfs of service instance ' + $serv-insts[$serv-insts-index].service-instance-id`" />
+ </set>
+ <set>
+ <parameter name='serv-insts[$serv-insts-index].path-segments.' value='' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml
new file mode 100644
index 0000000..77d04d7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml
@@ -0,0 +1,55 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-topology-operation-create' mode='sync'>
+ <block>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from FORWARDING_PATH WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='db.forwarding-path[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error reading FORWARDING_PATH table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No paths found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid + ' in FORWARDING_PATH table'`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <for index='path-index' start='0' end='`$db.forwarding-path_length`' >
+ <switch test='`$db.forwarding-path[$path-index].path-type`'>
+ <outcome value='VF'>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-simple-path' mode='sync' ></call>
+ </outcome>
+ <outcome value='Service Proxy'>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-composite-path' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected path type ' + $db.forwarding-path[$path-index].path-type + ' in FORWARDING_PATH table'`" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/gps.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml
new file mode 100644
index 0000000..e6c2c9d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml
@@ -0,0 +1,36 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='getpathsegment-topology-operation' mode='sync'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='validate-getpathsegment-input' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.sdnc-request-header.' value='`$getpathsegment-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.request-information.' value='`$getpathsegment-topology-operation-input.request-information.`' />
+ <parameter name='service-data.service-information.' value='`$getpathsegment-topology-operation-input.service-information.`' />
+ <parameter name='service-data.service-request-input.' value='`$getpathsegment-topology-operation-input.service-request-input.`' />
+ </set>
+ <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_gw-vfmodule-update.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_gw-vfmodule-update.xml
new file mode 100644
index 0000000..f738418
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_gw-vfmodule-update.xml
@@ -0,0 +1,142 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='gw-vfmodule-update' mode='sync'>
+<block>
+<set>
+<!--
+<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />
+
+
+<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />
+service-data.service-topology.service-topology-identifier.service-instance-id
+
+-->
+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>
+<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />
+</set><set>
+<parameter name='tmp.thisIsVGW' value='false' />
+</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API'
+ key='tunnelxconn-allotted-resources/' pfx='tmp.txconns' >
+ <outcome value='success'>
+<for index='txidx' start='0' end='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >
+
+
+<block atomic='true'><set>
+<parameter name='tmp.test1' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />
+<!--
+this is null
+<parameter name='tmp.test2' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource-data[$txidx].tunnelxconn-topology[0].allotted-resource-identifiers[0].consuming-service-instance-id`' />
+--></set><switch test='`$tmp.test1 == $tmp.consuming-service-instance-id`'><outcome value='true'>
+<block>
+<set>
+<parameter name='tmp.brg-macaddress'
+ value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address`' />
+
+</set><set>
+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>
+<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />
+
+<!--
+<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />
+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>
+-->
+<!--
+<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />
+service-data.service-topology.service-topology-identifier.service-instance-id
+
+-->
+</set><set>
+<parameter name='tmp.vg-vgmux-tunnel-vni'
+ value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />
+<parameter name='tmp.vg-ip'
+ value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />
+</set><set>
+<parameter name='tmp.thisIsVGW' value='true' />
+</set></block></outcome></switch></block></for></outcome></get-resource><switch test='`$tmp.thisIsVGW`'>
+<outcome value='true'>
+<block>
+<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >
+</get-resource><for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >
+
+
+<block atomic='true'><set>
+<parameter name='tmp.test3' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name`' />
+<parameter name='tmp.test4' value='`$tmp.brg-mac-address-match`'/>
+
+
+</set><switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-mac-address-match`'>
+
+
+<outcome value='true'>
+<block>
+<set>
+<parameter name='tmp.endLoop1' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' /></set><for index='preloadIdx' start='0' end='`$tmp.endLoop1`'>
+<!--
+
+ "preload-data": {
+ "vnf-topology-information": {
+ "vnf-parameters": [
+
+ -->
+<block atomic='true'><set>
+<parameter name='tmp.vfmodule.param[$preloadIdx].name' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-name`' />
+<parameter name='tmp.vfmodule.param[$preloadIdx].value' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-value`' /></set></block></for><set>
+<parameter name='tmp.vfmodule.param_length' value='`$tmp.endLoop1`' />
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><set>
+<parameter name='tmp.restapi.service.vnf.vfmodule-resource' value='`$prop.restapi.service.vnf.vfmodule-resource`' />
+</set><set>
+<parameter name='tmp.vf-module-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-data.service-topology.service-topology-identifier.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id
+ + '/'`"/>
+</set><set>
+<!--
+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />
+-->
+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vni`' />
+<parameter name='tmp.service.vnf.vf-module.vg-lan-ip' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vg-ip`' />
+
+
+
+</set><set>
+<!--
+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />
+-->
+<parameter name='tmp.vg-mux-tunnel-vni-match' value='vg_vgmux_tunnel_vni' />
+<parameter name='tmp.vg-lan-ip-match' value='vgw_private_ip_0' />
+
+
+
+
+</set><for index='paramIdx' start='0' end='`$tmp.vfmodule.param_length`' >
+<block>
+<switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-mux-tunnel-vni-match`'><outcome value='true'>
+<set>
+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-vgmux-tunnel-vni`' />
+
+<!--
+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />
+--></set></outcome></switch><switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-lan-ip-match`'><outcome value='true'>
+<set>
+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-ip`' />
+<!--
+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />
+--></set></outcome></switch></block></for><set>
+<!--
+<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param.'
+
+ service-data.vnfs.vnf\[0\]. vnf-data.vf-modules.vf-module\[0\] .vf-module-data.vf-module-topology.vf-module-parameters.param.
+ value='$tmp.vfmodule.' />
+-->
+<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.'
+ value='$tmp.vfmodule.' /></set></block></outcome></switch></block></for></block></outcome><outcome value='Other'>
+<block>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value='Did not find vGW Preload' />
+</return></block></outcome></switch></block></method></service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml
new file mode 100644
index 0000000..724faf3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml
@@ -0,0 +1,24 @@
+<!--Reserve/release IP-->
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'>
+ <method rpc='manage-ipaddr-assignment' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />
+ </set>
+ <switch test='`$tmp.manageIpaddr.action`'>
+ <outcome value='reserve'>
+ <block atomic='true'>
+ <get-resource plugin='`$tmp.sql.plugin`' resource='IPADDR' key="SELECT min(ipv4_addr) ip from IPV4_ADDRESS_POOL where universe = $tmp.manageIpaddr.pool and status='AVAILABLE'" pfx="tmp.manageIpaddr" >
+ <outcome value='success'>
+ <save plugin='`$tmp.sql.plugin`' resource='IPADDR' key="UPDATE IPV4_ADDRESS_POOL set status='RESERVED' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip" force='false'></save>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='release'>
+ <save plugin='`$tmp.sql.plugin`' resource='IPADDR' key="UPDATE IPV4_ADDRESS_POOL set status='AVAILABLE' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip" force='false'></save>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-vni-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-vni-assignment.xml
new file mode 100644
index 0000000..169d20b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_manage-vni-assignment.xml
@@ -0,0 +1,13 @@
+<!--Reserve/release VNI--><service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='manage-vni-assignment' mode='sync'>
+<block atomic='true'><set>
+<parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />
+</set><switch test='`$tmp.manageVni.action`'>
+<outcome value='reserve'>
+<block atomic='true'><get-resource plugin='`$tmp.sql.plugin`' resource='VNI' key="SELECT min(vlan_id) vni from VLAN_ID_POOL where purpose = $tmp.manageVni.pool and status='AVAILABLE'" pfx="tmp.manageVni" >
+<outcome value='success'>
+<save plugin='`$tmp.sql.plugin`' resource='VNI' key="UPDATE VLAN_ID_POOL set status='RESERVED' where purpose='VNI' and vlan_id = $tmp.manageVni.vni" force='false'>
+
+</save></outcome></get-resource></block></outcome><outcome value='release'>
+<save plugin='`$tmp.sql.plugin`' resource='VNI' key="UPDATE VLAN_ID_POOL set status='AVAILABLE' where purpose='VNI' and vlan_id=$tmp.manage-vni.vni" force='false'>
+
+</save></outcome></switch></block></method></service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-name.xml
new file mode 100644
index 0000000..2f6def6
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-name.xml
@@ -0,0 +1,1116 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='naming-policy-generate-name' mode='sync'>
+ <block atomic='true'>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: read properties file."/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Could not read properties file."/>
+ <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='501' />
+ <parameter name='error-message' value='naming-policy-generate-name: could not read generic-resource-api properties' />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <switch test='`$naming-policy-generate-name-input.naming-type`'>
+ <outcome value='VM'>
+ <set>
+ <parameter name='table-name' value="NAMING_POLICY_VM_NAME_INDEX" />
+ <parameter name='table-type' value="VM_INSTANCE" />
+ <parameter name='table-prefix-column' value="vm_name_prefix" />
+ </set>
+ </outcome>
+ <outcome value='VNFC'>
+ <switch test='`$naming-policy-generate-name-input.vm-name`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='505' />
+ <parameter name='error-message' value='naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='table-name' value="NAMING_POLICY_VNFC_NAME_INDEX" />
+ <parameter name='table-type' value="VNFC_INSTANCE" />
+ <parameter name='table-prefix-column' value="vnfc_name_prefix" />
+ <parameter name='seq-length' value="0" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='VNF'>
+ <set>
+ <parameter name='table-name' value="VNF_NAME_INDEX" />
+ <parameter name='table-type' value="VNF_INSTANCE" />
+ <parameter name='table-prefix-column' value="vnf_name_prefix" />
+ </set>
+ </outcome>
+ <outcome value='NETWORK'>
+ <set>
+ <parameter name='table-name' value="NETWORK_INSTANCE_NAME_INDEX" />
+ <parameter name='table-type' value="NETWORK_INSTANCE" />
+ <parameter name='table-prefix-column' value="network_instance_name_prefix" />
+ </set>
+ </outcome>
+ <outcome value='SERVICE'>
+ <set>
+ <parameter name='table-name' value="SERVICE_INSTANCE_NAME_INDEX" />
+ <parameter name='table-type' value="SERVICE_INSTANCE" />
+ <parameter name='table-prefix-column' value="service_instance_name_prefix" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: invalid input.naming-type."/>
+ <parameter name="field3" value='`$naming-policy-generate-name-input.naming-type`'/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='503' />
+ <parameter name='error-message' value='naming-policy-generate-name: Invalid input.naming-type' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$naming-policy-generate-name-input.policy-instance-name`'>
+ <outcome value=''>
+ <block>
+ <switch test='`$naming-policy-generate-name-input.action`'>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.policy-instance-name is not set but input.policy is not ASSIGN"/>
+ </record>
+ </outcome>
+ <outcome value='ASSIGN'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='507' />
+ <parameter name='error-message' value='naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$naming-policy-generate-name-input.query-parameter`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.vfc-customization-uuid is not set"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$naming-policy-generate-name-input.action`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.action is not set or invalid"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.action is not set or invalid"/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='ASSIGN | DELETE'></outcome>
+ </switch>
+ </block>
+ <switch test='`$naming-policy-generate-name-input.action`'>
+ <outcome value='ASSIGN'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.policy-name' value="`$naming-policy-generate-name-input.policy-instance-name`" />
+ </set>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: restapi-call-node Call Policy Manager getPolicy"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <parameter name="responsePrefix" value="tmp.pm-response" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: getPolicy SUCCESS"/>
+ <parameter name='field3' value='`$tmp.pm-response.type`' />
+ <parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />
+ <parameter name='field5' value='`$tmp.pm-response.config`' />
+ <parameter name='field6' value='`$tmp.pm-response.response-code`' />
+ <parameter name='field7' value='`$tmp.pm-response.response-message`' />
+ </record>
+ <set>
+ <parameter name='naming-policy-config' value="`$tmp.pm-response.config`" />
+ </set>
+ <switch test='`$tmp.pm-response.response-code`'>
+ <outcome value='500'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='vnf-name' value="`$naming-policy-generate-name-input.generic-vnf-name`" />
+ <parameter name='constant-tag' value="`$naming-policy-generate-name-input.constant-tag`" />
+ <parameter name='sequence' value="`$naming-policy-generate-name-input.sequence`" />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: call jsonStringToCtx"/>
+ <parameter name='field3' value='`$naming-policy-config`' />
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="naming-policy-config" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling jsonStringToCtx"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='504' />
+ <parameter name='error-message' value='naming-policy-generate-name: failed to parse Policy Manger getPolicy response' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: jsonStringToCtx SUCCESS: policy-instance-name|naming-models_length|constructed-name:"/>
+ <parameter name='field3' value='`$jsonContextPrefix.content.policy-instance-name`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.naming-models_length`' />
+ <parameter name='field5' value='`$constructed-name`' />
+ </record>
+ <for index='modelsIndex' start='0' end='`$jsonContextPrefix.content.naming-models_length`' >
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: modelsIndex|naming-type|naming-recipe:"/>
+ <parameter name='field3' value='`$modelsIndex`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`' />
+ <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`' />
+ </record>
+ <set>
+ <parameter name='naming-recipe' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`' />
+ <parameter name='naming-type' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`' />
+ </set>
+ <switch test='`$naming-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='504' />
+ <parameter name='error-message' value='naming-policy-generate-name: naming-type in policy is blank' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$naming-recipe`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='504' />
+ <parameter name='error-message' value='naming-policy-generate-name: naming-recipe in policy is blank' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$naming-type == $naming-policy-generate-name-input.naming-type`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='original-name' value='`$naming-recipe`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$original-name`" />
+ <parameter name="regex" value="\|"/>
+ <parameter name="limit" value="10" />
+ <parameter name="ctx_memory_result_key" value="namingRecipeSplits" />
+ </execute>
+ <for index='sectionIndex' start='0' end='`$namingRecipeSplits_length`' >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Split naming-recipe sectionIndex|section value"/>
+ <parameter name="field3" value="`$sectionIndex`" />
+ <parameter name="field4" value="`$namingRecipeSplits[$sectionIndex]`" />
+ </record>
+ <block>
+ <set>
+ <parameter name='section-value' value="`$namingRecipeSplits[$sectionIndex]`" />
+ </set>
+ <for index='propertiesIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`" />
+ <parameter name="outputPath" value="property-name-trimmed" />
+ </execute>
+ <set>
+ <!--<parameter name='property-name' value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`" />-->
+ <parameter name='property-name' value="`$property-name-trimmed`" />
+ </set>
+ <switch test='`$property-name == $section-value`'>
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: recipe section match: section-value|property-name:"/>
+ <parameter name="field3" value="`$section-value`" />
+ <parameter name="field4" value="`$property-name`" />
+ </record>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:"/>
+ <parameter name='field3' value='`$propertiesIndex`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`' />
+ <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`' />
+ <parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`' />
+ </record>
+ <set>
+ <parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`' />
+ <parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`' />
+ <parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`' />
+ <parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-value`' />
+ </set>
+ <switch test='`$property-value`'>
+ <outcome value=''>
+ <block>
+ <switch test='`$source-system`'>
+ <outcome value="MD-SAL">
+ <block>
+ <switch test='`$property-name`'>
+ <outcome value="VMNAME">
+ <switch test='`$naming-policy-generate-name-input.vm-name`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: required input.vm-name is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='506' />
+ <parameter name='error-message' value='naming-policy-generate-name: required input.vm-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="resolved-source-endpoint" value="`$naming-policy-generate-name-input.vm-name`" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="VNFNAME">
+ <switch test='`$naming-policy-generate-name-input.vnf-name`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: required input.vnf-name is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='506' />
+ <parameter name='error-message' value='naming-policy-generate-name: required input.vnf-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="resolved-source-endpoint" value="`$naming-policy-generate-name-input.vnf-name`" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >
+ <parameter name="source" value="`$source-endpoint`" />
+ <!--<parameter name="source" value="`$naming-policy-generate-name-input.test-source-endpoint-path`" />-->
+ <parameter name="outputPath" value="resolved-source-endpoint" />
+ </execute>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />
+ <parameter name="new-part" value="`$resolved-source-endpoint` " />
+ <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->
+ </set>
+ <set>
+ <parameter name="constructed-name" value="`$constructed-name + $new-part` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system MD-SAL name-value pair|new-part|constructed-name:"/>
+ <parameter name="field3" value="`$name-var`" />
+ <parameter name="field4" value="`$value-var`" />
+ <parameter name="field5" value="`$new-part`" />
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="CONTEXT">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >
+ <parameter name="source" value="`$source-endpoint`" />
+ <parameter name="outputPath" value="resolved-source-endpoint" />
+ </execute>
+ <set>
+ <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />
+ <parameter name="new-part" value="`$resolved-source-endpoint` " />
+ <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->
+ </set>
+ <set>
+ <parameter name="constructed-name" value="`$constructed-name + $new-part` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|new-part|constructed-name:"/>
+ <parameter name="field3" value="`$name-var`" />
+ <parameter name="field4" value="`$value-var`" />
+ <parameter name="field5" value="`$new-part`" />
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="TOSCA">
+ <switch test='`$naming-policy-generate-name-input.query-parameter`'>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: input.query-parameter is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='506' />
+ <parameter name='error-message' value='naming-policy-generate-name: input.query-parameter is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' method='parameterizedQuery' emitsOutcome='true' >
+ <!--<parameter name='query' value='select nfc_naming_code from VFC_MODEL where customization_uuid = ?' />-->
+ <parameter name='query' value="`$source-endpoint`" />
+ <parameter name='prefix' value='queryPfx' />
+ <parameter name='param1' value="`$naming-policy-generate-name-input.query-parameter`" />
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='514' />
+ <parameter name='error-message' value='naming-policy-generate-name query-parameter not found in DB table'/>
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='515' />
+ <parameter name='error-message' value='naming-policy-generate-name database access failure'/>
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='original-name' value='`$source-endpoint`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$original-name`" />
+ <parameter name="regex" value=" "/>
+ <parameter name="limit" value="10" />
+ <parameter name="ctx_memory_result_key" value="sourceEndpointSplits" />
+ </execute>
+ <set>
+ <parameter name="query-parameter-name-underbars" value="`$sourceEndpointSplits[1]`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$query-parameter-name-underbars`"/>
+ <parameter name="outputPath" value="tmp.query-parameter-name-dashes"/>
+ <parameter name="target" value="_"/>
+ <parameter name="replacement" value="-"/>
+ </execute>
+ <set>
+ <parameter name="full-query-param-name" value="`'queryPfx.' + $tmp.query-parameter-name-dashes`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >
+ <parameter name="source" value="`$full-query-param-name`" />
+ <parameter name="outputPath" value="resolved-query-parameter" />
+ </execute>
+ <set>
+ <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="value-var" value="`$property-name + '-' + $resolved-query-parameter`" />
+ <parameter name="new-part" value="`$resolved-query-parameter` " />
+ </set>
+ <set>
+ <parameter name="constructed-name" value="`$constructed-name + $new-part` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system TOSCA name-value pair|new-part|constructed-name:"/>
+ <parameter name="field3" value="`$name-var`" />
+ <parameter name="field4" value="`$value-var`" />
+ <parameter name="field5" value="`$new-part`" />
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="AAI">
+ <block>
+ <set>
+ <parameter name='original-name' value='`$source-endpoint`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$original-name`" />
+ <parameter name="regex" value="\|"/>
+ <parameter name="limit" value="10" />
+ <parameter name="ctx_memory_result_key" value="aaiSourceEndpointRegionKeySplits" />
+ </execute>
+ <set>
+ <parameter name="resource" value="`$aaiSourceEndpointRegionKeySplits[0]`" />
+ <parameter name="keys" value="`$aaiSourceEndpointRegionKeySplits[1]`" />
+ <parameter name='aai-constructed-name' value="" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$keys`" />
+ <parameter name="regex" value="\:"/>
+ <parameter name="limit" value="10" />
+ <parameter name="ctx_memory_result_key" value="aaiSourceEndpointKeySplits" />
+ </execute>
+ <for index='keyIndex' start='0' end='`$aaiSourceEndpointKeySplits_length`' >
+ <block>
+ <set>
+ <parameter name='key-value' value="`$aaiSourceEndpointKeySplits[$keyIndex]`" />
+ </set>
+ <for index='propIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`" />
+ <parameter name="outputPath" value="property-name-trimmed" />
+ </execute>
+ <set>
+ <!--<parameter name='property-name' value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`" />-->
+ <parameter name='property-name' value="`$property-name-trimmed`" />
+ </set>
+ <switch test='`$property-name == $key-value`'>
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: key match: key-value|property-name:"/>
+ <parameter name="field3" value="`$key-value`" />
+ <parameter name="field4" value="`$property-name`" />
+ </record>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:"/>
+ <parameter name='field3' value='`$propertiesIndex`' />
+ <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`' />
+ <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`' />
+ <parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`' />
+ </record>
+ <set>
+ <parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`' />
+ <parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`' />
+ <parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`' />
+ <parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-value`' />
+ </set>
+ <switch test='`$property-value`'>
+ <outcome value=''>
+ <block>
+ <switch test='`$source-system`'>
+ <outcome value="CONTEXT">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >
+ <parameter name="source" value="`$source-endpoint`" />
+ <parameter name="outputPath" value="resolved-source-endpoint" />
+ </execute>
+ <set>
+ <parameter name="aai-name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="aai-value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />
+ <parameter name="aai-new-part" value="`$resolved-source-endpoint` " />
+ <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->
+ </set>
+ <switch test='`$aai-constructed-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name="aai-constructed-name" value="`$aai-new-part `" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="aai-constructed-name" value="`$aai-constructed-name + '|' + $aai-new-part`" />
+ </set>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:"/>
+ <parameter name="field3" value="`$aai-name-var`" />
+ <parameter name="field4" value="`$aai-value-var`" />
+ <parameter name="field5" value="`$aai-new-part`" />
+ <parameter name="field6" value="`$aai-constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <!-- until PM is passing the correct source-endpoint for memory value,
+ use one passed via executeDG test
+
+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `" />
+-->
+ <parameter name="aai-name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="aai-value-var" value="`$property-name + '-' + $property-value` " />
+ <parameter name="aai-new-part" value="`$property-value` " />
+ </set>
+ <switch test='`$aai-constructed-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name="aai-constructed-name" value="`$aai-new-part `" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="aai-constructed-name" value="`$aai-constructed-name + '|' + $aai-new-part`" />
+ </set>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:"/>
+ <parameter name="field3" value="`$aai-name-var`" />
+ <parameter name="field4" value="`$aai-value-var`" />
+ <parameter name="field5" value="`$aai-new-part`" />
+ <parameter name="field6" value="`$aai-constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$aai-constructed-name`" />
+ <parameter name="regex" value="\|"/>
+ <parameter name="limit" value="10" />
+ <parameter name="ctx_memory_result_key" value="aaiQueryKeySplits" />
+ </execute>
+ <set>
+ <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[0]`" value= "`$aaiQueryKeySplits[0]`"/>
+ <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[1]`" value="`$aaiQueryKeySplits[1]`" />
+ <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[2]`" value="`$aaiQueryKeySplits[2]`" />
+ <!--<parameter name="aaiQueryKeyPart1" value="cloud-region.cloud-owner = 'att-aic' AND " />-->
+ <parameter name="aaiQueryKeyPart1" value="`$aaiSourceEndpointKeySplits[0]`"/>
+ <parameter name="aaiQueryKeyPart2" value=" = '" />
+ <parameter name="aaiQueryKeyPart3" value="`$aaiQueryKeySplits[0]`" />
+ <parameter name="aaiQueryKeyPart4" value="' AND " />
+ <parameter name="aaiQueryKeyPart5" value="`$aaiSourceEndpointKeySplits[1]`"/>
+ <parameter name="aaiQueryKeyPart6" value=" = '" />
+ <parameter name="aaiQueryKeyPart7" value="`$aaiQueryKeySplits[1]`" />
+ <parameter name="aaiQueryKeyPart8" value="' AND " />
+ <parameter name="aaiQueryKeyPart9" value="`$aaiSourceEndpointKeySplits[2]`"/>
+ <parameter name="aaiQueryKeyPart10" value=" = '" />
+ <parameter name="aaiQueryKeyPart11" value="`$aaiQueryKeySplits[2]`" />
+ <parameter name="aaiQueryKeyPart12" value="'" />
+ <parameter name="aaiQueryKey" value="`$aaiQueryKeyPart1 + $aaiQueryKeyPart2 + $aaiQueryKeyPart3 + $aaiQueryKeyPart4 + $aaiQueryKeyPart5 + $aaiQueryKeyPart6 + $aaiQueryKeyPart7 + $aaiQueryKeyPart8 + $aaiQueryKeyPart9 + $aaiQueryKeyPart10 + $aaiQueryKeyPart11 + $aaiQueryKeyPart12 `" />
+ <!-- works without single quotes <parameter name="aaiQueryKey" value="`'cloud-region.cloud-owner = att-aic AND ' + $aaiSourceEndpointKeySplits[0] + ' = ' + $aaiQueryKeySplits[0] + ' AND ' + $aaiSourceEndpointKeySplits[1] + ' = ' + $aaiQueryKeySplits[1]`" />-->
+ <!-- key="cloud-region.cloud-owner = '$a' AND cloud-region.cloud-region-id = '$b' AND tenant.tenant-id = '$c' AND vserver.vserver-id = '$d'" -->
+ <!--<parameter name="`'get-data-from-policy-output[' + $policyDataIndex + ']'`." value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />-->
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Call AAI query for keys aai-constructed-name|region|aaiQueryKey:"/>
+ <parameter name="field3" value="`$aai-constructed-name`" />
+ <parameter name="field4" value="`$resource`" />
+ <parameter name="field5" value="`$aaiQueryKey`" />
+ </record>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource='`$resource`'
+ key='`$aaiQueryKey`'
+ pfx="`'aai.' + $resource`" local-only='true' >
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.tenant-name' value='`$aai.tenant.tenant-name`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Tenant not found in AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="value-var" value="`$property-name + '-' + $tmp.tenant-name`" />
+ <parameter name="new-part" value="`$tmp.tenant-name` " />
+ </set>
+ <set>
+ <parameter name="constructed-name" value="`$constructed-name + $new-part` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system AAI name-value pair|new-part|constructed-name:"/>
+ <parameter name="field3" value="`$name-var`" />
+ <parameter name="field4" value="`$value-var`" />
+ <parameter name="field5" value="`$new-part`" />
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ </block>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <set>
+ <!-- until PM is passing the correct source-endpoint for memory value,
+ use one passed via executeDG test
+
+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `" />
+-->
+ <parameter name="seq-scope" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.scope`" />
+ <parameter name="seq-start-value" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.start-value` " />
+ <parameter name="seq-length" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.length` " />
+ <parameter name="seq-increment" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.increment` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: SDN-GC SEQUENCE info: scope|start-value|length|increment|constructed-name:"/>
+ <parameter name="field3" value="`$seq-scope`" />
+ <parameter name="field4" value="`$seq-start-value`" />
+ <parameter name="field5" value="`$seq-length`" />
+ <parameter name="field6" value="`$seq-increment`" />
+ <parameter name="field7" value="`$constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <!-- until PM is passing the correct source-endpoint for memory value,
+ use one passed via executeDG test
+
+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `" />
+-->
+ <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />
+ <parameter name="value-var" value="`$property-name + '-' + $property-value` " />
+ <parameter name="new-part" value="`$property-value` " />
+ </set>
+ <set>
+ <parameter name="constructed-name" value="`$constructed-name + $new-part` " />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: property-value name-value pair|new-part|constructed-name:"/>
+ <parameter name="field3" value="`$name-var`" />
+ <parameter name="field4" value="`$value-var`" />
+ <parameter name="field5" value="`$new-part`" />
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: call generate-unique-name: constructed-name"/>
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ <set>
+ <!--<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />-->
+ <parameter name='generate-unique-name-input.index-table-name' value="`$table-name`" />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value="`$table-prefix-column`" />
+ <!--<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />-->
+ <parameter name='generate-unique-name-input.name-table-type' value="`$table-type`" />
+ <!--<parameter name='generate-unique-name-input.prefix' value="`$naming-policy-generate-name-input.nfc-naming-code`" /><parameter name='generate-unique-name-input.index-length' value='003' />-->
+ <parameter name='generate-unique-name-input.prefix' value="`$constructed-name`" />
+ <parameter name='generate-unique-name-input.index-length' value="`$seq-length`" />
+ <parameter name='generate-unique-name-input.action' value="`$naming-policy-generate-name-input.action`" />
+ <parameter name='generate-unique-name-input.context-id' value="`$naming-policy-generate-name-input.context-id`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling generate-unique-name"/>
+ </record>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$naming-type`'>
+ <outcome value="VM">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vm-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vm-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vm-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="VNFC">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vnfc-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnfc-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vnfc-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="VNF">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vnf-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnf-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vnf-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="NETWORK">
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.network-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated network-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.network-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="SERVICE">
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.service-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated service-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.service-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </call>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: naming-type from returned policy does not match input.naming-type. Do not construct name for: "/>
+ <parameter name="field3" value="`$naming-type`" />
+ </record>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/naming-policy-generate-name.log' />
+ </execute>
+ <return status='success'>
+ <parameter name='naming-policy-generate-name-output.vm-name' value="`$naming-policy-generate-name-output.vm-name`" />
+ <parameter name='naming-policy-generate-name-output.vnfc-name' value="`$naming-policy-generate-name-output.vnfc-name`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='DELETE'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: call generate-unique-name: constructed-name"/>
+ <parameter name="field6" value="`$constructed-name`" />
+ </record>
+ <set>
+ <!--<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />-->
+ <parameter name='generate-unique-name-input.index-table-name' value="`$table-name`" />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value="`$table-prefix-column`" />
+ <!--<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />-->
+ <parameter name='generate-unique-name-input.name-table-type' value="`$table-type`" />
+ <!--<parameter name='generate-unique-name-input.prefix' value="`$naming-policy-generate-name-input.nfc-naming-code`" /><parameter name='generate-unique-name-input.index-length' value='003' />-->
+ <parameter name='generate-unique-name-input.prefix' value="`$constructed-name`" />
+ <parameter name='generate-unique-name-input.index-length' value="`$seq-length`" />
+ <parameter name='generate-unique-name-input.action' value="`$naming-policy-generate-name-input.action`" />
+ <parameter name='generate-unique-name-input.context-id' value="`$naming-policy-generate-name-input.context-id`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling generate-unique-name"/>
+ </record>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$naming-type`'>
+ <outcome value="VM">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vm-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vm-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vm-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="VNFC">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vnfc-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnfc-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vnfc-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="VNF">
+ <!-- <outcome value="MD-SAL"> -->
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.vnf-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnf-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.vnf-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="NETWORK">
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.network-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated network-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.network-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value="SERVICE">
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-output.service-name' value='`$generate-unique-name-output.generated-name`' />
+ <parameter name='constructed-name' value='' />
+ <parameter name='seq-length' value='' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="LAINA: naming-policy-generate-name: generated service-name|generate-unique-name-output.generated-name:"/>
+ <parameter name="field5" value="`$naming-policy-generate-name-output.service-name`" />
+ <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
new file mode 100644
index 0000000..23aece7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
@@ -0,0 +1,182 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='naming-policy-generate-unique-name' mode='sync'>
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.action not supplied' />
+ </return>
+ </outcome>
+ <outcome value='ASSIGN'>
+ <block atomic="true">
+ <switch test='`$generate-unique-name-input.context-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="generate-unique-name-input.context-id cannot be null for ASSIGN action" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generate-unique-name-input.name-table-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />
+ </return>
+ </outcome>
+ <outcome value='VNF_INSTANCE'>
+ <set>
+ <parameter name='tmp.gname.custom-query-string' value='nodes/generic-vnfs?vnf-name=' />
+ </set>
+ </outcome>
+ <outcome value='VM_INSTANCE'>
+ <set>
+ <parameter name='tmp.gname.custom-query-string' value='nodes/vservers?vserver-name=' />
+ </set>
+ </outcome>
+ <outcome value='NETWORK_INSTANCE'>
+ <set>
+ <parameter name='tmp.gname.custom-query-string' value='nodes/l3-networks?network-name=' />
+ </set>
+ </outcome>
+ <outcome value='SERVICE_INSTANCE'>
+ <set>
+ <parameter name='tmp.gname.custom-query-string' value='nodes/service-instances?service-instance-name=' />
+ </set>
+ </outcome>
+ <outcome value='VNFC_INSTANCE'>
+ <set>
+ <parameter name='tmp.gname.custom-query-string' value='nodes/vnfcs?vnfc-name=' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gun.nononap' value='NON-ONAP' />
+ </set>
+ <set>
+ <parameter name='tmp.gun.transient' value='TRANSIENT' />
+ </set>
+ <set>
+ <parameter name='tmp.grn.loop.flag' value='true' />
+ </set>
+ <while test='`$tmp.grn.loop.flag`'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.grn.loop.flag' value='false' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'Encountered error in naming-policy-generate-unique-name: ' +
+ $generate-unique-name-output.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value='`$generate-unique-name-output.generated-name`'/>
+ <parameter name="outputPath" value="encoded-name" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.nodes-query">
+ <parameter name="start[0]" value="`$tmp.gname.custom-query-string +
+ $encoded-name`" />
+ <parameter name="start_length" value="1" />
+ <outcome value='not-found'>
+ <set>
+ <parameter name='tmp.grn.loop.flag' value='false' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.grn.loop.flag' value='false' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to '
+ + $tmp.context-id.nononap`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="update GENERIC_RESOURCE_NAME set context_id = $tmp.gun.nononap
+ WHERE type = $generate-unique-name-input.name-table-type
+ AND context_id = $tmp.gun.transient">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to '
+ + $tmp.context-id.nononap`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = '
+ + $generate-unique-name-input.name-table-type`"/>
+ </return>
+ </outcome>
+ </update>
+ </outcome>
+ </save>
+ </block>
+ </while>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="update GENERIC_RESOURCE_NAME set context_id = $generate-unique-name-input.context-id
+ WHERE type = $generate-unique-name-input.name-table-type
+ AND name = $generate-unique-name-output.generated-name
+ AND context_id = $tmp.gun.transient">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to '
+ + $tmp.context-id.nononap`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = '
+ + $generate-unique-name-input.name-table-type`"/>
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ <outcome value='DELETE'>
+ <block atomic='true'>
+ <set>
+ <parameter name='rollback-generated-names-input.naming-type' value='`$generate-unique-name-input.name-table-type`' />
+ </set>
+ <set>
+ <parameter name='rollback-generated-names-input.context-id' value='`$generate-unique-name-input.context-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='rollback-generated-names' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message'
+ value="`'Encountered error in rollback-generated-names: ' +
+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='generate-unique-name-output.error-message' value='Invalid generate-unique-name-input.action. Valid values are ASSIGN or DELETE' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-activate.xml
new file mode 100644
index 0000000..ed5130a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-activate.xml
@@ -0,0 +1,206 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $network-topology-operation-input.network-information.network-id AND
+ depth = 'all'"
+ local-only="false"
+ pfx="aai.l3-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="network-id not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.l3-network.subnets.subnet_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="no networks found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>
+ <outcome value=''>
+ <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >
+ <block atomic="true">
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $aai.l3-network.network-id
+ AND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id" >
+ <parameter name="orchestration-status" value="Active" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet. Subnet not found." />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >
+ <block atomic="true">
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Subnet not found in EIPAM_IP_SUBNETS - activate failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="eipam-ip-block.entity-id" value="`$aai.l3-network.subnets.subnet[$sidx].subnet-id`"/>
+ <parameter name="eipam-ip-block.plans[0].plan-name" value="`$tmp.eipam-subnet-row.plan-name`"/>
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while activating subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ACTIVE'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $aai.l3-network.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+ <parameter name="orchestration-status" value="Active" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet. Subnet not found." />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network collection activate failed" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $aai.l3-network.network-id" >
+ <parameter name="orchestration-status" value="Active" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network" />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network. Network not found." />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+ </set>
+ <set>
+ <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />
+ </set>
+ <set>
+ <parameter name='network-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $network-topology-operation-input.service-information.service-instance-id
+ + '/service-data/networks/network/'
+ + $networkId
+ + '/network-data/network-topology/'` " />
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml
new file mode 100644
index 0000000..4de5c5f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml
@@ -0,0 +1,1405 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation-assign-automated' mode='sync'>
+ <block atomic="true">
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='nidx' value='0' />
+ <parameter name='nidx_len' value='1'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$service-data.networks.network_length`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.error-message" value=""/>
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />
+ <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />
+ <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />
+ <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />
+ <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />
+ <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />
+ <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />
+ <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />
+ </set>
+ <set>
+ <parameter name='network-data.service-information.ecomp-model-information.' value="`$s-onap-model-information.`" />
+ <parameter name='network-data.network-information.ecomp-model-information.' value="`$n-onap-model-information.`" />
+ </set>
+ <switch test='`$network-model.is-bound-to-vpn`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VPN_BINDINGS WHERE network_customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid'
+ pfx='vpn-bindings[]'>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='hasVpnBindings' value='true' />
+ </set>
+ <for index='vidx' start='0' end='`$vpn-bindings_length`' >
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-binding.vpn-id = $vpn-bindings[$vidx].binding-uuid"
+ pfx='aai.vpnBinding' local-only='false' >
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'No vpn binding found for network-model.vpn-binding='
+ + $vpn-bindings[$vidx].binding-uuid`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'No vpn binding found for network-model.vpn-binding='
+ + $vpn-bindings[$vidx].binding-uuid`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Network model is_bound_to_vpn=true but no vpn_binding is present"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Unexpected error retrieving vpn binding"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.l3-network.network-id' value="`$tmp.return.generate-l3network-network-id.uuid`" />
+ <parameter name='tmp.l3-network.network-name' value="`$tmp.network-instance-name`" />
+ <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />
+ <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />
+ <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />
+ <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />
+ <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='tmp.l3-network.is-provider-network' value="`$network-model.is-provider-network`" />
+ <parameter name='tmp.l3-network.is-shared-network' value="`$network-model.is-shared-network`" />
+ <parameter name='tmp.l3-network.is-external-network' value="`$network-model.is-external-network`" />
+ <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />
+ <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />
+ <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />
+ <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $network-topology-operation-input.service-information.service-instance-id
+ + '/service-data/networks/network/'
+ + $tmp.l3-network.network-id
+ + '/network-data/network-topology/'` " />
+ </set>
+ <switch test='`$network-model.is-provider-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.physical-network-name' value="`$network-model.physical-network-name`" />
+ <parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.physical-network-name' value="" />
+ <parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-shared-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-external-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-external-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-external-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-bound-to-vpn`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.complex-found' value='false' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $network-topology-operation-input.network-request-input.aic-cloud-region AND
+ depth = '0'"
+ pfx='aai.cloud-region' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region not found in AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error retrieving cloud region from AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='false' index='ridx' start='0' end="`$aai.cloud-region.relationship-list.relationship_length`" >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.complex-found' value='true' />
+ </set>
+ <set>
+ <parameter name='service-data.network-request-input.aic-clli' value='`$aai.complex.physical-location-id`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' local-only='false' >
+ <outcome value='success'>
+ <block atomic="true">
+ <switch test='`$aai.complex.region`'>
+ <outcome value='USA'>
+ <block>
+ <set>
+ <parameter name='aai.complex.region' value='US' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='CALA'>
+ <block>
+ <set>
+ <parameter name='aai.complex.region' value='LA' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='CA'>
+ <block></block>
+ </outcome>
+ <outcome value='US'>
+ <block></block>
+ </outcome>
+ <outcome value='LA'>
+ <block></block>
+ </outcome>
+ <outcome value='EMEA'>
+ <block></block>
+ </outcome>
+ <outcome value='AP'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Complex.region unknown"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Complex not found in AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Error retrieving complex from AA"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <switch test='`$tmp.complex-found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Complex not found in AAI"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.network-technology`'>
+ <outcome value='Contrail'>
+ <block atomic="true">
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test='`$network-model.eipam-v4-address-plan`'>
+ <outcome value='AIC_ATM_UNPROTECTED_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_ATM_PROTECTED_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_AIM_LANDING_NETWORK_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Invalid address plan for VIPR"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test='`$network-model.eipam-v6-address-plan`'>
+ <outcome value='AIC_ATM_UNPROTECTED_V6'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_ATM_PROTECTED_V6'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_AIM_LANDING_NETWORK_V6'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="EIPAM V6 Address plan should be null"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='AIC_SR_IOV'>
+ <block atomic="true">
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test='`$network-model.eipam-v4-address-plan`'>
+ <outcome value='AIC_DATA_PLANE_UNPROTECTED_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_DATA_PLANE_PROTECTED_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='AIC_DATA_PLANE_PRIVATE_V4'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Invalid address plan for SRIOV"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <switch test='`$network-model.eipam-v6-address-plan`'>
+ <outcome value="AIC_ATM_UNPROTECTED_V6">
+ <block></block>
+ </outcome>
+ <outcome value="AIC_ATM_PROTECTED_V6">
+ <block></block>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">
+ <block></block>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PRIVATE_V6">
+ <block></block>
+ </outcome>
+ <outcome value="AIC_DATA_PLANE_PROTECTED_V6">
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Invalid ipv6 address plan for SRIOV"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Invalid network-technology. Only AIC_SR_IOV and Contrail are supported for network automated flow"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.process-eipam-action' value='assign' />
+ </set>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='process-eipam-pools' mode='sync' ></call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Values after process-eipam"/>
+ <parameter name="field5" value="`level1-v4-mask`"/>
+ <parameter name="field6" value="`$tmp.l3-network.level1.v4.mask`"/>
+ <parameter name="field7" value="`level1-v4-ipprefix`"/>
+ <parameter name="field8" value="`$tmp.l3-network.level1.v4.ip-prefix`"/>
+ <parameter name="field9" value="`level1-v4-entity-id`"/>
+ <parameter name="field10" value="`$tmp.l3-network.level1.v4.entity-id`"/>
+ <parameter name="field11" value="`level2-v4-mask`"/>
+ <parameter name="field12" value="`$tmp.l3-network.level2.v4.mask`"/>
+ <parameter name="field13" value="`level2-v4-ipprefix`"/>
+ <parameter name="field14" value="`$tmp.l3-network.level2.v4.ip-prefix`"/>
+ <parameter name="field15" value="`level2-v4-entity-id`"/>
+ <parameter name="field16" value="`$tmp.l3-network.level2.v4.entity-id`"/>
+ </record>
+ <set>
+ <parameter name='v4.entity-id' value='`$tmp.l3-network.level2.v4.entity-id`' />
+ <parameter name='v4.ip-prefix' value='`$tmp.l3-network.level2.v4.ip-prefix`' />
+ <parameter name='v4.mask' value='`$tmp.l3-network.level2.v4.mask`' />
+ <parameter name='v6.entity-id' value='`$tmp.l3-network.level2.v6.entity-id`' />
+ <parameter name='v6.ip-prefix' value='`$tmp.l3-network.level2.v6.ip-prefix`' />
+ <parameter name='v6.mask' value='`$tmp.l3-network.level2.v6.mask`' />
+ </set>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>
+ <set>
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.network-id' value="`$tmp.l3-network.network-name`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.network-name' value="`$tmp.l3-network.network-name`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.network-type' value="`$tmp.l3-network.network-type`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.network-role' value="`$tmp.l3-network.network-role`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.network-technology' value="`$tmp.l3-network.network-technology`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />
+ <parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />
+ <parameter name='tmp.network-topology.region-identifier.tenant' value="`$network-topology-operation-input.network-request-input.tenant`" />
+ <parameter name='tmp.network-topology.region-identifier.aic-cloud-region' value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />
+ <parameter name='tmp.network-topology.region-identifier.aic-clli' value="`$network-topology-operation-input.network-request-input.aic-clli`" />
+ <parameter name='tmp.network-topology.onap-model-information.' value="`$network-topology-operation-input.network-information.onap-model-information.`" />
+ <parameter name='tmp.network-topology.network-parameters.' value="`$network-topology-operation-input.network-request-input.network-input-parameters.`" />
+ </set>
+ <switch test='`$tmp.l3-network.service-id`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$tmp.l3-network.network-type`" />
+ <parameter name="network-role" value="`$tmp.l3-network.network-role`" />
+ <parameter name="network-technology" value="`$tmp.l3-network.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <parameter name="persona-model-id" value="`$tmp.l3-network.persona-model-id`" />
+ <parameter name="persona-model-version" value="`$tmp.l3-network.persona-model-version`" />
+ <parameter name="persona-model-customization-id" value="`$tmp.l3-network.persona-model-customization-id`" />
+ <parameter name="physical-network-name" value="`$tmp.l3-network.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$tmp.l3-network.network-type`" />
+ <parameter name="network-role" value="`$tmp.l3-network.network-role`" />
+ <parameter name="network-technology" value="`$tmp.l3-network.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="service-id" value="`$tmp.l3-network.service-id`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <parameter name="persona-model-id" value="`$tmp.l3-network.persona-model-id`" />
+ <parameter name="persona-model-version" value="`$tmp.l3-network.persona-model-version`" />
+ <parameter name="persona-model-customization-id" value="`$tmp.l3-network.persona-model-customization-id`" />
+ <parameter name="physical-network-name" value="`$tmp.l3-network.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>
+ </set>
+ <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$hasVpnBindings`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <for index='vidx' start='0' end='`$vpn-bindings_length`' >
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vpn-bindings[$vidx].binding-uuid`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving vpn binding relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving vpn binding relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.service-information.global-customer-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$service-data.service-information.subscription-service-type`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$service-data.service-information.service-instance-id`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving service instance relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving service instance relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id"
+ force="true"
+ local-only="false">
+ <!-- create relationship-list -->
+ <parameter name="relationship-list.relationship[0].related-to" value="tenant" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="tenant.tenant-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$network-topology-operation-input.network-request-input.tenant`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="cloud-region" />
+ <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />
+ <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />
+ <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />
+ <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$network-model.network-technology`'>
+ <outcome value='AIC_SR_IOV'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.l3-network.segmentation-id" value="1"/>
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="segmentation-assignment"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND segmentation-assignment.segmentation-id = $tmp.l3-network.segmentation-id" >
+ <!-- Create segmentation-assignment object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="segmentation-id" value="`$tmp.l3-network.segmentation-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ <block atomic='true'>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"></delete>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />
+ <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />
+ <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />
+ <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />
+ <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value='$x.' />
+ <parameter name="service-data.networks.network_length" value='`$nidx_len`' />
+ </set>
+ <set>
+ <parameter name='networkId' value='`$tmp.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='network-object-path'
+ value="`$tmp.l3-network.self-link`"/>
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml
new file mode 100644
index 0000000..a8251fc
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml
@@ -0,0 +1,693 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='network-topology-operation-assign-from-preload' mode='sync'>
+ <block atomic="true">
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='nidx' value='0' />
+ <parameter name='nidx_len' value='1'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$service-data.networks.network_length`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />
+ <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />
+ <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />
+ <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />
+ <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />
+ <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />
+ <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />
+ <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.service-information.ecomp-model-information.' value="`$s-onap-model-information.`" />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-information.ecomp-model-information.' value="`$n-onap-model-information.`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.preload-network`"/>
+ <parameter name="outputPath" value="tmp.pn-url"/>
+ <parameter name="target" value="{network-name}"/>
+ <parameter name="replacement" value="`$tmp.network-instance-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="preload-data" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="tmp.error-message" value=""/>
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.network-name' value="`$tmp.network-instance-name`" />
+ <parameter name='tmp.l3-network.network-type' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`" />
+ <parameter name="tmp.l3-network.physical-network-name" value="`$preload-data.preload-network-topology-information.physical-network-name`" />
+ <parameter name="tmp.l3-network.is-provider-network" value="`$preload-data.preload-network-topology-information.is-provider-network`" />
+ <parameter name="tmp.l3-network.is-shared-network" value="`$preload-data.preload-network-topology-information.is-shared-network`" />
+ <parameter name="tmp.l3-network.is-external-network" value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`" />
+ <parameter name='tmp.l3-network.network-role' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-role`" />
+ <parameter name='tmp.l3-network.network-technology' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-technology`" />
+ <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />
+ <parameter name="tmp.l3-network.tenant-id" value="`$network-topology-operation-input.network-request-input.tenant`" />
+ <parameter name="tmp.l3-network.network-role-instance" value="0" />
+ <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />
+ <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />
+ <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />
+ <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-data.service-information.service-instance-id
+ + '/service-data/networks/network/'
+ + $tmp.l3-network.network-id
+ + '/network-data/network-topology/'` " />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information.network-id" value='`$tmp.l3-network.network-id`' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information.from-preload" value='true' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information.network-type" value='`$tmp.l3-network.network-type`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/lmr-nto.log' />
+ </execute>
+ <switch test="`$preload-data.preload-network-topology-information.subnets_length`">
+ <outcome value=''>
+ <set>
+ <parameter name="preload-data.preload-network-topology-information.subnets_length" value="0" />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">
+ <block atomic='true'>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`">
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="true" />
+ </set>
+ </outcome>
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="false" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].addr-from-start`">
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="true" />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="true" />
+ </set>
+ </outcome>
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="false" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`" />
+ </set>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`">
+ <outcome value=''>
+ <block atomic='true'>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">
+ <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />
+ <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />
+ <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />
+ <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.local.network-id" value="`$tmp.l3-network.network-id`" />
+ </set>
+ <call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >
+ <!-- Create subnet object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
+ <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`" />
+ <parameter name="subnet-role" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-role`" />
+ <parameter name="gateway-address" value="`$tmp.gateway-address`" />
+ <parameter name="network-start-address" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />
+ <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />
+ <parameter name="ip-version" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />
+ <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`" />
+ <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`" />
+ <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />
+ <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$preload-data.preload-network-topology-information.host-routes_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.host-routes_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="h" start="0" end="`$preload-data.preload-network-topology-information.host-routes_length`">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.local.subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
+ </set>
+ <call module="GENERIC-RESOURCE-API" rpc="generate-host-routes-host-route-id" mode="sync" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="host-route"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid
+ AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" >
+ <!-- Create host-route object -->
+ <parameter name="host-route-id" value="`$tmp.return.generate-host-routes-host-route-id.uuid`" />
+ <parameter name="route-prefix" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`" />
+ <parameter name="next-hop" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </block>
+ </for>
+ <switch test="`$preload-data.preload-network-topology-information.vpn-bindings_length`">
+ <outcome value=''>
+ <set>
+ <parameter name="preload-data.preload-network-topology-information.vpn-bindings_length" value="0" />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.vpn-bindings_length`">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.vpn-binding-id" value="" />
+ </set>
+ <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`">
+ <outcome value='Other'>
+ <set>
+ <parameter name="tmp.vpn-binding-id" value="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vpn-binding-id != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-binding.vpn-id = $tmp.vpn-binding-id"
+ local-only="false"
+ pfx="tmp.AnAI.vpn-binding">
+ <outcome value='success'>
+ <switch test="`$tmp.AnAI.vpn-binding.vpn-id`" >
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $tmp.vpn-binding-id + '.'`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id"
+ force="true"
+ local-only="false">
+ <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name="tmp.is-bound-to-vpn" value="true" />
+ </set>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$preload-data.preload-network-topology-information.network-policy_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.network-policy_length`">
+ <switch test="`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != ''`">
+ <outcome value='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn"
+ local-only="false"
+ pfx="tmp.AnAI.network-policy">
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$tmp.AnAI.network-policy.network-policy-id`" >
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query newtork-policy from AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn + '. It is likely that the same network-policy-fqdn points to more than one network-policy objects in AnAI.'`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$preload-data.preload-network-topology-information.route-table-reference_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.route-table-reference_length`">
+ <switch test="`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != ''`">
+ <outcome value='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="route-table-reference"
+ key="route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn"
+ pfx="tmp.AnAI.route-table-reference">
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$tmp.AnAI.route-table-reference.route-table-reference-id`" >
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query route-table-reference from AnAI where route-table-reference-fqdn = ' + $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn + '. It is likely that the same route-table-reference-fqdn points to more than one route-table-reference objects in AnAI.'`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.is-bound-to-vpn`">
+ <outcome value="true">
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="is-bound-to-vpn" value="true" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>
+ </set>
+ <block atomic='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />
+ <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />
+ <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />
+ <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />
+ <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information.from-preload" value='true' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />
+ <parameter name="service-data.networks.network_length" value='`$nidx_len`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/lmr-nto2.log' />
+ </execute>
+ <set>
+ <parameter name='networkId' value='`$tmp.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='network-object-path'
+ value="`$tmp.l3-network.self-link`"/>
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success' ></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml
new file mode 100644
index 0000000..56c9f6a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml
@@ -0,0 +1,1097 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation-assign-vlantagging-instancegroup' mode='sync'>
+ <block atomic="true">
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='nidx' value='0' />
+ <parameter name='nidx_len' value='1'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$service-data.networks.network_length`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ <parameter name='nidx_len' value='`$service-data.networks.network_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.ngidx`">
+ <outcome value=''>
+ <switch test='`$service-data.network-instance-groups.network-instance-group_len`'>
+ <outcome value=''>
+ <set>
+ <parameter name='ngidx' value='0' />
+ <parameter name='ngidx_len' value='1'/>
+ <parameter name="ngnidx" value='0' />
+ <parameter name="nig.preexists" value="false"/>
+ <parameter name="nig.first-network" value="true"/>
+ <parameter name="nig.networks.network_len" value="1" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='ngidx' value='`$service-data.network-instance-groups.network-instance-group_length`' />
+ <parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length + 1`' />
+ <parameter name="nig.preexists" value="false"/>
+ <parameter name="ngnidx" value='0' />
+ <parameter name="nig.first-network" value="true"/>
+ <parameter name="nig.networks.network_len" value="1" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='ngidx' value='`$tmp.ngidx`' />
+ <parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length`' />
+ <parameter name="nig.preexists" value="false"/>
+ </set>
+ <switch test='`$ctx.network-instance-group-data.networks.network_len`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="nig.first-network" value="true" />
+ <parameter name="ngnidx" value="0" />
+ <parameter name="nig.networks.network_len" value="1" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block atomic='true'>
+ <set>
+ <parameter name="nig.first-network" value="true" />
+ <parameter name="ngnidx" value="0" />
+ <parameter name="nig.networks.network_len" value="1" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name="nig." value="`$ctx.network-instance-group-data.`" />
+ </set>
+ <set>
+ <parameter name="nig.first-network" value="false" />
+ <parameter name="ngnidx" value="`$ctx.network-instance-group-data.networks.network_length`" />
+ <parameter name="nig.networks.network_len" value="`$ctx.network-instance-group-data.networks.network_length + 1`" />
+ <parameter name="nig." value="`$ctx.network-instance-group-data.`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.error-message" value=""/>
+ <parameter name="tmp.l3-network.network-instance-group-id" value="`$network-topology-operation-input.network-request-input.network-instance-group-id`" />
+ <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />
+ <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />
+ <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />
+ <parameter name='service-data.networks.network[$nidx].network-id' value='`$tmp.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />
+ <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />
+ <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />
+ <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />
+ <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />
+ <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />
+ <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />
+ <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx]..network-data.service-information.onap-model-information.' value="`$s-onap-model-information.`" />
+ <parameter name='service-data.networks.network[$nidx]..network-data.network-information.onap-model-information.' value="`$n-onap-model-information.`" />
+ </set>
+ <set>
+ <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />
+ <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />
+ <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />
+ <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />
+ <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />
+ <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />
+ <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />
+ <parameter name='tmp.l3-network.is-provider-network' value="`$network-model.is-provider-network`" />
+ <parameter name='tmp.l3-network.is-shared-network' value="`$network-model.is-shared-network`" />
+ <parameter name='tmp.l3-network.is-external-network' value="`$network-model.is-external-network`" />
+ <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />
+ <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />
+ <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />
+ <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $network-topology-operation-input.service-information.service-instance-id
+ + '/service-data/networks/network/'
+ + $tmp.l3-network.network-id
+ + '/network-data/network-topology/'` " />
+ </set>
+ <switch test='`$network-model.is-provider-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.physical-network-name' value="`$network-model.physical-network-name`" />
+ <parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.physical-network-name' value="" />
+ <parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-shared-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-external-network`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-external-network-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-external-network-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-model.is-bound-to-vpn`'>
+ <outcome value='Y'>
+ <set>
+ <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id"
+ local-only="false"
+ pfx="aai.l3-network">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error searching for l3-network with network-id =' + $tmp.l3-network.network-id + 'from AnAI. Network should be created by MSO'" />
+ </return>
+ </outcome>
+ <outcome value='not-found'></outcome>
+ </get-resource>
+ <set>
+ <parameter name='aaiapi.input.network-instance-group-id' value="`$tmp.l3-network.network-instance-group-id`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='aai-get-network-instance-group' mode='sync' ></call>
+ <set>
+ <parameter name="get-complex-resource-service-model-input.customization-uuid" value="`$aaiapi.output.collection-customization-uuid`"/>
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-complex-resource-service-model' mode='sync' ></call>
+ <set>
+ <parameter name="nig.network-instance-group-id" value="`$tmp.l3-network.network-instance-group-id`"/>
+ <parameter name="nig.network-instance-group-function" value="`$aaiapi.output.collection-function`"/>
+ <parameter name="nig.service-instance-id" value="`$network-topology-operation-input.service-information.service-instance-id`"/>
+ </set>
+ <set>
+ <parameter name='nig.networks.network[$ngnidx].network-id' value="`$tmp.l3-network.network-id`" />
+ </set>
+ <set>
+ <parameter name="get-data-from-policy-input.policy-instance-name" value="`$get-complex-resource-service-model-output.subnet-assignment-policy`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' ></call>
+ <set>
+ <parameter name="nig.subnet-assignment-policy.subnet-use" value="`$get-data-from-policy-output.ip-assignment`" />
+ </set>
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$get-complex-resource-service-model-output.network-naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <set>
+ <parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />
+ </set>
+ <set>
+ <parameter name='network-topology.network-topology-identifier-structure.network-id' value="`$tmp.l3-network.network-id`" />
+ <parameter name='network-topology.network-topology-identifier-structure.network-name' value="`$tmp.l3-network.network-name`" />
+ <parameter name='network-topology.network-topology-identifier-structure.network-instance-group-id' value="`$tmp.l3-network.network-instance-group-id`" />
+ <parameter name='network-topology.network-topology-identifier-structure.network-type' value="`$tmp.l3-network.network-type`" />
+ <parameter name='network-topology.network-topology-identifier-structure.network-role' value="`$tmp.l3-network.network-role`" />
+ <parameter name='network-topology.network-topology-identifier-structure.network-technology' value="`$tmp.l3-network.network-technology`" />
+ <parameter name='network-topology.region-identifier.tenant' value="`$network-topology-operation-input.network-request-input.tenant`" />
+ <parameter name='network-topology.region-identifier.aic-cloud-region' value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />
+ <parameter name='network-topology.region-identifier.aic-clli' value="`$network-topology-operation-input.network-request-input.aic-clli`" />
+ <parameter name='network-topology.onap-model-information.' value="`$network-topology-operation-input.network-information.onap-model-information.`" />
+ <parameter name='network-topology.network-parameters.' value="`$network-topology-operation-input.network-request-input.network-input-parameters.`" />
+ <parameter name='nig.network.network-id' value="`$tmp.l3-network.network-id`" />
+ </set>
+ <set>
+ <parameter name="aaiapi.input.cloud-owner" value="`$prop.cloud-region.cloud-owner`" />
+ <parameter name="aaiapi.input.cloud-region-id" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='aai-get-aic-zone' mode='sync' ></call>
+ <set>
+ <parameter name='network-topology.region-identifier.aic-clli' value="`$aaiapi.output.aic-clli`" />
+ </set>
+ <set>
+ <parameter name="nig.cloud-zone" value="`$aaiapi.output.cloud-zone`" />
+ <parameter name="rt.aic-zone" value="`$aaiapi.output.cloud-zone`" />
+ <parameter name="rt.resource" value="NetworkID" />
+ <parameter name="rt.resource-value" value="`$tmp.l3-network.network-id`" />
+ <parameter name="rt.network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="rt.service-instance-id" value="`$network-topology-operation-input.service-information.service-instance-id`" />
+ <parameter name="rt.network-instance-group-id" value="`$tmp.l3-network.network-instance-group-id`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='create-route-target-and-vpn-binding' mode='sync' ></call>
+ <set>
+ <parameter name='nig.vpn-bindings.id' value="`$vpn-binding.vpn-binding-id`" />
+ <parameter name='nig.vpn-bindings.global-route-target' value="`$vpn-binding.global-route-target`" />
+ <parameter name='nig.vpn-bindings.aic-zone' value="`$aaiapi.output.cloud-zone`" />
+ <parameter name='nig.vpn-bindings.route-target-role' value="`$vpn-binding.route-target-role`" />
+ </set>
+ <switch test='`$nig.subnet-assignment-policy.subnet-use`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="Subnet use not set"/>
+ </set>
+ <switch test='`$tmp.nig-preexists`'>
+ <outcome value='true'>
+ <block atomic='true'></block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nig-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-nig" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unique'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.skip-first-level" value="Y"/>
+ <parameter name="tmp.allocate-subnet-flag" value="Y"/>
+ <parameter name="generate-FQPN-input.aic-cloud-region" value="`$aai.cloud-region.cloud-region-id`" />
+ <parameter name="generate-FQPN-input.network-name" value="`$network-topology.network-topology-identifier-structure.network-name`" />
+ <parameter name="generate-FQPN-input.network-role" value="`$network-topology.network-topology-identifier-structure.network-role`" />
+ <parameter name="generate-FQPN-input.network-collection" value="`$aaiapi.output.collection-name`" />
+ <parameter name="generate-FQPN-input.network-id" value="`$network-topology.network-topology-identifier-structure.network-id`" />
+ <parameter name="tmp.network-id" value="`network-topology.network-topology-identifier-structure.network-id`" />
+ <parameter name="tmp.network-instance-group-id" value="`$network-topology.network-topology-identifier-structure.network-instance-group-id`" />
+ <!-- the following are not set by calling dg
+generate-FQPN-input.subnet-role
+generate-FQPN-input.zone
+generate-FQPN-input.equipment
+-->
+ <!-- network model is already in contect memory -->
+ <!-- aai.cloud-region.cloud-region-id is already in contect memory -->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='process-generic-eipam-pools' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error from process-generic-eipam-pools, ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <switch test="`$network-model.eipam-v4-address-plan != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="network-topology.network-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`" />
+ </set>
+ <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >
+ <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v4-address-plan`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="v4.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>
+ <parameter name="v4.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>
+ <parameter name="v4.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.eipam-v6-address-plan != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="network-topology.network-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v4-address-plan`" />
+ </set>
+ <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >
+ <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v6-address-plan`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="v6.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>
+ <parameter name="v6.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>
+ <parameter name="v6.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>
+ <switch test='`$tmp.l3-network.service-id`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$network-model.network-type`" />
+ <parameter name="network-role" value="`$network-model.network-role`" />
+ <parameter name="network-technology" value="`$network-model.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />
+ <parameter name="model-version" value="`$network-model.version`" />
+ <parameter name="model-customization-id" value="`$network-model.customization-id`" />
+ <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$network-model.network-type`" />
+ <parameter name="network-role" value="`$network-model.network-role`" />
+ <parameter name="network-technology" value="`$network-model.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />
+ <parameter name="model-version" value="`$network-model.version`" />
+ <parameter name="model-customization-id" value="`$network-model.customization-id`" />
+ <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <parameter name="service-id" value="`$tmp.l3-network.service-id`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="msidx" value="`$nig.subnets_length`" />
+ </set>
+ <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>
+ </set>
+ <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="nig.subnets[$msidx].start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="nig.subnets[$msidx].subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="nig.subnets[$msidx].subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="nig.subnets[$msidx].gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="nig.subnets[$msidx].cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="nig.subnets[$msidx].ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="nig.subnets[$msidx].dhcp-start-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="nig.subnets[$msidx].dhcp-end-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="nig.subnets[$msidx].dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ </set>
+ <set>
+ <parameter name="msidx" value="`$msidx + 1`" />
+ <parameter name="nig.subnets_length" value="`$nig.subnets_length + 1`" />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='shared'>
+ <block atomic="true">
+ <switch test='`$tmp.first-network`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.skip-first-level" value="Y"/>
+ <parameter name="tmp.allocate-subnet-flag" value="Y"/>
+ <parameter name="generate-FQPN-input.aic-cloud-region" value="`$aai.cloud-region.cloud-region-id`" />
+ <parameter name="generate-FQPN-input.network-name" value="`$network-topology.network-topology-identifier-structure.network-name`" />
+ <parameter name="generate-FQPN-input.network-role" value="`$network-topology.network-topology-identifier-structure.network-role`" />
+ <parameter name="generate-FQPN-input.network-collection" value="`$aaiapi.output.collection-name`" />
+ <parameter name="generate-FQPN-input.network-id" value="`$network-topology.network-topology-identifier-structure.network-id`" />
+ <parameter name="tmp.network-id" value="`network-topology.network-topology-identifier-structure.network-id`" />
+ <parameter name="tmp.network-instance-group-id" value="`$network-topology.network-topology-identifier-structure.network-instance-group-id`" />
+ <!-- the following are not set by calling dg
+generate-FQPN-input.subnet-role
+generate-FQPN-input.zone
+generate-FQPN-input.equipment
+-->
+ <!-- network model is already in contect memory -->
+ <!-- aai.cloud-region.cloud-region-id is already in contect memory -->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='process-generic-eipam-pools' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error from process-generic-eipam-pools, ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <switch test="`$network-model.eipam-v4-address-plan != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="network-topology.network-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`" />
+ </set>
+ <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >
+ <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v4-address-plan`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="v4.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>
+ <parameter name="v4.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>
+ <parameter name="v4.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.eipam-v6-address-plan != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="network-topology.network-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v4-address-plan`" />
+ </set>
+ <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >
+ <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v6-address-plan`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name="v6.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>
+ <parameter name="v6.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>
+ <parameter name="v6.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>
+ <switch test='`$tmp.l3-network.service-id`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$network-model.network-type`" />
+ <parameter name="network-role" value="`$network-model.network-role`" />
+ <parameter name="network-technology" value="`$network-model.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />
+ <parameter name="model-version" value="`$network-model.version`" />
+ <parameter name="model-customization-id" value="`$network-model.customization-id`" />
+ <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="network-name" value="`$tmp.l3-network.network-name`" />
+ <parameter name="network-type" value="`$network-model.network-type`" />
+ <parameter name="network-role" value="`$network-model.network-role`" />
+ <parameter name="network-technology" value="`$network-model.network-technology`" />
+ <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />
+ <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+ <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />
+ <parameter name="model-version" value="`$network-model.version`" />
+ <parameter name="model-customization-id" value="`$network-model.customization-id`" />
+ <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />
+ <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />
+ <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />
+ <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />
+ <parameter name="selflink" value="`$tmp.l3-network.self-link`" />
+ <parameter name="service-id" value="`$tmp.l3-network.service-id`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="msidx" value="`$nig.subnets_length`" />
+ </set>
+ <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>
+ </set>
+ <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.l3-network.network-id
+ AND subnet.subnet-id = $tmp.subnet-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="nig.subnets[$msidx].start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />
+ <parameter name="nig.subnets[$msidx].subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />
+ <parameter name="nig.subnets[$msidx].subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />
+ <parameter name="nig.subnets[$msidx].gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />
+ <parameter name="nig.subnets[$msidx].cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />
+ <parameter name="nig.subnets[$msidx].ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />
+ <parameter name="nig.subnets[$msidx].dhcp-start-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />
+ <parameter name="nig.subnets[$msidx].dhcp-end-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />
+ <parameter name="nig.subnets[$msidx].dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ </set>
+ <set>
+ <parameter name="msidx" value="`$msidx + 1`" />
+ <parameter name="nig.subnets_length" value="`$nig.subnets_length + 1`" />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <switch test='`$ngnidx`'>
+ <outcome value=''>
+ <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>
+ </set>
+ <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'></switch>
+ </block>
+ </for>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id"
+ force="true"
+ local-only="false">
+ <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/aai/v$/network/instance-groups/instance-group/'+ $tmp.network-instance-group-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving instance-group relationship for l3-network in AnAI where instance-group-id = ' + $tmp.network-instance-group-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving instance-group relationship for l3-network in AnAI where instance-group-id = ' + $tmp.network-instance-group-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.l3-network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.service-information.global-customer-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$service-data.service-information.subscription-service-type`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$service-data.service-information.service-instance-id`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />
+ <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />
+ <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />
+ <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />
+ <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />
+ </set>
+ <set>
+ <parameter name="service-data.network-instance-groups.network-instance-group[$ngidx]." value='`$nig.`' />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />
+ <parameter name="service-data.networks.network_length" value='`$nidx_len`' />
+ </set>
+ <set>
+ <parameter name='networkId' value='`$tmp.l3-network.network-id`' />
+ </set>
+ <set>
+ <parameter name='network-object-path'
+ value="`$tmp.l3-network.self-link`"/>
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign.xml
new file mode 100644
index 0000000..d4cdd89
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-assign.xml
@@ -0,0 +1,86 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='network-topology-operation-assign' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test="`$network-topology-operation-input.network-request-input.cloud-owner != ''`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$network-topology-operation-input.network-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-l3network-network-id' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.return.generate-l3network-network-id.uuid' value='`$network-topology-operation-input.network-information.network-id`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.l3-network.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />
+ <parameter name='network-topology-operation-input.network-information.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />
+ </set>
+ <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+ <outcome value=''>
+ <switch test='`$network-topology-operation-input.network-request-input.network-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <switch test='`$network-model.ecomp-generated-naming`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$network-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <set>
+ <parameter name='tmp.network-instance-name' value='`$naming-policy-generate-name-output.network-name`' />
+ <parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-automated' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Network name is required if onap naming is false" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.network-instance-name' value="`$network-topology-operation-input.network-request-input.network-name`" />
+ <parameter name='tmp.l3-network.network-name' value="`$network-topology-operation-input.network-request-input.network-name`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-from-preload' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-vlantagging-instancegroup' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml
new file mode 100644
index 0000000..7d0155a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml
@@ -0,0 +1,1172 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>
+ <outcome value='true'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error: changeassign only allowed for networks with from-preload set to true" />
+ </return>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.preload-network`"/>
+ <parameter name="outputPath" value="tmp.pn-url"/>
+ <parameter name="target" value="{network-name}"/>
+ <parameter name="replacement" value="`$network-topology-operation-input.network-request-information.network-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="preload-data" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id
+ AND depth='all'"
+ local-only="false"
+ pfx="tmp.AnAI.l3network">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="`$tmp.AnAI.l3network.network-name == $network-data.network-topology.network-topology-identifier-structure.network-name`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.network-type == $network-data.network-topology.network-topology-identifier-structure.network-type`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.network-name == $preload-data.preload-network-topology-information.network-topology-identifier.network-name`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.network-type == $preload-data.preload-network-topology-information.network-topology-identifier.network-type`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='x' value='0' />
+ <parameter name='tmp.error-message' value='' />
+ <parameter name='execute_failure' value='false' />
+ <parameter name='tmp.l3networkUpdate' value='0' />
+ </set>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet_length`">
+ <outcome value=''>
+ <set>
+ <parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />
+ </set>
+ </outcome>
+ </switch>
+ <for index="k" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.start-address-match' value='0' />
+ </set>
+ <set>
+ <parameter name='tmp.subnetUpdate' value='0' />
+ </set>
+ <block atomic='true'>
+ <for index="n" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.preload-network-topology-information.subnets[$n].start-address`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.start-address-match' value='1' />
+ </set>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.preload-network-topology-information.subnets[$n].cidr-mask`">
+ <outcome value='false'>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`">
+ <outcome value=''>
+ <block>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">
+ <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$n].start-address`" />
+ <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$n].ip-version`" />
+ <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`" />
+ <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />
+ </execute>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+ </set>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.preload-network-topology-information.subnets[$n].gateway-address`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />
+ </set>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-enabled`">
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="false" />
+ </set>
+ </outcome>
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="true" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="false" />
+ </set>
+ </outcome>
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="true" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].ip-assignment-direction == $tmp.addrFromStart.boolean`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.preload-network-topology-information.subnets[$n].subnet-name`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-role == $preload-data.preload-network-topology-information.subnets[$n].subnet-role`">
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.subnetUpdate == 1`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
+ <!-- Update l3network.subnet -->
+ <parameter name="gateway-address" value="`$tmp.gateway-address`"/>
+ <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$n].subnet-name`"/>
+ <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`"/>
+ <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`"/>
+ <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`"/>
+ <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`"/>
+ <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />
+ <parameter name="orchestration-status" value="PendingUpdate" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+ <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+ <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ <parameter name="tmp.subnetRollback[$x].type" value = "update"/>
+ </set>
+ <set>
+ <parameter name="x" value = "`$x + 1`" />
+ </set>
+ <set>
+ <parameter name="tmp.l3networkUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <switch test="`$tmp.start-address-match == 0`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+ <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+ <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+ <parameter name="tmp.subnetRollback[$x].orchestration-status" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`" />
+ <parameter name="tmp.subnetRollback[$x].type" value = "delete" />
+ </set>
+ <set>
+ <parameter name="x" value = "`$x + 1`" />
+ </set>
+ <set>
+ <parameter name="tmp.l3networkUpdate" value="1" />
+ </set>
+ </block>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </for>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.start-address-match" value="0" />
+ </set>
+ <block atomic='true'>
+ <for index="j" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.start-address-match' value='1' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.start-address-match == 0`">
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`">
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="false" />
+ </set>
+ </outcome>
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.dhcpEnabled.boolean" value="true" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">
+ <outcome value='N'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="false" />
+ </set>
+ </outcome>
+ <outcome value='Y'>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="true" />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <set>
+ <parameter name="tmp.addrFromStart.boolean" value="true" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.gateway-address' value='`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`' />
+ </set>
+ <switch test="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`">
+ <outcome value=''>
+ <block>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">
+ <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />
+ <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />
+ <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />
+ <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />
+ </execute>
+ <set>
+ <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.local.network-id" value="`$tmp.AnAI.l3network.network-id`" />
+ </set>
+ <call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+ <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$tmp.AnAI.l3network.network-id`" />
+ <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
+ <parameter name="gateway-address" value="`$tmp.gateway-address`" />
+ <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`" />
+ <parameter name="network-start-address" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />
+ <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />
+ <parameter name="ip-version" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />
+ <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`" />
+ <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`" />
+ <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />
+ <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+ <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+ <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />
+ </set>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.return.generate-subnets-subnet-id.uuid`" />
+ <parameter name="tmp.subnetRollback[$x].type" value = "create" />
+ </set>
+ <set>
+ <parameter name="x" value = "`$x + 1`" />
+ </set>
+ <set>
+ <parameter name='tmp.l3networkUpdate' value='1' />
+ </set>
+ <block>
+ <set>
+ <parameter name="tmp.local.subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$j].subnet-id`" />
+ </set>
+ <switch test='`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.subnets[$i].host-routes_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="h" start="0" end="`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`">
+ <block atomic='true'>
+ <call module="VNF-API" rpc="generate-host-routes-host-route-id" mode="sync" >
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="host-route"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.local.subnet-id
+ AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" >
+ <!-- Create host-route object -->
+ <parameter name="host-route-id" value="`$tmp.return.generate-host-routes-host-route-id.uuid`" />
+ <parameter name="route-prefix" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`" />
+ <parameter name="next-hop" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND related-to = vpn-binding" >
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="An error occurred while deleting l3-network vpn-binding relationship from AnAI"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </delete>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <switch test="`$preload-data.preload-network-topology-information.vpn-bindings_length`">
+ <outcome value=''>
+ <set>
+ <parameter name="preload-data.preload-network-topology-information.vpn-bindings_length" value="0" />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.vpn-bindings_length`">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.vpn-binding-id" value="" />
+ </set>
+ <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`">
+ <outcome value='Other'>
+ <set>
+ <parameter name="tmp.vpn-binding-id" value="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target != ''`" >
+ <outcome value='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vpn-binding"
+ key="vpn-binding.global-route-target = $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target"
+ pfx="tmp.AnAI.vpn-binding">
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <switch test="`$tmp.vpn-binding-id != ''`">
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>
+ </set>
+ <set>
+ <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`" />
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>
+ </set>
+ <set>
+ <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`" />
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vpn-binding.updated' value='1' />
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND related-to = network-policy" >
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD."/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </delete>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <switch test="`$preload-data.preload-network-topology-information.network-policy_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.network-policy_length`">
+ <switch test="`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != NULL`">
+ <outcome value='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="network-policy"
+ key="network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn"
+ pfx="tmp.AnAI.network-policy" >
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.network-policy.updated' value='1' />
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND related-to = route-table-reference" >
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD."/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ </delete>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <switch test="`$preload-data.preload-network-topology-information.route-table-reference_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index="i" start="0" end="`$preload-data.preload-network-topology-information.route-table-reference_length`">
+ <switch test="`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`">
+ <outcome value='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="route-table-reference"
+ key="route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn"
+ pfx="tmp.AnAI.route-table-reference">
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'></outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.route-table-reference.updated' value='1' />
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value='false'>
+ <switch test="`$tmp.l3networkUpdate == 1`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="orchestration-status" value="PendingUpdate" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>
+ </set>
+ <return status='success'>
+ <parameter name='execute_failure' value='true' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.l3network.status.updated' value='1' />
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$execute_failure`">
+ <outcome value="true">
+ <block atomic='true'>
+ <set>
+ <parameter name='ROLLBACK_START' value='NETWORK_TOPOLOGY_CHANGEASSIGN' />
+ </set>
+ <for index="z" start="0" end="`$tmp.AnAI.l3network.relationship-list.relationship_length`">
+ <switch test="`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`">
+ <outcome value='vpn-binding'>
+ <switch test="`$tmp.vpn-binding.updated == 1`">
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='network-policy'>
+ <switch test="`$tmp.network-policy.updated == 1`">
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='route-table-reference'>
+ <switch test="`$tmp.route-table-reference.updated == 1`">
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network:relationship-list"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <for index="j" start="0" end="`$x`">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.rollback.match" value="0"/>
+ </set>
+ <for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+ <switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test="`$tmp.subnetRollback[$j].type`">
+ <outcome value='delete'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >
+ <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ <outcome value='update'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id" >
+ <parameter name="subnet-name" value="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`"/>
+ <parameter name="gateway-address" value="`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`"/>
+ <parameter name="cidr-mask" value="`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`"/>
+ <parameter name="dhcp-start" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`"/>
+ <parameter name="dhcp-end" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`"/>
+ <parameter name="dhcp-enabled" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`"/>
+ <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.rollback.match" value="1"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.rollback.match == 0`">
+ <outcome value='true'>
+ <switch test="`$tmp.subnetRollback[$j].type`">
+ <outcome value='create'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+ AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.l3network.status.updated == 1`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+ <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.orchestration-status`" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-code" value="500"/>
+ <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </switch>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="ack-final" value="Y"/>
+ </set>
+ <return status="success">
+ <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-create.xml
new file mode 100644
index 0000000..b3e2b21
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-create.xml
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="network-topology-operation-create" mode="sync">
+ <block atomic="true">
+ <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />
+ <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.service-type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.topology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'technology'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.technology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.site1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.site2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna1_name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.sna1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna2_name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.sna2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.pe1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe2_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.pe2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_ip'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_ip'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_peer_ip'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_peer_ip'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_svlan'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_svlan'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_route'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$prop.l3vpn.ac1_route`" />
+ <parameter name="regex" value=" ## " />
+ <parameter name="ctx_memory_result_key" value="route1" />
+ <outcome value="success">
+ <set>
+ <parameter name="prop.l3vpn.sna1-route.ip-prefix" value="`$route1[0]`" />
+ <parameter name="prop.l3vpn.sna1-route.next-hop" value="`$route1[1]`" />
+ </set>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_route'`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
+ <parameter name="original_string" value="`$prop.l3vpn.ac2_route`" />
+ <parameter name="regex" value=" ## " />
+ <parameter name="ctx_memory_result_key" value="route2" />
+ <outcome value="success">
+ <set>
+ <parameter name="prop.l3vpn.sna2-route.ip-prefix" value="`$route2[0]`" />
+ <parameter name="prop.l3vpn.sna2-route.next-hop" value="`$route2[1]`" />
+ </set>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol_bgp_as'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac1_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ <parameter name="prop.l3vpn.peer1-ip" value="`$prop.l3vpn.ac1_ip`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol_bgp_as'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.ac2_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ <parameter name="prop.l3vpn.peer2-ip" value="`$prop.l3vpn.ac2_ip`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'af_type'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.af_type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $prop.l3vpn.pe1_id AND depth = '0'" pfx="tmp.aai.pnf" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.l3vpn.vpn-policy1-id" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while generation vpn policy ID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.l3vpn.entry1-id" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while generation vpn policy ID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.l3vpn.vrf1-id" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while generation vpn policy ID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.l3vpn.vrf2-id" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value="" />
+ <parameter name="error-message" value="An error occured while generation vpn policy ID" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="prop.l3vpn.network-id" />
+ </execute>
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0" />
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`" />
+ </set>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log" />
+ <parameter name="field1" value="__TIMESTAMP__" />
+ <parameter name="field2" value="network-topology-operation-create" />
+ <parameter name="field3" value="L3VPN-Config" />
+ <parameter name="field4" value="`l3vpn.name`" />
+ <parameter name="field5" value="`$prop.l3vpn.name`" />
+ <parameter name="field6" value="`l3vpn.topology`" />
+ <parameter name="field7" value="`$prop.l3vpn.topology`" />
+ <parameter name="field8" value="`l3vpn.site1_name`" />
+ <parameter name="field9" value="`$prop.l3vpn.site1_name`" />
+ <parameter name="field10" value="`l3vpn.vpn-policy1-id`" />
+ <parameter name="field11" value="`$prop.l3vpn.vpn-policy1-id`" />
+ <parameter name="field12" value="`l3vpn.entry1-id`" />
+ <parameter name="field13" value="`$prop.l3vpn.entry1-id`" />
+ <parameter name="field14" value="`l3vpn.sna1_name`" />
+ <parameter name="field15" value="`$prop.l3vpn.sna1_name`" />
+ <parameter name="field16" value="`l3vpn.pe1_id`" />
+ <parameter name="field17" value="`$prop.l3vpn.pe1_id`" />
+ <parameter name="field18" value="`l3vpn.ac1_id`" />
+ <parameter name="field19" value="`$prop.l3vpn.ac1_id`" />
+ <parameter name="field20" value="`l3vpn.ac1_svlan`" />
+ <parameter name="field21" value="`$prop.l3vpn.ac1_svlan`" />
+ <parameter name="field22" value="`l3vpn.ac1_peer_ip`" />
+ <parameter name="field23" value="`$prop.l3vpn.ac1_peer_ip`" />
+ <parameter name="field24" value="`l3vpn.ac1_ip`" />
+ <parameter name="field25" value="`$prop.l3vpn.ac1_ip`" />
+ <parameter name="field26" value="`l3vpn.ac1_protocol`" />
+ <parameter name="field27" value="`$prop.l3vpn.ac1_protocol`" />
+ <parameter name="field28" value="`l3vpn.sna1-route-ip-prefix`" />
+ <parameter name="field29" value="`$prop.l3vpn.sna1-route-ip-prefix`" />
+ <parameter name="field30" value="`l3vpn.sna1-route-next-hop`" />
+ <parameter name="field31" value="`$prop.l3vpn.sna1-route-next-hop`" />
+ <parameter name="field32" value="`l3vpn.peer1_ip`" />
+ <parameter name="field33" value="`$prop.l3vpn.peer1_ip`" />
+ <parameter name="field34" value="`l3vpn.ac1_protocol_bgp_as`" />
+ <parameter name="field35" value="`$prop.l3vpn.ac1_protocol_bgp_as`" />
+ <parameter name="field36" value="`l3vpn.vrf1-id`" />
+ <parameter name="field37" value="`$prop.l3vpn.vrf1-id`" />
+ <parameter name="field38" value="`l3vpn.site2_name`" />
+ <parameter name="field39" value="`$prop.l3vpn.site2_name`" />
+ <parameter name="field40" value="`l3vpn.vpn-policy2-id`" />
+ <parameter name="field41" value="`$prop.l3vpn.vpn-policy2-id`" />
+ <parameter name="field42" value="`l3vpn.entry2-id`" />
+ <parameter name="field43" value="`$prop.l3vpn.entry2-id`" />
+ <parameter name="field44" value="`l3vpn.sna2_name`" />
+ <parameter name="field45" value="`$prop.l3vpn.sna2_name`" />
+ <parameter name="field46" value="`l3vpn.pe2_id`" />
+ <parameter name="field47" value="`$prop.l3vpn.pe2_id`" />
+ <parameter name="field48" value="`l3vpn.ac2_id`" />
+ <parameter name="field49" value="`$prop.l3vpn.ac2_id`" />
+ <parameter name="field50" value="`l3vpn.ac2_svlan`" />
+ <parameter name="field51" value="`$prop.l3vpn.ac2_svlan`" />
+ <parameter name="field52" value="`l3vpn.ac2_peer_ip`" />
+ <parameter name="field53" value="`$prop.l3vpn.ac2_peer_ip`" />
+ <parameter name="field54" value="`l3vpn.ac2_ip`" />
+ <parameter name="field55" value="`$prop.l3vpn.ac2_ip`" />
+ <parameter name="field56" value="`l3vpn.ac2_protocol`" />
+ <parameter name="field57" value="`$prop.l3vpn.ac2_protocol`" />
+ <parameter name="field58" value="`l3vpn.sna2-route-ip-prefix`" />
+ <parameter name="field59" value="`$prop.l3vpn.sna2-route-ip-prefix`" />
+ <parameter name="field60" value="`l3vpn.sna2-route-next-hop`" />
+ <parameter name="field61" value="`$prop.l3vpn.sna2-route-next-hop`" />
+ <parameter name="field62" value="`l3vpn.peer2_ip`" />
+ <parameter name="field63" value="`$prop.l3vpn.peer2_ip`" />
+ <parameter name="field64" value="`l3vpn.ac2_protocol_bgp_as`" />
+ <parameter name="field65" value="`$prop.l3vpn.ac2_protocol_bgp_as`" />
+ <parameter name="field66" value="`l3vpn.vrf2-id`" />
+ <parameter name="field67" value="`$prop.l3vpn.vrf2-id`" />
+ <parameter name="field68" value="`l3vpn.af_type`" />
+ <parameter name="field69" value="`$prop.l3vpn.af_type`" />
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <switch test="`$prop.l3vpn.service-type`">
+ <outcome value="l3vpn-ipwan">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="token-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.token_id" value="`$token-result.data.token_id`" />
+ </set>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/l3smvpntemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="vpn-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn rest api" />
+ </return>
+ </outcome>
+ <outcome value="success">
+ <block atomic="true" />
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3smvrftemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="put" />
+ <parameter name="responsePrefix" value="vrf-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="success">
+ <block atomic="true" />
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vrf rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3smsitetemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="site-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="success">
+ <block atomic="true" />
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create site rest api" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value="l3vpn-sptn">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/sptn-l3vpn-template.xml'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/sptn-service-l3vpn:service/snc-l3vpns'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="xml" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="restapi-result" />
+ </execute>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unexpected error retrieving vpn binding" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value="`$prop.l3vpn.network-id`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`" />
+ <parameter name="service-data.networks.network_length" value="`$nidx+1`" />
+ </set>
+ <set>
+ <parameter name="pidx" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`" />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].name" value="vrf1_id" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].value" value="`$prop.l3vpn.vrf1-id`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].name" value="vrf2_id" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].value" value="`$prop.l3vpn.vrf2-id`d" />
+ <parameter name="service-data.networks.network[$nidx].network_data.network-request-input.network-input-parameters.param_length" value="`$pidx+2`" />
+ </set>
+ <set>
+ <parameter name="networkId" value="`$prop.l3vpn.network-id`" />
+ <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.l3vpn.network-id + '/network-data/'` " />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status" value="Created" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action" value="`$network-topology-operation-input.sdnc-request-header.svc-action`" />
+ <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action" value="`$network-topology-operation-input.request-information.request-action`" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $prop.l3vpn.network-id">
+ <parameter name="configuration-id" value="`$prop.l3vpn.network-id`" />
+ <parameter name="configuration-type" value="underlay" />
+ <parameter name="configuration-sub-type" value="l3vpn" />
+ <parameter name="orchestration-status" value="Created" />
+ <parameter name="operational-status" value="Created" />
+ <parameter name="model-customization-id" value="`$prop.l3vpn.network-id`" />
+ <parameter name="configuration-selflink" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.l3vpn.network-id + '/network-data/'` " />
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" key="service-instance.service-instance-id = $service-data.service-information.service-instance-id AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type" force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="configuration" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/configurations/configuration/' + $prop.l3vpn.network-id`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="configuration.configuration-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.l3vpn.network-id`" />
+ </save>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..54c8a75
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml
@@ -0,0 +1,172 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $network-topology-operation-input.network-information.network-id
+ AND depth='all'"
+ local-only="false"
+ pfx="aai.l3-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="network-id not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.l3-network.subnets.subnet_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="no networks found" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>
+ <outcome value=''>
+ <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >
+ <block atomic="true">
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $aai.l3-network.network-id
+ AND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id" >
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet. Subnet not found." />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >
+ <block atomic="true">
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Subnet not found in EIPAM_IP_SUBNETS - deactivate failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="eipam-ip-block.entity-id" value="`$aai.l3-network.subnets.subnet[$sidx].subnet-id`"/>
+ <parameter name="eipam-ip-block.plans[0].plan-name" value="$tmp.eipam-subnet-row.plan-name"/>
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $aai.l3-network.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet. Subnet not found." />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network collection activate failed" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $aai.l3-network.network-id" >
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network" />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network. Network not found." />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+ </set>
+ <set>
+ <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />
+ </set>
+ <set>
+ <parameter name='network-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $network-topology-operation-input.service-information.service-instance-id
+ + '/service-data/networks/network/'
+ + $networkId
+ + '/network-data/network-topology/'` " />
+ </set>
+ <set>
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-delete.xml
new file mode 100644
index 0000000..0624045
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-delete.xml
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="network-topology-operation-delete" mode="sync">
+ <block atomic="true">
+ <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="0">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <block atomic="true">
+ <for index="nidx" start="0" end="`$service-data.networks.network_length`">
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.nidx" value="`$nidx`" />
+ <parameter name="ctx.network-data." value="`$service-data.networks.network[$nidx].`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.name" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.service-type" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.pe1_id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.site1_name" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf1_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.vrf1-id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf2_id'`">
+ <outcome value="true">
+ <set>
+ <parameter name="prop.l3vpn.vrf2-id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $prop.l3vpn.pe1_id AND depth = '0'" pfx="tmp.aai.pnf" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].serviceUrl`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Network model is_bound_to_vpn=true but no vpn_binding is present" />
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unexpected error retrieving vpn binding" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" />
+ <parameter name="contextPrefix" value="prop" />
+ </execute>
+ <switch test="`$prop.l3vpn.service-type`">
+ <outcome value="l3vpn-ipwan">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="post" />
+ <parameter name="responsePrefix" value="token-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.token_id" value="$token-result.data.token_id" />
+ </set>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites/site=' + $prop.l3vpn.site1_name`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="site-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Delete Site rest api" />
+ </return>
+ </outcome>
+ <outcome value="success">
+ <block />
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf1-id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="vrf1-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="success">
+ <block />
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Delete VRF1 rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf2-id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="vrf2-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="success">
+ <block />
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Delete VRF2 rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services/vpnservice=' + $prop.l3vpn.name`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json" />
+ <parameter name="httpMethod" value="delete" />
+ <parameter name="responsePrefix" value="vpn-result" />
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks" />
+ <parameter name="trustStorePassword" value="adminadmin" />
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12" />
+ <parameter name="keyStorePassword" value="adminadmin" />
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value="success">
+ <block />
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Delete VPN rest api" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $network-topology-operation-input.network-information.network-id" />
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="1">
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.networks." value="" />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network_length" value="0" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`" />
+ </set>
+ <for silentFailure="true" index="snidx" start="`$tmp.nidx + 1`" end="`$service-data.networks.network_length`">
+ <block atomic="true" />
+ </for>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`" />
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.new_length]." value="" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`" />
+ <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'` " />
+ </set>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml
new file mode 100644
index 0000000..1b8a7d2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml
@@ -0,0 +1,403 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='network-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>
+ <outcome value='true'></outcome>
+ <outcome value='Other'>
+ <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $service-data.networks.network[$nidx].network-data.network-information.onap-model-information.model-customization-uuid
+ and service_uuid = $service-data.networks.network[$nidx].network-data.service-information.onap-model-information.model-uuid'
+ pfx='network-model'></get-resource>
+ <set>
+ <parameter name="tmp.level1-key-value" value=""/>
+ <parameter name="tmp.level1inuse" value="false" />
+ <parameter name="pidx" value="0" />
+ <parameter name="pidx-len" value="0" />
+ </set>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.network_id = $network-topology-operation-input.network-information.network-id and s.entity_id = k.entity_id ; "
+ pfx='tmp.eipam-subnet-row[]'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='esidx' start='0' end='`$tmp.eipam-subnet-row_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.eipam-subnet-row[$esidx].level`'>
+ <outcome value='1'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.level1-key-value[$pidx]" value="`$tmp.eipam-subnet-row[$esidx].key-value`"/>
+ </set>
+ <set>
+ <parameter name="tmp.plan-name[$pidx]" value="`$tmp.eipam-subnet-row[$esidx].plan-name`"/>
+ </set>
+ <set>
+ <parameter name="pidx" value="`$pidx + 1`"/>
+ </set>
+ <set>
+ <parameter name="pidx-len" value="`$pidx`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'></block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$network-topology-operation-input.network-information.network-id`" />
+ <parameter name="eipam-ip-block.level" value='2' />
+ <parameter name="eipam-ip-block.entity-id" value='' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateAllSubnets">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deallocating subnets in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deleting level 2 plans in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <for silentFailure='true' index='npidx' start='0' end='`$pidx-len`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.level1-key-value" value="`$tmp.level1-key-value[$npidx]`" />
+ <parameter name="tmp.plan-name" value="`$tmp.plan-name[$npidx]`" />
+ </set>
+ <switch test='`$tmp.level1-key-value`'>
+ <outcome value=''>
+ <block atomic='true'></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <switch test='`$network-model`'>
+ <outcome value=''></outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.plan-name' value='`$network-model.eipam-v4-address-plan`' />
+ </set>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k
+ WHERE p.level = 2
+ and p.plan_name = $tmp.plan-name
+ and k.level = 1
+ and p.pool_id = s.pool_id and s.entity_id = k.entity_id
+ and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.level2pool[]'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.level1inuse" value="true" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k
+ WHERE p.level = 1
+ and p.plan_name = $tmp.plan-name
+ and k.level = 1
+ and p.pool_id = s.pool_id and s.entity_id = k.entity_id
+ and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.level1pool[]'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='lidx' start='0' end='`$tmp.level1pool_length`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='`$tmp.level1pool[$lidx].entity-id`' />
+ <parameter name='eipam-ip-block.ip-address' value='`$tmp.level1pool[$lidx].ip-address`' />
+ <parameter name='eipam-ip-block.mask' value='`$tmp.level1pool[$lidx].prefix-length`' />
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.level1pool[$lidx].network-id`" />
+ <parameter name="eipam-ip-block.pool-id" value="`$tmp.level1pool[$lidx].pool-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deallocating subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByPoolId">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deleting pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'></block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.plan-name' value='`$network-model.eipam-v6-address-plan`' />
+ </set>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k
+ WHERE p.level = 2
+ and p.plan_name = $tmp.plan-name
+ and k.level = 1
+ and p.pool_id = s.pool_id and s.entity_id = k.entity_id
+ and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.level2pool[]'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.level1inuse" value="true" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k
+ WHERE p.level = 1
+ and p.plan_name = $tmp.plan-name
+ and k.level = 1
+ and p.pool_id = s.pool_id and s.entity_id = k.entity_id
+ and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.level1pool[]'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic='true'>
+ <for silentFailure='true' index='lidx' start='0' end='`$tmp.level1pool_length`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='`$tmp.level1pool[$lidx].entity-id`' />
+ <parameter name='eipam-ip-block.ip-address' value='`$tmp.level1pool[$lidx].ip-address`' />
+ <parameter name='eipam-ip-block.mask' value='`$tmp.level1pool[$lidx].prefix-length`' />
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.level1pool[$lidx].network-id`" />
+ <parameter name="eipam-ip-block.pool-id" value="`$tmp.level1pool[$lidx].pool-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deallocating subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByPoolId">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while deleting pool in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'></block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value='1'>
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.networks." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network_length" value="0"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.newidx]." value="$service-data.networks.network[$snidx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.new_length]." value=""/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$network-topology-operation-input.network-information.network-id`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network collection activate failed" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value='1'>
+ <block atomic="true">
+ <set>
+ <parameter name="service-data.networks." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network_length" value="0"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.newidx]." value="$service-data.networks.network[$snidx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.new_length]." value=""/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation.xml
new file mode 100644
index 0000000..51d6b6a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_network-topology-operation.xml
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='network-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-network-input' mode='sync' ></call>
+ <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+ <outcome value='Created'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ <outcome value='PendingDelete'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ <outcome value='PendingCreate'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSOTNConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateDCINetworkInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+ <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="wan-connection"/>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='success'></return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+ <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ngidx' value='`$ngidx`' />
+ <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+ <outcome value='PendingCreate'>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Network is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='changeassign'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-changeassign' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSOTNConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeActivateDCINetworkInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+ <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="wan-connection"/>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='success'></return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+ <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ngidx' value='`$ngidx`' />
+ <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' ></call>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='nidx' value='`$tmp.nidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='success'></return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+ <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ngidx' value='`$ngidx`' />
+ <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+ <outcome value='PendingCreate'>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='PendingDelete'>
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Network is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='ChangeInternetProfileInstance'>
+ <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='NOKIA'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-nokia' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='create'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSOTNConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+ <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="wan-connection"/>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-create' mode='sync' ></call>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='CreateInternetProfileInstance'>
+ <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='NOKIA'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-nokia' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='CreateAccessConnectivityInstance'>
+ <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='NOKIA'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-nokia' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='delete'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSOTNConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANConnectivityInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='other'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+ <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="wan-connection"/>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-delete' mode='sync' ></call>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='DeleteAccessConnectivityInstance'>
+ <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='NOKIA'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-nokia' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='DeleteInternetProfileInstance'>
+ <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='NOKIA'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-nokia' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='reoptimize'>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='ReoptimizeSOTNInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-reoptimize' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="ack-final" value="Y"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml
new file mode 100644
index 0000000..a382b02
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml
@@ -0,0 +1,84 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='pnf-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreatePnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'activate' then request-action must be 'CreatePnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.pnfs.pnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no PNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >
+ <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='pnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$pnf-index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'Could not find PNF ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'" />
+ </return>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="prov-status" value="NVTPROV" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating pnf in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No pnf found in AAI with pnf-id = ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`" />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml
new file mode 100644
index 0000000..f25087e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml
@@ -0,0 +1,71 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='pnf-topology-operation-assign' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreatePnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreatePnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VF customization UUID ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-assign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create self-serve assignment for pnf with pnf-id=' + $pnf-topology-operation-input.pnf-details.pnf-id + ' with error: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-pnf-assign.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml
new file mode 100644
index 0000000..5cb8438
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml
@@ -0,0 +1,84 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='pnf-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeletePnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeletePnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.pnfs.pnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no PNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >
+ <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='pnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$pnf-index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'Could not find PNF with pnf-id = ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'" />
+ </return>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating pnf in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No pnf found in AAI with pnf-id = ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`" />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml
new file mode 100644
index 0000000..48bffb4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml
@@ -0,0 +1,93 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='pnf-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeletePnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'unassign' then request-action must be 'DeletePnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.pnfs.pnf_length`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >
+ <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`' >
+ <outcome value='true'>
+ <set>
+ <parameter name='pnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$pnf-index`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-unassign' mode='sync' >
+ <outcome value='success'>
+ <switch test='`$service-data.pnfs.pnf_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="service-data.pnfs." value=""/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='`$pnf-index + 1`' end='`$service-data.pnfs.pnf_length`' >
+ <block>
+ <set>
+ <parameter name="$tmpidx" value="`$idx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.pnfs.pnf[$tmpidx]." value="" />
+ </set>
+ <set>
+ <parameter name="service-data.pnfs.pnf[$tmpidx]." value="$service-data.pnfs.pnf[$idx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.pnfs.pnf[$service-data.pnfs.pnf_length - 1]." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.pnfs.pnf_length" value="`$service-data.pnfs.pnf_length - 1`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error while unassigning self-serve pnf resources with error: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation.xml
new file mode 100644
index 0000000..8ab8729
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_pnf-topology-operation.xml
@@ -0,0 +1,38 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='pnf-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-pnf-input' mode='sync' ></call>
+ <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-assign' mode='sync' ></call>
+ </outcome>
+ <outcome value='activate'>
+ <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='deactivate'>
+ <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='unassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-unassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='changeassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-changeassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$pnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-create-policy.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-create-policy.xml
new file mode 100644
index 0000000..c6d45de
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-create-policy.xml
@@ -0,0 +1,46 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='policy-manager-create-policy' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.createpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/createPolicy'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name='convertResponse' value="false" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.pushpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/pushPolicy'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name='convertResponse' value="false" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to push policy in Policy Manager' />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to create policy in Policy Manager' />
+ </return>
+ </outcome>
+ </execute>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml
new file mode 100644
index 0000000..e5bcb09
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml
@@ -0,0 +1,46 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='policy-manager-delete-policy' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypdp.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/deletePolicy'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name='convertResponse' value="false" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypap.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/deletePolicy'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name='convertResponse' value="false" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to delete policy from Policy Manager (PAP)' />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to delete policy from Policy Manager (PDP)' />
+ </return>
+ </outcome>
+ </execute>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-update-notify-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-update-notify-operation.xml
new file mode 100644
index 0000000..a0d77fd
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_policy-update-notify-operation.xml
@@ -0,0 +1,89 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='policy-update-notify-operation' mode='sync'>
+ <block atomic="true">
+ <switch test='`$policy-update-notify-operation-input.update-type`'>
+ <outcome value='Update'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <set>
+ <parameter name='tmp.sql' value="`'insert into POLICY_UPDATE_NOTIFICATION (policy_name,version_id,update_type) values ( '
++ ' $policy-update-notify-operation-input.policy-name , $policy-update-notify-operation-input.version-id , $policy-update-notify-operation-input.update-type )'`" />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.sql`" pfx='pfx'></save>
+ <set>
+ <parameter name='tmp.policy-name' value='`$policy-update-notify-operation-input.policy-name`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='responsePrefix' value="policy" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to get policy from Policy Manager' />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >
+ <parameter name='source' value="policy.config" />
+ <parameter name='outputPath' value="tmp.config-ctx" />
+ <parameter name='isEscaped' value='false' />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to convert config variable from PolicyManager' />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='policy-name' value='`$tmp.config-ctx.content.fq_name[2]`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$policy-name`" />
+ <parameter name="regex" value="_"/>
+ <parameter name="limit" value="3" />
+ <parameter name="ctx_memory_result_key" value="policy-splits" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='network-policy' />
+ <parameter name='api-action' value='update' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='cloud-region-id' value='`$policy-splits[1]`' />
+ <parameter name='update-network-policy-json' value='`$policy.config`' />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Error updating Contrail: ' + $contrailResp.resp-message`" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-get-policy.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-get-policy.xml
new file mode 100644
index 0000000..a5e7438
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-get-policy.xml
@@ -0,0 +1,113 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-get-policy' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.policy-name' value='`$db.cap[0].policy-name`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+ <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='responsePrefix' value="policy" />
+ <parameter name='customHttpHeaders'
+ value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to get policy from Policy Manager' />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >
+ <parameter name='source' value="policy.config" />
+ <parameter name='outputPath' value="tmp.config-ctx" />
+ <parameter name='isEscaped' value='false' />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Failed to convert config variable from PolicyManager' />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="toLower">
+ <parameter name="source" value="`$tmp.tenant-context`" />
+ <parameter name="outputPath" value="tmp.lc-tenant-context" />
+ </execute>
+ <switch test='`$tmp.lc-tenant-context`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+ <parameter name="source" value="`$tmp.lc-tenant-context`" />
+ <parameter name="target" value="prod" />
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.productionContext`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+ <parameter name="source" value="`$tmp.lc-tenant-context`" />
+ <parameter name="target" value="test" />
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.testContext`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+ <parameter name="source" value="`$tmp.lc-tenant-context`" />
+ <parameter name="target" value="dev" />
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.developmentContext`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+ <parameter name="source" value="`$tmp.lc-tenant-context`" />
+ <parameter name="target" value="default" />
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unexpected tenant-context value of ' + $tmp.tenant-context`" />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.dest-p-interface`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find p-interface in policy ' + tmp.policy-name`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml
new file mode 100644
index 0000000..7b1ab18
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml
@@ -0,0 +1,52 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-rollback-capacity-db' mode='sync'>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select available_capacity
+ from VNICS_CAPACITY
+ where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id
+ and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name'
+ pfx='db.vnics-capacity'>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="update VNICS_CAPACITY
+ set available_capacity = $tmp.avail-capacity
+ where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id
+ and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name
+" ></update>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='delete from VNICS_CONFIGURATION_ID
+ where configuration_id = $tmp.configuration-id
+ and vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select configuration_id
+ from VNICS_CONFIGURATION_ID
+ where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'
+ pfx='db.vnics-confid'>
+ <outcome value='not-found'>
+ <block>
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='delete from VNICS_CAPACITY
+ where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='delete from VNICS_CAPACITY_GROUP
+ where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml
new file mode 100644
index 0000000..0d95f40
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml
@@ -0,0 +1,765 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-activate-async' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="pm-mdsal" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed to read port-mirror-configuration from MD-SAL" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cannot find port-mirror-configuration in MD-SAL" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+ </set>
+ <set>
+ <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />
+ </set>
+ <set>
+ <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+ </set>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cto-api.cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cto-api.contrail-route-allotted-resource-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+ <parameter name='cto-api.src-contrail-network-fqdn'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />
+ <parameter name='cto-api.collector-contrail-network-fqdn'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='cto-api.owning-entity'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-activate' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='enable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='traffic-direction' value='both' />
+ <parameter name='analyzer-ip-address'
+ value='`$tmp.analyzer.ip-address`' />
+ <parameter name='udp-port' value='8099' />
+ <parameter name='routing-instance'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='local-preference' value='1' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='pprobe'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='enable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='traffic-direction' value='both' />
+ <parameter name='analyzer-ip-address'
+ value='`$tmp.analyzer.ip-address`' />
+ <parameter name='vni' value='1000' />
+ <parameter name='udp-port' value='8099' />
+ <parameter name='routing-instance'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='local-preference' value='1' />
+ <parameter name='juniper-header' value='false' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="true" />
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='l-interface-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="operational-status" value="in-service-path" />
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Unable to find configuration object in AAI" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failure updating configuration object in AAI" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='pm.configuration-data.configuration-oper-status.order-status'
+ value='Active' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-action'
+ value='`$port-mirror-topology-operation-input.request-information.request-action`' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block atomic="true">
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <switch test="`$contrail-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$l-interface-set[$src-idx] == 'true'`">
+ <outcome value='true'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ </update>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="200" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml
new file mode 100644
index 0000000..d95950e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml
@@ -0,0 +1,57 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-activate-sync' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test="`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='N' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml
new file mode 100644
index 0000000..edb5557
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml
@@ -0,0 +1,2253 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-assign-async' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ <parameter name='tmp.src-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`' />
+ <parameter name='tmp.dest-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`' />
+ <parameter name='tmp.dest-pnf-name' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`' />
+ <parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />
+ <parameter name='tmp.configuration-sub-type' value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />
+ </set>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='pm.configuration-data.configuration-operation-information.request-information.'
+ value='`$port-mirror-topology-operation-input.request-information.`' />
+ <parameter name='pm.configuration-data.configuration-operation-information.service-information.'
+ value='`$port-mirror-topology-operation-input.service-information.`' />
+ <parameter name='pm.configuration-data.configuration-operation-information.configuration-information.'
+ value='`$port-mirror-topology-operation-input.configuration-information.`' />
+ <parameter name='pm.configuration-data.configuration-operation-information.port-mirror-configuration-request-input.'
+ value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select role,nfc_naming_code,pps_capacity,network_role,policy_name
+ from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp
+ where cap.port_mirror_capability_name=conf.port_mirror_capability_name
+ and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid
+ and cap.service_proxy_name=conf.service_proxy_name
+ and cap.service_proxy_name=sp.service_proxy_name
+ and cap.port_mirror_service_uuid=sp.parent_service_uuid
+ and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid
+ and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid
+ order by role'
+ pfx='db.cap[]'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION table" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION table" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <for index='cap-idx' start='0' end='`$db.cap_length`' >
+ <switch test='`$db.cap[$cap-idx].role`'>
+ <outcome value='source'>
+ <set>
+ <parameter name='tmp.src-pps' value='`$db.cap[$cap-idx].pps-capacity`' />
+ <parameter name='tmp.src-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />
+ <parameter name='tmp.src-network-role' value='`$db.cap[$cap-idx].network-role`' />
+ </set>
+ </outcome>
+ <outcome value='collector'>
+ <set>
+ <parameter name='tmp.dest-pps' value='`$db.cap[$cap-idx].pps-capacity`' />
+ <parameter name='tmp.dest-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />
+ <parameter name='tmp.dest-network-role' value='`$db.cap[$cap-idx].network-role`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace">
+ <parameter name="source" value="`$tmp.src-nfc-naming-code`" />
+ <parameter name="target" value=" " />
+ <parameter name="replacement" value="%20" />
+ <parameter name="outputPath" value="tmp.encoded-src-nfc-naming-code" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace">
+ <parameter name="source" value="`$tmp.dest-nfc-naming-code`" />
+ <parameter name="target" value=" " />
+ <parameter name="replacement" value="%20" />
+ <parameter name="outputPath" value="tmp.encoded-dest-nfc-naming-code" />
+ </execute>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`'>
+ <outcome value=''>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='tmp.src-vnfc-idx' value='0' />
+ <parameter name='tmp.dest-vnfc-idx' value='1' />
+ </set>
+ </outcome>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='tmp.src-vnfc-idx' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='vnfc-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.src-network-role`">
+ <outcome value='true'>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.src-nfc-naming-code`'>
+ <outcome value='true'>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Source nfc-naming-code of ' + $tmp.src-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.dest-network-role`">
+ <outcome value='true'>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.dest-nfc-naming-code`'>
+ <outcome value='true'>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Dest nfc-naming-code of ' + $tmp.dest-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />
+ <parameter name='tmp.dest-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 2`'/>
+ </set>
+ </outcome>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`'/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.oe">
+ <parameter name="start[0]" value="`'nodes/service-instances/service-instance?service-instance-id=' + $tmp.service-instance-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="/query/owning-entity-fromService-instance" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: owning-entity-fromService-instance" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No owning entity returned from AAI: owning-entity-fromService-instance" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.owning-entity' value='`$tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id`' />
+ </set>
+ </outcome>
+ </save>
+ <switch test='`$tmp.owning-entity`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve owning-entity from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity' value='`$tmp.owning-entity`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource&amp;nodesOnly=true'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.vnf">
+ <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="query/cloud-region-fromVnf" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <for index='result-idx' start='0' end='`$tmp.AnAI-data.vnf.results_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.tenant' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.tenant-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.tenant-context' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.cloud-owner' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.cloud-region-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$tmp.tenant`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve source tenant from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.tenant-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve source tenant-id from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.cloud-region-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve tenant from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.cloud-owner`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve tenant from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource&amp;nodesOnly=true'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.dest-vnf">
+ <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="query/cloud-region-fromVnf" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf, for destination vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf, for destination vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <for index='result-idx' start='0' end='`$tmp.AnAI-data.dest-vnf.results_length`' >
+ <switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.dest-tenant' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.dest-tenant-id' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.dest-tenant`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve destination tenant from AAI" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.dest-tenant-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to retrieve destination tenant-id from AAI" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner'
+ value='`$tmp.cloud-owner`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id'
+ value='`$tmp.cloud-region-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant'
+ value='`$tmp.tenant`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id'
+ value='`$tmp.tenant-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant'
+ value='`$tmp.dest-tenant`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant-id'
+ value='`$tmp.dest-tenant-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-context'
+ value='`$tmp.tenant-context`' />
+ </set>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='pprobe'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-get-policy' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.src-network">
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/' + $tmp.cloud-region-id`" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole=' + $tmp.src-network-role`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: network-name-fromNetwork-role" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No network information returned from AAI: network-name-fromNetwork-role" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.dest-network">
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/' + $tmp.cloud-region-id`" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole=' + $tmp.dest-network-role`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: network-name-fromNetwork-role" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No network information returned from AAI: network-name-fromNetwork-role" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.src-li">
+ <parameter value="`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id`" name="start[0]"/>
+ <parameter value="1" name="start_length"/>
+ <parameter value="`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-src-nfc-naming-code`" name="query"/>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query vserver-fromVnf for source vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No interface data returned from AAI vserver-fromVnf for source vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.dest-li">
+ <parameter value="`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id`" name="start[0]"/>
+ <parameter value="1" name="start_length"/>
+ <parameter value="`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-dest-nfc-naming-code`" name="query"/>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query vserver-fromVnf for dest vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No interface data returned from AAI vserver-fromVnf for dest vnf" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'
+ value='`$tmp.src-network-role`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'
+ value='`$tmp.src-nfc-naming-code`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'
+ value='port-mirror-source'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'
+ value='`$tmp.configuration-id`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].instance-group-role'
+ value='`$tmp.dest-network-role`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].nfc-naming-code'
+ value='`$tmp.dest-nfc-naming-code`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].group-type'
+ value='port-mirror-dest'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].configuration-id'
+ value='`$tmp.configuration-id`'/>
+ </set>
+ </outcome>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'
+ value='`$tmp.src-network-role`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'
+ value='`$tmp.src-nfc-naming-code`'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'
+ value='port-mirror-source'/>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'
+ value='`$tmp.configuration-id`'/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'
+ value='`$tmp.src-nfc-naming-code`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'
+ value='`$tmp.src-network-role`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'
+ value='`$tmp.service-instance-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'
+ value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'
+ value='`$tmp.src-vnf-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'
+ value='`$tmp.src-pps`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.nfc-naming-code'
+ value='`$tmp.dest-nfc-naming-code`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.instance-group-role'
+ value='`$tmp.dest-network-role`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.service-instance-id'
+ value='`$tmp.service-instance-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.configuration-id'
+ value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnf-id'
+ value='`$tmp.dest-vnf-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'
+ value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'
+ value='`$tmp.src-nfc-naming-code`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'
+ value='`$tmp.src-network-role`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'
+ value='`$tmp.service-instance-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'
+ value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'
+ value='`$tmp.src-vnf-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'
+ value='`$tmp.src-pps`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-name'
+ value='`$tmp.dest-pnf-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-p-interface'
+ value='`$tmp.dest-p-interface`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-port-policy-name'
+ value='`$db.cap[0].policy-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'
+ value='pprobe' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='src-nw-idx' start='0' end='`$tmp.AnAI-data.src-network.results_length`' >
+ <switch test='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$tmp.src-network-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.src-network-name' value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn'
+ value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.contrail-network-fqdn`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'More than one l3-network returned from AAI for network-role ' + $tmp.src-network-role`" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.src-network-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cannot determine source network name from AAI data" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <for index='dest-nw-idx' start='0' end='`$tmp.AnAI-data.dest-network.results_length`' >
+ <switch test='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$tmp.dest-network-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.dest-network-name' value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn'
+ value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.contrail-network-fqdn`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'More than one l3-network returned from AAI for network-role ' + $tmp.dest-network-role`" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.dest-network-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cannot determine dest network name from AAI data" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-create-vnfcs' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-vprobe' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='pprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-pprobe' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No usable source l-interfaces found in AAI data" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No usable source l-interfaces found in AAI data" />
+ </set>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <set>
+ <parameter name='cto-api.parent-service-instance-id' value='`$tmp.service-instance-id`' />
+ <parameter name='cto-api.port-mirror-configuration-instance-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.source-network-role' value='`$tmp.src-network-role`' />
+ <parameter name='cto-api.collector-network-role' value='`$tmp.dest-network-role`' />
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.cloud-owner' value='`$tmp.cloud-owner`' />
+ <parameter name='cto-api.service-type' value='`$port-mirror-topology-operation-input.service-information.subscription-service-type`' />
+ <parameter name='cto-api.owning-entity' value='`$tmp.owning-entity`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-create' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id'
+ value='`$cto-api.contrail-route-allotted-instance-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.configuration-name' value="`'PMC_' + $tmp.tenant + '_' + $tmp.cloud-region-id + '_' + $port-mirror-topology-operation-input.configuration-information.configuration-type + '_' + $tmp.configuration-id`" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.configuration-name' value='`$port-mirror-topology-operation-input.configuration-information.configuration-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$tmp.link-name`" />
+ <parameter name="outputPath" value="tmp.encoded-link-name" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" >
+ <parameter name="link-name" value="`$tmp.link-name`" />
+ <parameter name="in-maint" value="false" />
+ <parameter name="link-type" value="port-mirror-configuration" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to create logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to create logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ <parameter name="outputPath" value="tmp.encoded-source-port-name" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ <parameter name="outputPath" value="tmp.encoded-dest-port-name" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link:relationship-list"
+ key="logical-link.link-name = $tmp.link-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l-interface" />
+ <parameter name="relationship-list.relationship[0].relationship-label" value="org.onap.relationships.inventory.Source" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'
+ + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'
+ + $tmp.tenant-id + '/vservers/vserver/'
+ + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ + '/l-interfaces/l-interface/'
+ + $tmp.encoded-source-port-name`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="l-interface" />
+ <parameter name="relationship-list.relationship[1].relationship-label" value="org.onap.relationships.inventory.Destination" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'
+ + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'
+ + $tmp.dest-tenant-id + '/vservers/vserver/'
+ + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-vserver-id
+ + '/l-interfaces/l-interface/'
+ + $tmp.encoded-dest-port-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='pprobe'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ <parameter name="outputPath" value="tmp.encoded-source-port-name" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ <parameter name="outputPath" value="tmp.encoded-dest-port-name" />
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">
+ <parameter name="source" value="`$tmp.dest-p-interface`" />
+ <parameter name="outputPath" value="tmp.encoded-dest-p-interface" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link:relationship-list"
+ key="logical-link.link-name = $tmp.link-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l-interface" />
+ <parameter name="relationship-list.relationship[0].relationship-label" value="org.onap.relationships.inventory.Source" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'
+ + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'
+ + $tmp.tenant-id + '/vservers/vserver/'
+ + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ + '/l-interfaces/l-interface/'
+ + $tmp.encoded-source-port-name`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="l-interface" />
+ <parameter name="relationship-list.relationship[1].relationship-label" value="org.onap.relationships.inventory.Destination" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/pnfs/pnf/'
+ + $tmp.dest-pnf-name + '/p-interfaces/p-interface/'
+ + $tmp.encoded-dest-p-interface + '/l-interfaces/l-interface/'
+ + $tmp.encoded-dest-port-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration:relationship-list"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="logical-link" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/logical-links/logical-link/' + $tmp.encoded-link-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="configuration-name" value="`$tmp.configuration-name`" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <parameter name="configuration-selflink" value="`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'
+ + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Unable to find configuration object in AAI" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failure updating configuration object in AAI" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </update>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration:relationship-list"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="allotted-resource" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/business/customers/customer/' + $service-data.service-information.global-customer-id
+ + '/service-subscriptions/service-subscription/' + $port-mirror-topology-operation-input.service-information.subscription-service-type
+ + '/service-instances/service-instance/' + $tmp.service-instance-id
+ + '/allotted-resources/allotted-resource/' + $cto-api.contrail-route-allotted-instance-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id
+ + ' in AAI'`" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-id'
+ value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-type'
+ value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-sub-type'
+ value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.parent-service-instance-id'
+ value='`$tmp.service-instance-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-name'
+ value='`$tmp.configuration-name`' />
+ </set>
+ <switch test='`$service-data.provided-configurations.provided-configuration_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.provided-conf-idx' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.provided-conf-idx' value='`$service-data.provided-configurations.provided-configuration_length`' />
+ <parameter name='service-data.provided-configurations.provided-configuration_length' value='`$tmp.provided-conf-idx + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-id'
+ value='`$tmp.configuration-id`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-type'
+ value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-sub-type'
+ value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />
+ <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-topology-link'
+ value="`'restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/' + $tmp.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />
+ </set>
+ <set>
+ <parameter name='pm.configuration-data.configuration-oper-status.order-status'
+ value='Created' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-action'
+ value='`$port-mirror-topology-operation-input.request-information.request-action`' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block>
+ <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" ></delete>
+ </block>
+ </for>
+ <block>
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project' value='`$tmp.tenant`' />
+ <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.rollback-flag' value='true' />
+ <parameter name='tmp.saved-error-message' value='`$error-message`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>
+ <set>
+ <parameter name='error-message' value='`$tmp.saved-error-message`' />
+ </set>
+ <block>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <block>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </block>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="200" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml
new file mode 100644
index 0000000..2cdd98d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml
@@ -0,0 +1,124 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-assign-sync' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select role,nfc_naming_code,pps_capacity
+ from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp
+ where cap.port_mirror_capability_name=conf.port_mirror_capability_name
+ and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid
+ and cap.service_proxy_name=conf.service_proxy_name
+ and cap.service_proxy_name=sp.service_proxy_name
+ and cap.port_mirror_service_uuid=sp.parent_service_uuid
+ and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid
+ and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid
+ order by role'
+ pfx='db.cap[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION and PORT_MIRROR_CAPABILITY tables" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find PORT_MIRROR_CONFIGURATION entry for ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <switch test='`$db.cap_length == 2`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'PORT_MIRROR_CONFIGURATION does not contain exactly 2 entries for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$db.cap[0].role == 'collector'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No collector capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$db.cap[1].role == 'source'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='pprobe'>
+ <block atomic="true">
+ <switch test='`$db.cap_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'PORT_MIRROR_CONFIGURATION does not contain exactly 1 entry for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$db.cap[0].role == 'source'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Port mirror configuration ' + $tmp.pm.configuration-id + ' already exists'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='N' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml
new file mode 100644
index 0000000..8b07ec1
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml
@@ -0,0 +1,88 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-async' mode='sync'>
+ <block atomic="true">
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+ </set>
+ </outcome>
+ <outcome value='PPROBE'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+ </set>
+ </outcome>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value='VPROBE'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-async' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Cannot find assign async DG" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-async' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Cannot find activate async DG" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-async' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Cannot find deactivate async DG" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml
new file mode 100644
index 0000000..0860c6b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml
@@ -0,0 +1,293 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-create-vnfcs' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vnfc-objects-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='src-li-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'
+ value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'
+ value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'
+ value='`$tmp.src-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vserver-id' value='0' />
+ </set>
+ <for index='rel-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship_length`' >
+ <switch test="`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`">
+ <outcome value='true'>
+ <for index='reldata-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >
+ <switch test="`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.vserver-id == 0`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <for index='src-vs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'
+ value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'
+ value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id`' />
+ <parameter name='tmp.vs-idx' value='`$src-vs-idx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.interface-ids_length' value='0' />
+ </set>
+ <for silentFailure='true' index='src-vli-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >
+ <switch test='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].network-name == $tmp.src-network-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].interface-id`' />
+ <parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.vnic-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='src-rs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'
+ value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'
+ value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'
+ value='`$tmp.src-pps`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'
+ value='0' />
+ </set>
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'
+ value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'
+ value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnfc-objects-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='dest-li-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'
+ value='`$tmp.dest-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vserver-id' value='0' />
+ </set>
+ <for index='rel-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship_length`' >
+ <switch test="`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`">
+ <outcome value='true'>
+ <for index='reldata-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >
+ <switch test="`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.vserver-id == 0`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <for index='dest-vs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id`' />
+ <parameter name='tmp.vs-idx' value='`$dest-vs-idx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.interface-ids_length' value='0' />
+ </set>
+ <for silentFailure='true' index='dest-vli-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >
+ <switch test='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].network-name == $tmp.dest-network-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].interface-id`' />
+ <parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.vnic-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='dest-rs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'
+ value='`$tmp.dest-pps`' />
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'
+ value='0' />
+ </set>
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'
+ value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />
+ </set>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml
new file mode 100644
index 0000000..50c52fb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml
@@ -0,0 +1,373 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-deactivate-async' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="pm-mdsal" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed to read port-mirror-configuration from MD-SAL" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cannot find port-mirror-configuration in MD-SAL" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+ </set>
+ <set>
+ <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+ </set>
+ <set>
+ <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />
+ </set>
+ <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='policy-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='l-interface-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cto-api.cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cto-api.contrail-route-allotted-resource-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+ <parameter name='cto-api.src-contrail-network-fqdn'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />
+ <parameter name='cto-api.collector-contrail-network-fqdn'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='cto-api.rollback-flag' value='false' />
+ <parameter name='cto-api.owning-entity'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-deactivate' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Unable to find configuration object in AAI" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failure updating configuration object in AAI" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='pm.configuration-data.configuration-oper-status.order-status'
+ value='Created' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-action'
+ value='`$port-mirror-topology-operation-input.request-information.request-action`' />
+ <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'
+ value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+ </set>
+ <block atomic="true">
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="500" />
+ <parameter name="input.response-message" value="`$error-message`" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$error-message'`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+ <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="input.ack-final-indicator" value="Y" />
+ <parameter name="input.response-code" value="200" />
+ <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ </configure>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml
new file mode 100644
index 0000000..4a1fc27
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml
@@ -0,0 +1,57 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-deactivate-sync' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test="`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='N' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml
new file mode 100644
index 0000000..0be852c
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml
@@ -0,0 +1,184 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-disable' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="pm-mdsal" />
+ <outcome value='success'>
+ <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+ </set>
+ <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id
+ == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='src-idx' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$src-idx`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='disable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='traffic-direction' value='both' />
+ <parameter name='analyzer-ip-address'
+ value='`$tmp.analyzer.ip-address`' />
+ <parameter name='udp-port' value='8099' />
+ <parameter name='routing-instance'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='local-preference' value='1' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="false" />
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ </update>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml
new file mode 100644
index 0000000..b6d8c6d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml
@@ -0,0 +1,231 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-enable' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="pm-mdsal" />
+ <outcome value='success'>
+ <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+ </set>
+ <set>
+ <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+ </set>
+ <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id
+ == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='src-idx' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$src-idx`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.analyzer.ip-address'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='enable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='traffic-direction' value='both' />
+ <parameter name='analyzer-ip-address'
+ value='`$tmp.analyzer.ip-address`' />
+ <parameter name='udp-port' value='8099' />
+ <parameter name='routing-instance'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='local-preference' value='1' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='pprobe'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='port-mirroring' />
+ <parameter name='api-action' value='enable' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='display-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-name'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+ <parameter name='contrail-virtual-machine-interface-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+ <parameter name='default-domain' value='default-domain' />
+ <parameter name='default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='traffic-direction' value='both' />
+ <parameter name='analyzer-ip-address'
+ value='`$tmp.analyzer.ip-address`' />
+ <parameter name='vni' value='1000' />
+ <parameter name='udp-port' value='8099' />
+ <parameter name='routing-instance'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+ <parameter name='local-preference' value='1' />
+ <parameter name='juniper-header' value='false' />
+ <parameter name='cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cloud-owner'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+ <outcome value='success'>
+ <set>
+ <parameter name='contrail-set[$src-idx]' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+ AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+ AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+ AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+ AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="is-port-mirrored" value="true" />
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+ </return>
+ </outcome>
+ </update>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml
new file mode 100644
index 0000000..aaead56
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml
@@ -0,0 +1,108 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-mapping-pprobe' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interfaces"
+ key="pnf.pnf-name = $tmp.dest-pnf-name AND
+ p-interface.interface-name = $tmp.dest-p-interface AND depth='all'"
+ pfx='aai.pnf.p-interface' local-only='false' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Destination L-Interfaces are not set for the Destination PNF" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving l-interfaces from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.pnf.p-interface.l-interface_length &gt; 0`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Destination L-Interface is not set for the Destination PNF" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.found-one' value='false' />
+ </set>
+ <for index='idx' start='0' end='`$aai.pnf.p-interface.l-interface_length`' >
+ <switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+ <outcome value=''>
+ <switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-one' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-one' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-one`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Destination Port IP Address is not set for the Destination PNF' />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='map-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+ <for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'
+ value='`$aai.pnf.p-interface.l-interface[$idx].interface-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'
+ value='`$aai.pnf.p-interface.l-interface[$idx].interface-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'
+ value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'
+ value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+ </set>
+ <set>
+ <parameter name='map-idx' value='`$map-idx + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'
+ value='`$map-idx`' />
+ </set>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml
new file mode 100644
index 0000000..5421853
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml
@@ -0,0 +1,243 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-mapping-vprobe' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select vnics_group_id
+ from VNICS_CAPACITY_GROUP
+ where service_instance_id = $tmp.service-instance-id
+ and nfc_naming_code = $tmp.dest-nfc-naming-code
+ and vnf_id = $tmp.dest-vnf-id'
+ pfx='db'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="insert into VNICS_CAPACITY_GROUP
+ (service_instance_id, nfc_naming_code, vnf_id)
+ VALUES ( $tmp.service-instance-id , $tmp.dest-nfc-naming-code , $tmp.dest-vnf-id )"
+ pfx='pfx' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure to insert record into VNICS_CAPACITY_GROUP table" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select vnics_group_id
+ from VNICS_CAPACITY_GROUP
+ where service_instance_id = $tmp.service-instance-id
+ and nfc_naming_code = $tmp.dest-nfc-naming-code
+ and vnf_id = $tmp.dest-vnf-id'
+ pfx='db'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+ </return>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </save>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'
+ value='`$db.vnics-group-id`' />
+ </set>
+ <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+ <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select available_capacity, vnic_capacity
+ from VNICS_CAPACITY
+ where vnics_group_id = $db.vnics-group-id
+ and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'
+ pfx='db.vnics-capacity'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="insert into VNICS_CAPACITY
+ (vnics_group_id, vnic_port_name, available_capacity, vnic_capacity)
+ VALUES ( $db.vnics-group-id ,
+ $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name ,
+ $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity ,
+ $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity
+ )"
+ pfx='pfx' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure to insert record into VNICS_CAPACITY table" />
+ </return>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity'
+ value='`$db.vnics-capacity.available-capacity`' />
+ </set>
+ </outcome>
+ </get-resource>
+ </for>
+ </for>
+ <set>
+ <parameter name='map-idx' value='0' />
+ </set>
+ <for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+ <for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-capacity' value='N' />
+ <parameter name='tmp.save-rem-cap' value='0' />
+ </set>
+ <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+ <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.rem-cap' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity
+ - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+ </set>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].capacity.vnic-capacity
+ &lt;= $tmp.rem-cap`'>
+ <outcome value='true'>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`'>
+ <outcome value=''>
+ <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`'>
+ <outcome value=''>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$tmp.rem-cap &gt; $tmp.save-rem-cap`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.found-capacity' value='Y' />
+ <parameter name='tmp.save-vnfc-do-idx' value='`$vnfc-do-idx`' />
+ <parameter name='tmp.save-vnic-d-idx' value='`$vnic-d-idx`' />
+ <parameter name='tmp.save-rem-cap' value='`$tmp.rem-cap`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$tmp.rem-cap &gt; $tmp.save-rem-cap`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.found-capacity' value='Y' />
+ <parameter name='tmp.save-vnfc-do-idx' value='`$vnfc-do-idx`' />
+ <parameter name='tmp.save-vnic-d-idx' value='`$vnic-d-idx`' />
+ <parameter name='tmp.save-rem-cap' value='`$tmp.rem-cap`' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <switch test="`$tmp.found-capacity == 'N'`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'No capacity for source interface '
+ + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity'
+ value='`$tmp.src-pps + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity`' />
+ </set>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-name`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-vserver-id'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vserver-id`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`' />
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'
+ value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`' />
+ </set>
+ <set>
+ <parameter name='map-idx' value='`$map-idx + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ <set>
+ <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'
+ value='`$map-idx`' />
+ </set>
+ <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+ <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='select available_capacity
+ from VNICS_CAPACITY
+ where vnics_group_id = $db.vnics-group-id
+ and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'
+ pfx='db.vnics-capacity'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure reading VNICS_CAPACITY table" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.original-avail-capacity' value='`$db.vnics-capacity.available-capacity`' />
+ <parameter name='tmp.original-used-capacity' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+ <parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="update VNICS_CAPACITY
+ set available_capacity = $tmp.avail-capacity
+ where vnics_group_id = $db.vnics-group-id
+ and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name
+" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failure updating VNICS_CAPACITY table" />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </for>
+ </for>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="insert into VNICS_CONFIGURATION_ID
+ (configuration_id, vnics_group_id)
+ values ( $tmp.configuration-id , $db.vnics-group-id )"
+ pfx='pfx' ></save>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml
new file mode 100644
index 0000000..673c513
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml
@@ -0,0 +1,153 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+ <parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+ <parameter name="outputPath" value="tmp.pmc-url"/>
+ <parameter name="target" value="{configuration-id}"/>
+ <parameter name="replacement" value="`$tmp.configuration-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="pm-mdsal" />
+ <outcome value='success'>
+ <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+ </set>
+ <set>
+ <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+ </set>
+ <switch test='`$tmp.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <block atomic="true">
+ <set>
+ <parameter name='cto-api.default-domain' value='default-domain' />
+ <parameter name='cto-api.default-project'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+ <parameter name='cto-api.cloud-region-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+ <parameter name='cto-api.contrail-route-allotted-resource-id'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+ <parameter name='cto-api.rollback-flag' value='false' />
+ <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+ <parameter name='cto-api.owning-entity'
+ value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+ + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+ + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="logical-link"
+ key="logical-link.link-name = $tmp.link-name" >
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to delete logical-link in AAI: ' + $tmp.link-name`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true"></block>
+ </outcome>
+ </delete>
+ </block>
+ </for>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="configuration"
+ key="configuration.configuration-id = $tmp.configuration-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Unable to find configuration object in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failure updating configuration object in AAI" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-pmc" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failed to delete port-mirror-configuration object in MD-SAL" />
+ </return>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name='error-code' value='200' />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml
new file mode 100644
index 0000000..5a8dad5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml
@@ -0,0 +1,237 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation-validation' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.service-information.subscription-service-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'No service exists for service instance ' + $port-mirror-topology-operation-input.service-information.service-instance-id`" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="No configuration-id supplied in input" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>
+ <outcome value='pprobe'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+ </set>
+ </outcome>
+ <outcome value='PPROBE'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+ </set>
+ </outcome>
+ <outcome value='vprobe'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value='VPROBE'>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value=''>
+ <set>
+ <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="configuration-sub-type must be pprobe or vprobe" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="svc-notification-url is required for assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be CreatePortMirrorConfigurationInstance for assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="configuration-type is required for assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="configuration-information.onap-model-information.model-customization-uuid is required for assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="source vnf-id is required for assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>
+ <outcome value='vprobe'>
+ <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="dest vnf-id is required for vprobe assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='pprobe'>
+ <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="dest pnf-name is required for pprobe assign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="svc-notification-url is required for activate" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be CreatePortMirrorConfigurationInstance for activate" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be DeletePortMirrorConfigurationInstance for unassign" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="svc-notification-url is required for deactivate" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be DeletePortMirrorConfigurationInstance for deactivate" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='enable'>
+ <block atomic="true">
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be ChangePortMirrorConfigurationInstance for enable" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="port-mirror-configuration-request-input.source-port.source-port-id is required for enable" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='disable'>
+ <block atomic="true">
+ <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="request-action must be ChangePortMirrorConfigurationInstance for disable" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="port-mirror-configuration-request-input.source-port.source-port-id is required for disable" />
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml
new file mode 100644
index 0000000..fb3cdb2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml
@@ -0,0 +1,90 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='port-mirror-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-validation' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-sync' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-sync' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-unassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-sync' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='enable'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-enable' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='disable'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-disable' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y' />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-object-path' value="`'/config/GENERIC-RESOURCE-API:services/service/'
+ + $port-mirror-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology'`" />
+ <parameter name='port-mirror-object-path' value="`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'
+ + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />
+ </set>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-network-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-network-topology-operation.xml
new file mode 100644
index 0000000..2558152
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-network-topology-operation.xml
@@ -0,0 +1,34 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='preload-network-topology-operation' mode='sync'>
+ <block atomic="true">
+ <switch test='`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='preload-data.' value='' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='preload-data.preload-network-topology-information.'
+ value='`$preload-network-topology-operation-input.preload-network-topology-information.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />
+ <parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml
new file mode 100644
index 0000000..91fd4a7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml
@@ -0,0 +1,34 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='preload-vf-module-topology-operation' mode='sync'>
+ <block atomic="true">
+ <switch test='`$preload-data.preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='preload-data.' value='' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='preload-data.preload-vf-module-topology-information.'
+ value='`$preload-vf-module-topology-operation-input.preload-vf-module-topology-information.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />
+ <parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="success" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-eipam-pools.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-eipam-pools.xml
new file mode 100644
index 0000000..0f27169
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-eipam-pools.xml
@@ -0,0 +1,935 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc="process-eipam-pools" mode="sync">
+ <switch test='`$tmp.process-eipam-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name='tmp.location8' value='' />
+ <parameter name='tmp.l3-network.level1.v4.entity-id' value='' />
+ <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='' />
+ <parameter name='tmp.l3-network.level1.v4.mask' value='' />
+ <parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level1.v6.entity-id' value='' />
+ <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='' />
+ <parameter name='tmp.l3-network.level1.v6.mask' value='' />
+ <parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level2.v4.entity-id' value='' />
+ <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='' />
+ <parameter name='tmp.l3-network.level2.v4.mask' value='' />
+ <parameter name='tmp.l3-network.level2.v4.pool.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level2.v6.entity-id' value='' />
+ <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='' />
+ <parameter name='tmp.l3-network.level2.v6.mask' value='' />
+ <parameter name='tmp.l3-network.level2.v6.pool.pre-existing' value='false' />
+ <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='false' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name="string" value="`$aai.complex.physical-location-id`" />
+ <parameter name="result" value="tmp.location8"/>
+ <parameter name="begin-index" value="0" />
+ <parameter name="end-index" value="8" />
+ </execute>
+ <set>
+ <parameter name='tmp.region' value='`$aai.complex.region`' />
+ <parameter name='tmp.cloud-region-id' value="`$aai.cloud-region.cloud-region-id`" />
+ <parameter name='tmp.physical-location-id' value="`$aai.complex.physical-location-id`" />
+ <parameter name="tmp.clli" value="`$aai.complex.physical-location-id`" />
+ <parameter name="tmp.zone" value="`$aai.cloud-region.cloud-zone`" />
+ <parameter name="tmp.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="tmp.service-type" value="`$network-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name='eipam-pool.v4.pre-existing' value='false' />
+ <parameter name='eipam-pool.v6.pre-existing' value='false' />
+ <parameter name="tmp.level1-key-value" value="`$tmp.location8 + ':' + $aai.cloud-region.cloud-region-id`" />
+ <parameter name="tmp.level2-key-value" value="`$network-model.network-role + ':' + $tmp.l3-network.network-id`" />
+ <parameter name="tmp.ipv4-cidr-mask" value="`$network-model.ipv4-cidr-mask`" />
+ <parameter name="tmp.ipv6-cidr-mask" value="`$network-model.ipv6-cidr-mask`" />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.subnet-size-override-v4" value="`$network-model.ipv4-cidr-mask`" />
+ <parameter name="eipam-ip-block.subnet-size-override-v6" value="`$network-model.ipv6-cidr-mask`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />
+ <parameter name="target" value="network_assignments_ipv4_subnet_default_assignment_cidr_mask"/>
+ <outcome value='true'>
+ <set>
+ <parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />
+ <parameter name="target" value="network_assignments_ipv6_subnet_default_assignment_cidr_mask"/>
+ <outcome value='true'>
+ <set>
+ <parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while allocating subnet in EIPAM. Error creating level 1 pool. ' + $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-pool.v4.pre-existing"/>
+ <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>
+ <parameter name="field6" value="eipam-pool.v4.pre-existing"/>
+ <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>
+ <parameter name="field8" value="tmp.create-v4-pool-flag" />
+ <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />
+ <parameter name="field10" value="tmp.create-v6-pool-flag" />
+ <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>
+ <parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>
+ </set>
+ </block>
+ </outcome>
+ </call>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv4"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv4' />
+ <parameter name="eipam-ip-block.level" value='1' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$eipam-ip-block.mask`"/>
+ <parameter name="field8" value="ipv4"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='' />
+ <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$eipam-ip-block.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <parameter name='tmp.l3-network.level1.v4.mask' value='`$eipam-ip-block.mask`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate level1 ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>
+ </record>
+ <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv6"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv6' />
+ <parameter name="eipam-ip-block.level" value='1' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$eipam-ip-block.mask`"/>
+ <parameter name="field8" value="ipv6"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='' />
+ <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$eipam-ip-block.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <parameter name='tmp.l3-network.level1.v6.mask' value='`$eipam-ip-block.mask`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate level1 ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>
+ </record>
+ <switch test="`$tmp.l3-network.level1.v6.pool.pre-existing`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.level" value='2' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name='eipam-pool.v4.pre-existing' value='false' />
+ <parameter name='eipam-pool.v6.pre-existing' value='false' />
+ </set>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Error creating level 2 pool, need to attempt rollback"/>
+ </record>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Error creating level 2 pool" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-pool.v4.pre-existing"/>
+ <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>
+ <parameter name="field6" value="eipam-pool.v4.pre-existing"/>
+ <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>
+ <parameter name="field8" value="tmp.create-v4-pool-flag" />
+ <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />
+ <parameter name="field10" value="tmp.create-v6-pool-flag" />
+ <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level2.v4.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>
+ <parameter name='tmp.l3-network.level2.v6.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>
+ </set>
+ </block>
+ </outcome>
+ </call>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level2"/>
+ <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level2"/>
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv4"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level2.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level2.v4.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv4' />
+ <parameter name="eipam-ip-block.level" value='2' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-ip-block.subnet-size-override" value="`$eipam-ip-block.subnet-size-override-v4`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix for level2"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask for level2"/>
+ <parameter name="field7" value="`$eipam-ip-block.mask`"/>
+ <parameter name="field8" value="ipv4"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='' />
+ <parameter name='tmp.l3-network.level2.v4.entity-id' value='`$eipam-ip-block.entity-id`' />
+ <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <parameter name='tmp.l3-network.level2.v4.mask' value='`$eipam-ip-block.mask`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate level2 ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>
+ </record>
+ <switch test="`$tmp.l3-network.level2.v4.pool.pre-existing`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='2' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'></outcome>
+ <outcome value='Other'></outcome>
+ </execute>
+ <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='2' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'></outcome>
+ <outcome value='Other'></outcome>
+ </execute>
+ <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv6"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level2.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level2.v6.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv6' />
+ <parameter name="eipam-ip-block.level" value='2' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-ip-block.subnet-size-override" value="`$eipam-ip-block.subnet-size-override-v6`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask for level1"/>
+ <parameter name="field7" value="`$eipam-ip-block.mask`"/>
+ <parameter name="field8" value="ipv6"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='' />
+ <parameter name='tmp.l3-network.level2.v6.entity-id' value='`$eipam-ip-block.entity-id`' />
+ <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <parameter name='tmp.l3-network.level2.v6.mask' value='`$eipam-ip-block.mask`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate level2 ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>
+ </record>
+ <switch test="`$tmp.l3-network.level2.v6.pool.pre-existing`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='2' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'></outcome>
+ <outcome value='Other'></outcome>
+ </execute>
+ <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='2' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='failure'></outcome>
+ <outcome value='Other'></outcome>
+ </execute>
+ <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">
+ <outcome value='true'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />
+ </return>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />
+ <parameter name="eipam-ip-block.level" value='1' />
+ </set>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Error rolling back EIPAM level 1 pool." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Invalid option to process-eipam" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Invalid option to process-eipam" />
+ </return>
+ </outcome>
+ </switch>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml
new file mode 100644
index 0000000..d713d23
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml
@@ -0,0 +1,661 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <!--This DG relys on generate-FQPN to determine the key_names & key_values for all levels for the specified plan-name.-->
+ <method rpc="process-generic-eipam-pools" mode="sync">
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.eipam-error" value="false" />
+ <parameter name="tmp.create-v4-pool-flag" value="N" />
+ <parameter name="tmp.create-v6-pool-flag" value="N" />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ <parameter name="eipam-pool.v4.pre-existing" value="false"/>
+ <parameter name="eipam-pool.v6.pre-existing" value="false"/>
+ <!-- <parameter name="tmp.network-id" value="`$tmp.l3-network.network-id`" /> -->
+ <parameter name="tmp.network-id" value="`$network-topology-operation-input.network-information.network-id`" />
+ </set>
+ <switch test='`$tmp.service-type`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.service-type" value="`$service-data.service-information.subscription-service-type`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.network-instance-group-id`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.network-instance-group-id" value="`$network-topology-operation-input.network-request-input.network-instance-group-id`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.network-name`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="generate-FQPN-input.network-name" value="`$network-topology-identifier-structure.network-name`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.zone`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="generate-FQPN-input.zone" value="`$aai.cloud-region.cloud-zone`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.network-collection`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name="generate-FQPN-input.network-collection" value="`$aai-network-collection.collection-name`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.aic-cloud-region`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND
+ depth = '0'"
+ pfx='aai.cloud-region' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving cloud region from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated.clli8' />
+ <parameter name='string' value='`$tmp.aic-clli`' />
+ <parameter name='begin-index' value='0' />
+ <parameter name='end-index' value='8' />
+ </execute>
+ <set>
+ <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />
+ </set>
+ </block>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Complex not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving complex from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-input.aic-cloud-region'
+ value='`$aai.cloud-region.cloud-region-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.location-clli8`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND
+ depth = '0'"
+ pfx='aai.cloud-region' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving cloud region from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated.clli8' />
+ <parameter name='string' value='`$tmp.aic-clli`' />
+ <parameter name='begin-index' value='0' />
+ <parameter name='end-index' value='8' />
+ </execute>
+ <set>
+ <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />
+ </set>
+ </block>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Complex not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving complex from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-input.aic-cloud-region'
+ value='`$aai.cloud-region.cloud-region-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$generate-FQPN-input.complex-region`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND
+ depth = '0'"
+ pfx='aai.cloud-region' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving cloud region from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="cloud-region missing relationships in AAI" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='complex.physical-location-id'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated.clli8' />
+ <parameter name='string' value='`$tmp.aic-clli`' />
+ <parameter name='begin-index' value='0' />
+ <parameter name='end-index' value='8' />
+ </execute>
+ <set>
+ <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />
+ </set>
+ </block>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="complex"
+ key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"
+ pfx='aai.complex' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Complex not found in AAI" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving complex from AAI" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <set>
+ <parameter name='generate-FQPN-input.aic-cloud-region'
+ value='`$aai.cloud-region.cloud-region-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='N'></outcome>
+ <outcome value='Y'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v4-address-plan`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="v4FQPN-output." value="generate-FQPN-output."/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='N'></outcome>
+ <outcome value='Y'>
+ <block atomic='true'>
+ <set>
+ <parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v6-address-plan`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="v6FQPN-output." value="generate-FQPN-output."/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ </switch>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <set>
+ <parameter name="eipam-ip-block.subnet-size-override-v4" value="`$network-model.ipv4-cidr-mask`" />
+ <parameter name="eipam-ip-block.subnet-size-override-v6" value="`$network-model.ipv6-cidr-mask`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />
+ <parameter name="target" value="network_assignments_ipv4_subnet_default_assignment_cidr_mask"/>
+ <outcome value='true'>
+ <set>
+ <parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />
+ <parameter name="target" value="network_assignments_ipv6_subnet_default_assignment_cidr_mask"/>
+ <outcome value='true'>
+ <set>
+ <parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="l-idx" start="1" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length + 1`">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.level" value='`$l-idx`' />
+ <parameter name='eipam-pool.v4.pre-existing' value='false' />
+ <parameter name='eipam-pool.v6.pre-existing' value='false' />
+ </set>
+ <!--tmp.level should be set to 1-->
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-create-generic-pool' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Error creating pool for level"/>
+ <parameter name="field5" value="`$l-idx`"/>
+ </record>
+ <return status="failure">
+ <parameter name="tmp.eipam-error" value="true" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while creating pool" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="`$l-idx`"/>
+ <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>
+ <parameter name="field6" value="eipam-pool.v4.pre-existing"/>
+ <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>
+ <parameter name="field8" value="tmp.create-v4-pool-flag" />
+ <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />
+ <parameter name="field10" value="tmp.create-v6-pool-flag" />
+ <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />
+ <parameter name="field12" value="Successful" />
+ </record>
+ </block>
+ </outcome>
+ </call>
+ <switch test="`$tmp.allocate-subnet-flag`">
+ <outcome value=""></outcome>
+ <outcome value='N'>
+ <block atomic='true'>
+ <switch test="`$network-model.use-ipv4`">
+ <outcome value='N'></outcome>
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level:" />
+ <parameter name="field5" value="`$l-idx`" />
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level:" />
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv4"/>
+ <parameter name="field9" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv4' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='eipam-ip-block.v4.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask"/>
+ <parameter name="field7" value="`$eipam-ip-block.v4.allocateSubnetResponse.Mask`"/>
+ <parameter name="field8" value="ipv4"/>
+ <parameter name="field9" value="`$l-idx`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>
+ <parameter name="field5" value="`$l-idx`" />
+ </record>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ </switch>
+ <switch test="`$network-model.use-ipv6`">
+ <outcome value='N'></outcome>
+ <outcome value='Y'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; "
+ pfx='tmp.eipam-subnet-row'>
+ <outcome value='success'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level:" />
+ <parameter name="field5" value="`$l-idx`" />
+ <parameter name="field6" value="Existing eipam-ip-block.mask for level:" />
+ <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>
+ <parameter name="field8" value="ipv6"/>
+ <parameter name="field9" value="`$tmp.eipam-subnet-row.ip-address`"/>
+ </record>
+ <set>
+ <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />
+ <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />
+ <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />
+ <parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <set>
+ <parameter name='eipam-ip-block.entity-id' value='' />
+ <parameter name='eipam-ip-block.ip-prefix' value='' />
+ <parameter name='eipam-ip-block.mask' value='' />
+ <parameter name="eipam-ip-block.allocate-version" value='ipv6' />
+ <parameter name='eipam-ip-block.plans_length' value='0' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='eipam-ip-block.v6.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="eipam-ip-block.ip-prefix"/>
+ <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>
+ <parameter name="field6" value="eipam-ip-block.mask"/>
+ <parameter name="field7" value="`$eipam-ip-block.v6.allocateSubnetResponse.Mask`"/>
+ <parameter name="field8" value="ipv6"/>
+ <parameter name="field9" value="`$l-idx`" />
+ </record>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to allocate ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>
+ <parameter name="field9" value="`$l-idx`" />
+ </record>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value=""></outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Y'></outcome>
+ </switch>
+ </block>
+ </for>
+ <return status='success'>
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml
new file mode 100644
index 0000000..64e5765
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml
@@ -0,0 +1,199 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='query-aai-l3-network-by-network-role' mode='sync'>
+ <block atomic='true'>
+ <switch test='`$query-aai-l3-network-by-network-role-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.aic-cloud-region is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$query-aai-l3-network-by-network-role-input.service-instance-id`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.service-instance-id is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$query-aai-l3-network-by-network-role-input.network-role`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.network-role is null" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-output.' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.aai.l3-networks.' value='' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-networks"
+ key="l3-network.network-role = $query-aai-l3-network-by-network-role-input.network-role"
+ pfx='tmp.aai.l3-networks' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '
+ + $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' and network_role '
+ + $query-aai-l3-network-by-network-role-input.network-role`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error retrieving l3-network from AAI with network-role = ' + $query-aai-l3-network-by-network-role-input.network-role`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$tmp.aai.l3-networks.l3-network_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-output.l3-network.'
+ value='`$tmp.aai.l3-networks.l3-network[0].`' />
+ <!--
+<parameter name='query-aai-l3-network-by-network-role-output.network-id'
+ value='`$tmp.aai.l3-networks.l3-network[0].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name'
+ value='`$tmp.aai.l3-networks.l3-network[0].network-name`' />
+-->
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.l3-network-found' value='0' />
+ </set>
+ <set>
+ <parameter name='cloud.matched.l3-networks_length' value='0' />
+ </set>
+ <for index='network-index' start='0' end='`$tmp.aai.l3-networks.l3-network_length`' >
+ <block>
+ <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`' >
+ <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].related-to`'>
+ <outcome value='cloud-region'>
+ <for silentFailure='false' index='rdidx' start='0' end="`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='cloud-region.cloud-region-id'>
+ <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.aic-cloud-region`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='cloud.matched.l3-networks[$cloud.matched.l3-networks_length].'
+ value='$tmp.aai.l3-networks.l3-network[$network-index].' />
+ </set>
+ <set>
+ <parameter name='cloud.matched.l3-networks_length' value='`$cloud.matched.l3-networks_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <switch test='`$cloud.matched.l3-networks_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' found in AAI'`" />
+ </return>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-output.l3-network.'
+ value='`$cloud.matched.l3-networks[0].`' />
+ <!--
+ <parameter name='query-aai-l3-network-by-network-role-output.network-id'
+ value='`$cloud.matched.l3-networks[0].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name'
+ value='`$cloud.matched.l3-networks[0].network-name`' />
+-->
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <block>
+ <for index='cidx' start='0' end='`$cloud.matched.l3-networks_length`' >
+ <block>
+ <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='ridx' start='0' end='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship_length`' >
+ <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].related-to`'>
+ <outcome value='service-instance'>
+ <for silentFailure='false' index='rdidx' start='0' end="`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data_length`" >
+ <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>
+ <outcome value='service-instance.service-instance-id'>
+ <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.service-instance-id`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='query-aai-l3-network-by-network-role-output.l3-network.'
+ value='`$cloud.matched.l3-networks[$cidx].`' />
+ <!--
+<parameter name='query-aai-l3-network-by-network-role-output.network-id'
+ value='`$cloud.matched.l3-networks[$cidx].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name'
+ value='`$cloud.matched.l3-networks[$cidx].network-name`' />
+-->
+ </set>
+ <set>
+ <parameter name='tmp.l3-network-found' value='1' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='success'></return>
+ </block>
+ <switch test='`$tmp.l3-network-found`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' and service-instance-id=' + $query-aai-l3-network-by-network-role-input.service-instance-id + ' found in AAI'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml
new file mode 100644
index 0000000..6a4ca1b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml
@@ -0,0 +1,46 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='rollback-eipam-ip-assignment' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from EIPAM_IP_ASSIGNMENTS
+ WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id'>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.status'
+ value="`'PENDING_DELETE_' + $vnf-topology-operation-input.vnf-request-information.vnf-id`" />
+ <parameter name='service-data.service-information.service-type'
+ value='NOT_APPLICABLE' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status
+ WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table on rollback." />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback." />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-generated-names.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-generated-names.xml
new file mode 100644
index 0000000..41a6468
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_rollback-generated-names.xml
@@ -0,0 +1,341 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='rollback-generated-names' mode='sync'>
+ <block atomic="true">
+ <switch test='`$rollback-generated-names-input.context-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="rollback-generated-names-input.context-id can not be null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$rollback-generated-names-input.naming-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="rollback-generated-names-input.naming-type can not be null" />
+ </return>
+ </outcome>
+ <outcome value='VM_INSTANCE'>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VM_NAME_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vm_name_prefix' />
+ </set>
+ </outcome>
+ <outcome value='VNFC_INSTANCE'>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VNFC_NAME_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnfc_name_prefix' />
+ </set>
+ </outcome>
+ <outcome value='CLIENT_KEY'>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnf_name_prefix' />
+ </set>
+ </outcome>
+ <outcome value='NETWORK_INSTANCE'>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name'
+ value='NETWORK_INSTANCE_NAME_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column'
+ value='network_instance_name_prefix' />
+ </set>
+ </outcome>
+ <outcome value='SERVICE_INSTANCE'>
+ <block>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name'
+ value='SERVICE_INSTANCE_NAME_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column'
+ value='service_instance_name_prefix' />
+ </set>
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type
+ AND context_id = $rollback-generated-names-input.context-id AND prefix IS NULL AND name_index IS NULL'></delete>
+ </block>
+ </outcome>
+ <outcome value='VNF_INSTANCE'>
+ <set>
+ <parameter name='rollback-generated-names.index-table-name' value='VNF_NAME_INDEX' />
+ <parameter name='rollback-generated-names.index-table.name-prefix-column'
+ value='vnf_name_prefix' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unknown rollbck-generated-name-input.naming-type: ' + $rollback-generated-names-input.naming-type`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='db.grn.' value='' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT distinct prefix from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type
+ AND context_id = $rollback-generated-names-input.context-id'
+ pfx='db.grn.distinct-prefix[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table to retrieve distinct prefix"/>
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.grn.distinct-prefix_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <for index='prefix-index' start='0' end='`$db.grn.distinct-prefix_length`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='db.grn.subset.' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.rb.' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.rb.grn.prefix' value='`$db.grn.distinct-prefix[$prefix-index].prefix`' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type
+ AND context_id = $rollback-generated-names-input.context-id
+ AND prefix = $tmp.rb.grn.prefix order by name_index'
+ pfx='db.grn.subset[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'No entry found in GENERIC_RESOURCE_NAME where context_id = ' + $rollback-generated-names-input.context-id + ' and type = ' + $rollback-generated-names-input.naming-type + ' and prefix = ' + $db.grn.distinct-prefix[$prefix-index].prefix`"/>
+ </return>
+ </outcome>
+ </get-resource>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.rb.sql'
+ value="`'SELECT * from ' + $rollback-generated-names.index-table-name
+ + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column
+ + ' = $tmp.rb.grn.prefix'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.rb.sql`" pfx='db.grn.index-table'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error reading the '
+ + $rollback-generated-names.index-table-name
+ + ' table with ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix
+ + '. MANUAL clean up is required!'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'No entries found in '
+ + $rollback-generated-names.index-table-name
+ + ' with '
+ + $rollback-generated-names.name-prefix-column
+ + ' = '
+ + $tmp.rb.grn.prefix `" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ <set>
+ <parameter name='tmp.rb.grn.max-index'
+ value='`$db.grn.subset[$db.grn.subset_length - 1].name-index`' />
+ </set>
+ <set>
+ <parameter name='tmp.rb.delta-index'
+ value='`$db.grn.index-table.index-number - $tmp.rb.grn.max-index`' />
+ </set>
+ <set>
+ <parameter name='tmp.rb.net-index'
+ value='`$db.grn.index-table.index-number - $db.grn.subset_length`' />
+ </set>
+ <switch test="`$tmp.rb.delta-index == 0`">
+ <outcome value='true'>
+ <switch test="`$tmp.rb.net-index == 0`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.rb.sql'
+ value="`'DELETE from ' + $rollback-generated-names.index-table-name
+ + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column
+ + ' = $tmp.rb.grn.prefix'`" />
+ <!--
++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />
+-->
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.rb.sql`">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error deleting '
+ + $rollback-generated-names.index-table-name
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix
+ + ' AND index_number = ' + $db.index-table.index-number
+ + '. MANUAL clean up is required!'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.rb.sql'
+ value="`'UPDATE ' + $rollback-generated-names.index-table-name
+ + ' set index_number = ' + $tmp.rb.net-index
+ + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column
+ + ' = $tmp.rb.grn.prefix'`" />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.rb.sql`">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error updating '
+ + $rollback-generated-names.index-table-name + '.index_number = '
+ + $tmp.rb.net-index
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix
+ + '. MANUAL clean up is required!'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error updating '
+ + $rollback-generated-names.index-table-name + '.index_number = '
+ + $tmp.rb.net-index
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix
+ + '. MANUAL clean up is required!'`" />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='false'>
+ <block></block>
+ </outcome>
+ </switch>
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type
+ AND context_id = $rollback-generated-names-input.context-id
+ AND prefix = $tmp.rb.grn.prefix'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error deleting GENERIC_RESOURCE_NAME WHERE type = '
+ + $rollback-generated-names-input.naming-type
+ + ' AND context_id = ' + $rollback-generated-names-input.context-id
+ + ' AND prefix = '+ $tmp.rb.grn.prefix
+ + '. MANUAL clean up is required!'`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </delete>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type
+ AND prefix = $tmp.rb.grn.prefix order by name_index'
+ pfx='db.grn.prefix[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='tmp.rb.sql'
+ value="`'DELETE from ' + $rollback-generated-names.index-table-name
+ + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column
+ + ' = $tmp.rb.grn.prefix'`" />
+ <!--
++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />
+-->
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.rb.sql`">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error deleting '
+ + $rollback-generated-names.index-table-name
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix
+ + ' AND index_number = ' + $db.index-table.index-number`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='tmp.rb.grn.last-max-index'
+ value='`$db.grn.prefix[$db.grn.prefix_length - 1].name-index`' />
+ </set>
+ <switch test="`$tmp.rb.net-index > $tmp.rb.grn.last-max-index`">
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.rb.sql'
+ value="`'UPDATE ' + $rollback-generated-names.index-table-name
+ + ' set index_number = ' + $tmp.rb.grn.last-max-index
+ + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column
+ + ' = $tmp.rb.grn.prefix'`" />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="`$tmp.rb.sql`">
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error updating '
+ + $rollback-generated-names.index-table-name + '.index_number = '
+ + $tmp.rb.grn.last-max-index
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-message' value="`'Error updating '
+ + $rollback-generated-names.index-table-name + '.index_number = '
+ + $tmp.rb.grn.last-max-index
+ + ' WHERE ' + $rollback-generated-names.name-prefix-column
+ + ' = ' + $tmp.rb.grn.prefix`" />
+ </return>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml
new file mode 100644
index 0000000..f49173a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml
@@ -0,0 +1,150 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+ <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+ <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="in-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml
new file mode 100644
index 0000000..cb8450b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml
@@ -0,0 +1,348 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-assign' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf-provided-allottedresource`" />
+ <parameter name="outputPath" value="tmp.vnf-p-ar-url" />
+ <parameter name="target" value="{service-instance-id}" />
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.vnf-p-ar-url`" />
+ <parameter name="outputPath" value="tmp.vnf-p-ar-url" />
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.sz-vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing security-zone-allotted-resource with order status of ' + $sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+ </return>
+ </outcome>
+ <outcome value='PendingDelete'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Existing security-zone-allotted-resource with order status of ' + $sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+ <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+ <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+ </set>
+ <set>
+ <parameter name='sz-ar-identifiers.consuming-service-instance-id' value="`$security-zone-topology-operation-input.service-information.service-instance-id` " />
+ <parameter name='sz-ar-identifiers.parent-service-instance-id' value="`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+ <parameter name='sz-ar-identifiers.allotted-resource-type' value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+ <parameter name='sz-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ </set>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.'
+value="`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+ </set>
+ <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+ <outcome value=''>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-invariant-uuid'
+value="`$ar-model.invariant-uuid`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+ <outcome value=''>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-uuid'
+value="`$ar-model.uuid`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+ <outcome value=''>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-version'
+value="`$ar-model.version`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$ar-model.ecomp-generated-naming`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <switch test='`$ar-model.naming-policy`'>
+ <outcome value='oam_security_zone_name'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`"/>
+ </execute>
+ <set>
+ <parameter name='sz-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`"/>
+ </execute>
+ <set>
+ <parameter name='sz-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in allotted-resource-model data. Ecomp-generated-naming should be true" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.'
+value="`$sz-ar-identifiers.`" />
+ </set>
+ <set>
+ <parameter name='sz-ar-assignments.vlan-tag' value="`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag` " />
+ <parameter name='sz-ar-assignments.trusted-network-role' value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role` " />
+ <parameter name='sz-ar-assignments.untrusted-network-role' value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role` " />
+ <parameter name='sz-ar-assignments.security-zone-service-instance-id' value="`$tmp.ar.parent-service-instance-id` " />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-panorama-name' mode='sync' ></call>
+ <set>
+ <parameter name='sz-ar-assignments.security-zone-name-untrusted' value="`$tmp.untrust-sz` " />
+ <parameter name='sz-ar-assignments.security-zone-name-trusted' value="`$tmp.trust-sz` " />
+ </set>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.'
+value="`$sz-ar-assignments.`" />
+ </set>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.cidx' value="`0`" />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+ <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$cidx`' />
+ <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+ <parameter name='tmp.found-cidx' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-cidx`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="description" value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+ <parameter name="selflink" value="`$tmp.ar.self-link`" />
+ <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+ <parameter name="model-version-id" value="`$ar-model.uuid`" />
+ <parameter name="operational-status" value="null" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="parent" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml
new file mode 100644
index 0000000..a234d0d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml
@@ -0,0 +1,127 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-create' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='PendingCreate'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+ <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+ <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml
new file mode 100644
index 0000000..14ecf29
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml
@@ -0,0 +1,150 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+ <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+ <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml
new file mode 100644
index 0000000..acad449
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml
@@ -0,0 +1,130 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-delete' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+ <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+ <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <set>
+ <parameter name='sz-ar-assignments.' value="" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml
new file mode 100644
index 0000000..0f11b39
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml
@@ -0,0 +1,105 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+ </set>
+ <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for security-zone-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation.xml
new file mode 100644
index 0000000..5cb18ae
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_security-zone-topology-operation.xml
@@ -0,0 +1,56 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='security-zone-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-security-zone-input' mode='sync' ></call>
+ <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-assign' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-create' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-activate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-deactivate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-delete' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-unassign' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="ack-final" value="Y"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
new file mode 100644
index 0000000..6631d89
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
@@ -0,0 +1,156 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-aai-pnf-put' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <for silentFailure='true' index="aidx" start="0" end="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`">
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].name`'>
+ <outcome value='pnf-name'>
+ <set>
+ <parameter name='ss.param.pnf-name' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-name-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='pnf-name2'>
+ <set>
+ <parameter name='ss.param.pnf-name2' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-name2-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='pnf-id'>
+ <set>
+ <parameter name='ss.param.pnf-id' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-id-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='aai-pnf-put'>
+ <set>
+ <parameter name='ss.param.aai-pnf-put-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv6-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv6-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.ipv6-oam-address-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-name = $ss.param.pnf-name "
+ pfx="tmp.aai.pnf" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error to get pnf with pnf-name=' + $ss.param.pnf-name + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'pnf with pnf-name=' + $ss.param.pnf-name + ' not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="ss.selflink"
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' +
+ $service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id +
+ '/service-data/pnfs/pnf/' +
+ $ss.param.pnf-id +
+ '/pnf-data/pnf-topology/'`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-name = $ss.param.pnf-name " >
+ <parameter name="pnf-name2" value="`$ss.param.pnf-name2`" />
+ <parameter name="prov-status" value="PREPROV" />
+ <parameter name="selflink" value="`$ss.selflink`" />
+ <parameter name="ipaddress-v4-oam" value="`$ss.param.ipv4-oam-address`" />
+ <parameter name="ipaddress-v6-oam" value="`$ss.param.ipv6-oam-address`" />
+ <parameter name="model-customization-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-customization-uuid`" />
+ <parameter name="model-invariant-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-invariant-uuid`" />
+ <parameter name="model-version-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-uuid`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update pnf.pnf-name in AnAI with pnf-name=' + $ss.param.pnf-name`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'pnf with pnf-name =' + $ss.param.pnf-name + ' is not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].value'
+ value='SUCCESS' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-aai-pnf-put.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml
new file mode 100644
index 0000000..c64485b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml
@@ -0,0 +1,6600 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-aai-vf-module-put' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='nidx' value='0' />
+ </set>
+ <for silentFailure='true' index="bidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`" >
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />
+ <parameter name="target" value="sriov"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />
+ <parameter name="target" value="_net_id"/>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ss.network[$nidx].netid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ <set>
+ <parameter name='nidx' value='`$nidx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`'>
+ <outcome value='vf_module_id'>
+ <set>
+ <parameter name='ss.param.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf-module-name'>
+ <set>
+ <parameter name='ss.param.vf-module-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group-id'>
+ <set>
+ <parameter name='ss.param.volume-group-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group-name'>
+ <set>
+ <parameter name='ss.param.volume-group-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='aic-cloud-region'>
+ <set>
+ <parameter name='ss.param.aic-cloud-region' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-name'>
+ <set>
+ <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='oam-interface-name'>
+ <set>
+ <parameter name='ss.param.oam-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.oam-interface-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='=”lo0-interface-name'>
+ <set>
+ <parameter name='ss.param.lo0-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.lo0-interface-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address-prefix'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address-prefix' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-prefix-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='loopback0_ipv4_address'>
+ <set>
+ <parameter name='ss.param.loopback0-ipv4-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.loopback0-ipv4-address-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-loopback0-address'>
+ <set>
+ <parameter name='ss.param.ipv4-loopback0-address' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-loopback0-address-index' value='`bidx`' />
+ </set>
+ </outcome>
+ <outcome value='nfc-naming-code'>
+ <set>
+ <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.nfc-naming-code-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='nfc-function'>
+ <set>
+ <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.nfc-function-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-customization-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-invariant-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-version'>
+ <set>
+ <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-version-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='as-number'>
+ <set>
+ <parameter name='ss.param.as-number' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.as-number-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-id-outer'>
+ <set>
+ <parameter name='ss.param.vlan-id-outer' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vlan-id-outer-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='availability_zone_0'>
+ <set>
+ <parameter name='ss.param.availability-zone-0' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.availability-zone-0-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='aai-vf-module-put'>
+ <block>
+ <set>
+ <parameter name='ss.param.aai-vf-module-put-index' value='`$bidx`' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='generic-vnf'>
+ <set>
+ <parameter name='ss.resource-key.generic-vnf' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf-module'>
+ <set>
+ <parameter name='ss.resource-key.vf-module' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group'>
+ <set>
+ <parameter name='ss.resource-key.volume-group' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc'>
+ <set>
+ <parameter name='ss.resource-key.vnfc' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='connection-points'>
+ <set>
+ <parameter name='ss.resource-key.connection-points' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='l-interface'>
+ <set>
+ <parameter name='ss.resource-key.l-interface' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='l3-netework'>
+ <set>
+ <parameter name='ss.resource-key.l3-network' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </for>
+ <set>
+ <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ </set>
+ </block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id "
+ pfx="tmp.aai.vnf" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error to get generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI. '`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <switch test="`$ss.param.ipv4-loopback0-address != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.ipv4-loopback0-address`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.ipv4-loopback0-address = ' + $ss.param.ipv4-loopback0-address`"/>
+ <parameter name="field3" value="__SKIP ipv4-loopback0-address update for generic-vnf in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$ss.param.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf.ipv4-loopback0-address in AnAI with ipv4-loopback0-address=' + $ss.param.ipv4-loopback0-address + '; ' + $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.ipv4-loopback0-address-updated' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.ipv4-oam-address != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.ipv4-oam-address`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.ipv4-oam-address = ' + $ss.param.ipv4-oam-address`"/>
+ <parameter name="field3" value="__SKIP ipv4-oam-address update for generic-vnf in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$ss.param.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf.ipv4-oam-address in AnAI with ipv4-oam-address=' + $ss.param.ipv4-oam-address + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI' + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.ipv4-oam-address-updated' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.as-number != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.as-number`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.as-number = ' + $ss.param.as-number`"/>
+ <parameter name="field3" value="__SKIP as-number update for generic-vnf in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="as-number" value='`$ss.param.as-number`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf.as-number in AnAI with as-number=' + $ss.param.as-number + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.as-number-updated' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.vlan-id-outer != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.vlan-id-outer`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.vlan-id-outer = ' + $ss.param.vlan-id-outer`"/>
+ <parameter name="field3" value="__SKIP vlan-id-outer update for generic-vnf in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vlan-id-outer" value='`$ss.param.vlan-id-outer`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.as-number-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf.vlan-id-outer in AnAI with as-number=' + $ss.param.as-number + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.as-number-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.vlan-id-outer-updated' value='true' />
+ </set>
+ </outcome>
+ </update>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.availability-zone-0 != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.availability-zone-0`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.availability-zone-0 = ' + $ss.param.availability-zone-0`"/>
+ <parameter name="field3" value="__SKIP availability-zone-0 update for generic-vnf in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.availability-zone.related-link'
+ value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/' +
+ $prop.cloud-region.cloud-owner + '/' + $ss.param.aic-cloud-region +
+ '/availability-zones/availability-zone/' +
+ $ss.param.availability-zone-0`" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`$ss.availability-zone.related-link`" />
+ <!--
+<parameter name="relationship-list.relationship[0].related-to" value="availability-zone" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" /><parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" /><parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$ss.param.aic-cloud-region`" /><parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" /><parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$ss.param.availability-zone-0`" />
+-->
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.as-number-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.vlan-id-outer-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.vlan-id-outer update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.vlan-id-outer update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.vlan-id-outer update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to save availability-zone relationship for generic-vnf in AnAI with availability-zone-name =' + $ss.param.as-number + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.ipv4-loopback0-address-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.ipv4-oam-address-updated`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.as-number-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.vlan-id-outer-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf.vlan-id-outer update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.vlan-id-outer update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.vlan-id-outer update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to create availability-zone relationship because generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.availability-zone-0-updated' value='true' />
+ </set>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id "
+ pfx="tmp.aai.vfmdoule" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get vf-module in AnAI with vf-module-id = ' + $ss.param.vf-module-id + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'vf-module not found in AnAI with vf-module-id=' + $ss.param.vf-module-id + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='ss.selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' +
+$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id +
+'/service-data/vnfs/vnf/' +
+$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id +
+'/vnf-data/vf-modules/vf-module/' +
+$ss.param.vf-module-id +
+'/vf-module-data/vf-module-topology/'`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$ss.param.vf-module-name`' />
+ <parameter name="selflink" value='`$ss.selflink`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update vf-module-name with vf-module-id = ' + $ss.param.vf-module-id + ' in AnAI; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update vf-module-name with vf-module-id =' + $ss.param.vf-module-id + ' because vf-module is not found in AAI' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block atomic='true'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id"
+ pfx="tmp.aai.volume-group" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get volume-group in AnAI with volume-group-id = ' + $ss.param.volume-group-id + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$ss.param.volume-group-name`' />
+ <parameter name="volume-group-id" value='`$ss.param.volume-group-id`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to update volume-group with volume-group-id =' + $ss.param.volume-group-id + ' and volume-group-name = ' + $ss.param.volume-group-name + ' in AnAI.' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id + '; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <parameter name="nfc-naming-code" value='`$ss.param.nfc-naming-code`' />
+ <parameter name="nfc-function" value='`$ss.param.nfc-function`' />
+ <parameter name="model-customization-id" value='`$ss.param.vnfc-model-customization-uuid`' />
+ <parameter name="model-invariant-id" value='`$ss.param.vnfc-model-invariant-uuid`' />
+ <parameter name="model-version-id" value='`$ss.param.vnfc-model-version`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create vnfc with vnfc-name =' + $ss.param.vnfc-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create vnfc with vnfc-name =' + $ss.param.vnfc-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.connection-points`">
+ <outcome value='connection-points'>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp"
+ key="cp.cp-instance-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id
+ AND vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <parameter name="cp-instance-id"
+ 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.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create connection-point with cp-instance-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create connection-point with cp-instance-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <parameter name="vlan-tag-id"
+ 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.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid`' />
+ <parameter name="vlan-tag-role"
+ 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.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-description`' />
+ <parameter name="vlan-id-outer"
+ 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.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-id`' />
+ <outcome value='success'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.cp.related-link'
+ value="`'/aai/v$/network/vnfcs/vnfc/' +
+ $ss.param.vnfc-name +
+ '/cps/cp/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag:relationship-list"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <parameter name="relationship-list.relationship[0].related-to" value="cp" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`$ss.cp.related-link`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create cp relationship for vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create cp relationship for vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </for>
+ </outcome>
+ </save>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="interface-name" value='`$ss.param.oam-interface-name`' />
+ <parameter name="interface-role" value='OAM' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.oam-interface-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.oam-interface-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list"
+ key="l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-oam-address
+ AND generic-vnf.vnf-id = $ss.param.vnf-id
+ AND l-interface.interface-name = $ss.param.oam-interface-name" >
+ <parameter name="l3-interface-ipv4-address" value='`$ss.param.ipv4-oam-address`' />
+ <parameter name="l3-interface-ipv4-prefix-length" value='`$ss.param.ipv4-oam-address-prefix`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.ipv4-oam-address + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.ipv4-oam-address + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <block atomic='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="interface-name" value='`$ss.param.lo0-interface-name`' />
+ <parameter name="interface-role" value='loopback' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list"
+ key="l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-loopback0-address
+ AND generic-vnf.vnf-id = $ss.param.vnf-id
+ AND l-interface.interface-name = $ss.param.lo0-interface-name" >
+ <parameter name="l3-interface-ipv4-address" value='`$ss.param.ipv4-loopback0-address`' />
+ <parameter name="l3-interface-ipv4-prefix-length" value='32' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.loopback0-ipv4-address + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.loopback0-ipv4-address + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.l3-network`">
+ <outcome value='l3-netework'>
+ <for silentFailure='true' index='n' start='0' end='`$nidx`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.l3-network.related-link'
+ value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`$ss.l3-network.related-link`" />
+ <!--
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$ss.network[$n].netid`" />
+-->
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l3-network`">
+ <outcome value='l3-netework'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>
+ </record>
+ <for silentFailure='true' index='n' start='0' end='`$nidx`' >
+ <set>
+ <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+ <!--
+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+-->
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND related-to = l3-network
+ AND relationship.related-link = $tmp.related-link" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create generic-vnf releationship for l3-network with network-id =' + $ss.network[$n].netid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <block>
+ <block atomic='true'>
+ <block>
+ <block>
+ <block>
+ <switch test="`$ss.resource-key.generic-vnf`">
+ <outcome value='generic-vnf'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />
+ <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />
+ <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />
+ <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vf-module`">
+ <outcome value='vf-module'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vf-module update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND vf-module.vf-module-id = $ss.param.vf-module-id " >
+ <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />
+ <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.volume-group`">
+ <outcome value='volume-group'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK volume-group update"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="volume-group"
+ key="cloud-region.cloud-owner = $prop.cloud-owner
+ AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region
+ AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND volume-group-id = $ss.param.volume-group-id" >
+ <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$ss.resource-key.l3-network`">
+ <outcome value='l3-netework'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>
+ </record>
+ <for silentFailure='true' index='n' start='0' end='`$nidx`' >
+ <set>
+ <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+ <!--
+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+-->
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND related-to = l3-network
+ AND relationship.related-link = $tmp.related-link" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`' Failed to create generic-vnf releationship for l3-network with network-id =' + $ss.network[$n].netid + ' in AnAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].value'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic='true'>
+ <block>
+ <set>
+ <parameter name='nidx' value='0' />
+ </set>
+ <for silentFailure='true' index="bidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`" >
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />
+ <parameter name="target" value="sriov"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />
+ <parameter name="target" value="_net_id"/>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ss.network[$nidx].netid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ <set>
+ <parameter name='nidx' value='`$nidx + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`'>
+ <outcome value='vf_module_id'>
+ <set>
+ <parameter name='ss.param.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf_module_name'>
+ <set>
+ <parameter name='ss.param.vf-module-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group-id'>
+ <set>
+ <parameter name='ss.param.volume-group-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group-name'>
+ <set>
+ <parameter name='ss.param.volume-group-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='aic-cloud-region'>
+ <set>
+ <parameter name='ss.param.aic-cloud-region' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-name'>
+ <set>
+ <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='oam-interface-name'>
+ <set>
+ <parameter name='ss.param.oam-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.oam-interface-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='=”lo0-interface-name'>
+ <set>
+ <parameter name='ss.param.lo0-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.lo0-interface-name-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address-prefix'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address-prefix' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-prefix-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='loopback0_ipv4_address'>
+ <set>
+ <parameter name='ss.param.loopback0-ipv4-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.loopback0-ipv4-address-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-loopback0-address'>
+ <set>
+ <parameter name='ss.param.ipv4-loopback0-address' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.ipv4-loopback0-address-index' value='`bidx`' />
+ </set>
+ </outcome>
+ <outcome value='nfc-naming-code'>
+ <set>
+ <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.nfc-naming-code-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='nfc-function'>
+ <set>
+ <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.nfc-function-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-customization-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-invariant-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-version'>
+ <set>
+ <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vnfc-model-version-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='as-number'>
+ <set>
+ <parameter name='ss.param.as-number' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.as-number-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-id-outer'>
+ <set>
+ <parameter name='ss.param.vlan-id-outer' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.vlan-id-outer-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='availability_zone_0'>
+ <set>
+ <parameter name='ss.param.availability-zone-0' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />
+ <parameter name='ss.param.availability-zone-0-index' value='`$bidx`' />
+ </set>
+ </outcome>
+ <outcome value='aai-vf-module-put'>
+ <block>
+ <set>
+ <parameter name='ss.param.aai-vf-module-put-index' value='`$bidx`' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='generic-vnf'>
+ <set>
+ <parameter name='ss.resource-key.generic-vnf' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf-module'>
+ <set>
+ <parameter name='ss.resource-key.vf-module' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='volume-group'>
+ <set>
+ <parameter name='ss.resource-key.volume-group' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc'>
+ <set>
+ <parameter name='ss.resource-key.vnfc' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='connection-points'>
+ <set>
+ <parameter name='ss.resource-key.connection-points' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='l-interface'>
+ <set>
+ <parameter name='ss.resource-key.l-interface' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='l3-netework'>
+ <set>
+ <parameter name='ss.resource-key.l3-network' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </for>
+ <set>
+ <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ </set>
+ </block>
+ <set>
+ <parameter name='tmp.return-failure' value ='true' />
+ </set>
+ <block atomic='true'>
+ <switch test="`$ss.resource-key.vnfc`">
+ <outcome value='vnfc'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vnfc save"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $ss.param.vnfc-name" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK vlan-tag save"/>
+ </record>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </for>
+ </block>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.oam-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.oam-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.l-interface`">
+ <outcome value='l-interface'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>
+ </record>
+ <switch test="`$ss.param.lo0-interface-name != ''`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l-interface"
+ key="l-interface.interface-name = $ss.param.lo0-interface-name
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.resource-key.l3-network`">
+ <outcome value='l3-netework'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>
+ </record>
+ <for silentFailure='true' index='n' start='0' end='`$nidx`' >
+ <set>
+ <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+ <!--
+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />
+-->
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id
+ AND related-to = l3-network
+ AND relationship.related-link = $tmp.related-link" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ <switch test='`$tmp.return-failure`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='`$error-message`' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path + ' not found in AAI. Consider silent success!'`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />
+ </set>
+ </outcome>
+ </delete>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status'
+ value='DELETED' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].value'
+ value='SUCCESS' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-aai-vfput.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml
new file mode 100644
index 0000000..877c272
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml
@@ -0,0 +1,434 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-aai-vnf-put' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <for silentFailure='true' index="aidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].name`'>
+ <outcome value='vnf_name'>
+ <set>
+ <parameter name='ss.param.vnf-name' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.vnf-name-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnf_id'>
+ <set>
+ <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.vnf-id-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='license-assignment-group-uuid'>
+ <set>
+ <parameter name='ss.param.license-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.license-assignment-group-uuid-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='entitlement-assignment-group-uuid'>
+ <set>
+ <parameter name='ss.param.entitlement-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.entitlement-assignment-group-uuid-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='aai-vnf-put'>
+ <set>
+ <parameter name='ss.param.aai-vnf-put-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='license-key'>
+ <set>
+ <parameter name='ss.param.license-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.license-key-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='entitlement-key'>
+ <set>
+ <parameter name='ss.param.entitlement-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.entitlement-key-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id "
+ pfx="tmp.aai.vnf" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error to get generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="ss.selflink"
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id +
+ '/service-data/vnfs/vnf/' +
+ $ss.param.vnf-id +
+ '/vnf-data/vnf-topology/'`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vnf-name" value="`$ss.param.vnf-name`" />
+ <parameter name="prov-status" value="PREPROV" />
+ <parameter name="operational-status" value="out-of-service-path" />
+ <parameter name="selflink" value="`$ss.selflink`" />
+ <parameter name="model-customization-id"
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid`" />
+ <parameter name="model-invariant-id"
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-invariant-uuid`" />
+ <parameter name="model-version-id"
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-uuid`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update generic-vnf.vnf-name in AnAI with vnf-name=' + $ss.param.vnf-name`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <switch test="`$ss.param.license-assignment-group-uuid != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.license-assignment-group-uuid`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.license-assignment-group-uuid = ' + $ss.param.license-assignment-group-uuid`"/>
+ <parameter name="field3" value="__SKIP saving license object in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="license"
+ key="license.group-uuid = $ss.param.license-assignment-group-uuid
+ AND license.resource-uuid = $ss.param.license-key
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="group-uuid" value='`$ss.param.license-assignment-group-uuid`' />
+ <parameter name="resource-uuid" value='`$ss.param.license-key`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to save license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AA. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.license-updated' value='true' />
+ </set>
+ </outcome>
+ </save>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <switch test="`$ss.param.entitlement-assignment-group-uuid != ''`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$ss.param.entitlement-assignment-group-uuid`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.entitlement-assignment-group-uuid = ' + $ss.param.entitlement-assignment-group-uuid`"/>
+ <parameter name="field3" value="__SKIP saving entitlement object in AnAI__"/>
+ </record>
+ </outcome>
+ <outcome value='false'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="entitlement"
+ key="entitlement.group-uuid = $ss.param.entitlement-assignment-group-uuid
+ AND entitlement.resource-uuid = $ss.param.entitlement-key
+ AND generic-vnf.vnf-id = $ss.param.vnf-id" >
+ <parameter name="group-uuid" value='`$ss.param.entitlement-assignment-group-uuid`' />
+ <parameter name="resource-uuid" value='`$ss.param.entitlement-key`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ <switch test="`$ss.license-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK license"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="license"
+ key="license.group-uuid = $ss.param.license-assignment-group-uuid
+ AND license.resource-uuid = $ss.param.license-key" >
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback license because license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' NOT FOUND in AAI. SILENT SUCCESS! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of license completed. '`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to save entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <block>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK generic-vnf update"/>
+ </record>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $ss.param.vnf-id " >
+ <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />
+ </set>
+ </outcome>
+ </update>
+ </block>
+ <switch test="`$ss.license-updated`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK license"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="license"
+ key="license.group-uuid = $ss.param.license-assignment-group-uuid
+ AND license.resource-uuid = $ss.param.license-key" >
+ <outcome value='failure'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Failed to rollback license because license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' NOT FOUND in AAI. SILENT SUCCESS! '`" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='error-message' value="`$error-message + ' Rollback of license completed. '`" />
+ </set>
+ </outcome>
+ </delete>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' is not found in AAI. ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].value'
+ value='SUCCESS' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-aai-vnfput.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml
new file mode 100644
index 0000000..d3dce91
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml
@@ -0,0 +1,281 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-capability-param-resolution' mode='sync'>
+ <block atomic='true'>
+ <switch test="`$ss.capability-type`">
+ <outcome value='vnf'>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='resource-resolution-split' />
+ <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />
+ <parameter name='regex' value='\$\{' />
+ </execute>
+ <set>
+ <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>
+ <parameter name="tmp.s2.s2" value=''/>
+ <parameter name="tmp.resolved.var.value" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='s2' />
+ <parameter name='original_string' value='`$resource-resolution-split[1]`' />
+ <parameter name='regex' value='\}' />
+ </execute>
+ <switch test='`$s2_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <block>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ <set>
+ <parameter name="tmp.s2.s2" value='`$s2[1]`'/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].name == $tmp.s2.s1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].value`'/>
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.s1`' />
+ <parameter name='target' value='`$tmp.resolved.var.value`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ <switch test="`$tmp.s2.s2 == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.result`' />
+ <parameter name='target' value='`$tmp.s2.s2`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='vf-module'>
+ <switch test="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='resource-resolution-split' />
+ <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' />
+ <parameter name='regex' value='\$\{' />
+ </execute>
+ <set>
+ <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>
+ <parameter name="tmp.s2.s2" value=''/>
+ <parameter name="tmp.resolved.var.value" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='s2' />
+ <parameter name='original_string' value='`$resource-resolution-split[1]`' />
+ <parameter name='regex' value='\}' />
+ </execute>
+ <switch test='`$s2_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <block>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ <set>
+ <parameter name="tmp.s2.s2" value='`$s2[1]`'/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].name == $tmp.s2.s1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].value`'/>
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.s1`' />
+ <parameter name='target' value='`$tmp.resolved.var.value`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ <switch test="`$tmp.s2.s2 == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.result`' />
+ <parameter name='target' value='`$tmp.s2.s2`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='pnf'>
+ <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='i' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for silentFailure='true' index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='resource-resolution-split' />
+ <parameter name='original_string' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />
+ <parameter name='regex' value='\$\{' />
+ </execute>
+ <set>
+ <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>
+ <parameter name="tmp.s2.s2" value=''/>
+ <parameter name="tmp.resolved.var.value" value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='s2' />
+ <parameter name='original_string' value='`$resource-resolution-split[1]`' />
+ <parameter name='regex' value='\}' />
+ </execute>
+ <switch test='`$s2_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ </outcome>
+ <outcome value='2'>
+ <block>
+ <set>
+ <parameter name="tmp.s2.s1" value='`$s2[0]`'/>
+ </set>
+ <set>
+ <parameter name="tmp.s2.s2" value='`$s2[1]`'/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='cn' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cn].name == $tmp.s2.s1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.resolved.var.value' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cn].value`'/>
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.s1`' />
+ <parameter name='target' value='`$tmp.resolved.var.value`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ <switch test="`$tmp.s2.s2 == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>
+ <parameter name='source' value='`$tmp.result`' />
+ <parameter name='target' value='`$tmp.s2.s2`' />
+ <parameter name='outputPath' value='tmp.result' />
+ </execute>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-capability-param-resolution"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml
new file mode 100644
index 0000000..a8ef58d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml
@@ -0,0 +1,50 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-generate-name-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' ></call>
+ <switch test='`$ss.input.param.index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="ss.input.param.index is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.service-data.param.index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="ss.service-data.param.index is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-type`'>
+ <outcome value='vnf'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name-changeassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='vf-module'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name-changeassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unknown capability-type [' + $ss.capability-type + '], valid value are: vnf, pnf, vf-module'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name.xml
new file mode 100644
index 0000000..c6b5a9a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-generate-name.xml
@@ -0,0 +1,31 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-generate-name' mode='sync'>
+ <block atomic="true">
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' ></call>
+ <switch test="`$ss.capability-type`">
+ <outcome value='vnf'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name' mode='sync' ></call>
+ </outcome>
+ <outcome value='vf-module'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name' mode='sync' ></call>
+ </outcome>
+ <outcome value='pnf'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-generate-name' mode='sync' ></call>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='`$pathname`' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml
new file mode 100644
index 0000000..60c749a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml
@@ -0,0 +1,625 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-mS-mac-address-assign' mode='sync'>
+ <block atomic='true'>
+ <switch test="`$ss.capability-name`">
+ <outcome value='Other'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='401' />
+ <parameter name='error-message' value='ss.capability-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='401' />
+ <parameter name='error-message' value='ss.capability-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='null'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='401' />
+ <parameter name='error-message' value='ss.capability-name is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='mS-mac-address-assign'>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is mS-mac-address-assign"/>
+ </record>
+ </outcome>
+ </switch>
+ <switch test="`$ss.capability-action`">
+ <outcome value='Other'></outcome>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is not set"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='401' />
+ <parameter name='error-message' value='ss.capability-action is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='null'></outcome>
+ <outcome value='assign'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is assign"/>
+ </record>
+ </outcome>
+ <outcome value='unassign'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is unassign"/>
+ </record>
+ </outcome>
+ </switch>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: call self-serve-capability-param-resolution DG"/>
+ </record>
+ <set>
+ <!--<parameter name='name' value='value' />-->
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Failure calling self-serve-capability-param-resolution"/>
+ </record>
+ <return status='failure'>
+ <parameter name='error-code' value='402' />
+ <parameter name='error-message' value='Failure calling self-serve-capability-param-resolution' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'></outcome>
+ </call>
+ </block>
+ <block atomic='true'>
+ <set>
+ <parameter name='ma.elements.element_length' value='0' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-parameters-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />
+ </set>
+ <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: vf-module-param-index"/>
+ <parameter name="field3" value='`$vf-module-param-index`'/>
+ </record>
+ <block>
+ <set>
+ <parameter name='vfModuleParamsCapabilityName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name`' />
+ <parameter name='tmp.vnfHostName' value='' />
+ <parameter name='tmp.policyInstanceName' value='' />
+ <parameter name='tmp.cloudParamName' value='' />
+ <parameter name='tmp.swName' value='' />
+ <parameter name='tmp.resourceValue' value='' />
+ </set>
+ <switch test="`$ss.capability-name == $vfModuleParamsCapabilityName`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Found ss.capability-name MATCH"/>
+ </record>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='tmp.resourceValue' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.cloudParamName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`' />
+ </set>
+ <set>
+ <parameter name='tmp.resource-resolution-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.`' />
+ </set>
+ <switch test="`$tmp.resource-resolution-data.status == 'PENDING'`">
+ <outcome value='false'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: reseouce-resolution-data.status is not PENDING"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='401' />
+ <parameter name='error-message' value='reseouce-resolution-data.status is not PENDING' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.resource-key-length' value='`$tmp.resource-resolution-data.resource-key_length`' />
+ </set>
+ <for index='key-index' start='0' end='`$tmp.resource-resolution-data.resource-key_length`' >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: key-index"/>
+ <parameter name="field3" value='`$key-index`'/>
+ </record>
+ <block>
+ <switch test="`$tmp.resource-resolution-data.resource-key[$key-index].name`">
+ <outcome value='key'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = vnf-name"/>
+ </record>
+ <set>
+ <parameter name='tmp.vnfHostName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved vnfHostName: "/>
+ <parameter name="field3" value='`$tmp.vnfHostName`'/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='policy-instance-name'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = policy-instance-name-name"/>
+ </record>
+ <set>
+ <parameter name='tmp.policyInstanceName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved policyInstanceName: "/>
+ <parameter name="field3" value='`$tmp.policyInstanceName`'/>
+ </record>
+ </block>
+ </outcome>
+ <outcome value='sw-name'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = sw-name"/>
+ </record>
+ <set>
+ <parameter name='tmp.swName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved swName: "/>
+ <parameter name="field3" value='`$tmp.swName`'/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.vnfHostName`">
+ <outcome value='null'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: vnfHostName is not set"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='vnfHostName is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: vnfHostName is not set"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='vnfHostName is not set' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.cloudParamName`">
+ <outcome value='null'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: cloudParamName is not set"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='cloudParamName is not set' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value=''>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: cloudParamName is not set"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='cloudParamName is not set' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.policyInstanceName`">
+ <outcome value='null'>
+ <switch test="`$ss.capability-action` == 'assign'">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: policyInstanceName is not set and action is assign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='policyInstanceName is not set and action is assign' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <switch test="`$ss.capability-action` == 'assign'">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: policyInstanceName is not set and action is assign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='policyInstanceName is not set and action is assign' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.swName`">
+ <outcome value='null'>
+ <switch test="`$ss.capability-action` == 'assign'">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: swName is not set and action is assign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='swName is not set and action is assign' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <switch test="`$ss.capability-action` == 'assign'">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: swName is not set and action is assign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='403' />
+ <parameter name='error-message' value='swName is not set and action is assign' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ma.elements.element[$ma.elements.element_length].policy-instance-name' value='`$tmp.policyInstanceName`' />
+ <parameter name='ma.elements.element[$ma.elements.element_length].vnf-host-name' value='`$tmp.vnfHostName`' />
+ <parameter name='ma.elements.element[$ma.elements.element_length].cloud-param-name' value='`$tmp.cloudParamName`' />
+ <parameter name='ma.elements.element[$ma.elements.element_length].sw-name' value='`$tmp.swName`' />
+ </set>
+ <switch test="`$tmp.resourceValue`">
+ <outcome value='Other'>
+ <set>
+ <parameter name='ma.elements.element[$ma.elements.element_length].resource-value' value='`$tmp.resourceValue`' />
+ </set>
+ </outcome>
+ <outcome value='null'></outcome>
+ <outcome value=''></outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Adding this vf-module-parameters.param to ma.elements "/>
+ <parameter name="field3" value='`$ma.elements.element_length`'/>
+ <parameter name="field4" value='`$ma.elements.element[$ma.elements.element_length].policy-instance-name`'/>
+ <parameter name="field5" value='`$ma.elements.element[$ma.elements.element_length].vnf-host-name`'/>
+ <parameter name="field6" value='`$ma.elements.element[$ma.elements.element_length].cloud-param-name`'/>
+ <parameter name="field7" value='`$ma.elements.element[$ma.elements.element_length].sw-name`'/>
+ <parameter name="field8" value='`$ma.elements.element[$ma.elements.element_length].resource-value`'/>
+ </record>
+ <set>
+ <parameter name='ma.elements.element_length' value='`$ma.elements.element_length + 1`' />
+ </set>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='false'></outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ <switch test='`$ss.capability-action`'>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='prop.restapi.templateDir' value="/opt/lsc/restapi/templates" />
+ <parameter name='prop.mac-address-microserivice.url' value="http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989" />
+ </set>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService assign"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/mac-address-assign.json'`" />
+ <parameter name='restapiUrl' value="`$prop.mac-address-microserivice.url + '/macaddress/service/assign'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='customHttpHeaders'
+ value="Authorization=Basic YWRtaW46YWRtaW4=" />
+ <parameter name="responsePrefix" value="tmp.mac-address-resp.prefix" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: assign SUCCESS"/>
+ </record>
+ </block>
+ </outcome>
+ </execute>
+ <for index='mac-address-list-index' start='0' end='`$tmp.mac-address-resp.prefix.mac-address-list_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: mac-address-list-index|name|value "/>
+ <parameter name="field3" value='`$mac-address-list-index`'/>
+ <parameter name="field4" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`'/>
+ <parameter name="field5" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`'/>
+ </record>
+ <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: vf-module-param-index"/>
+ <parameter name="field3" value='`$vf-module-param-index`'/>
+ </record>
+ <block>
+ <switch test="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`">
+ <outcome value='true'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: mac-address-list MATCH with param.value: "/>
+ <parameter name="field3" value="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name' value='INPUT' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" value="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`" value='SUCCESS' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.restapi.templateDir' value="/opt/lsc/restapi/templates" />
+ <parameter name='prop.mac-address-microserivice.url' value="http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989" />
+ </set>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService unassign"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/mac-address-unassign.json'`" />
+ <parameter name='restapiUrl' value="`$prop.mac-address-microserivice.url + '/macaddress/service/unassign'`" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='customHttpHeaders'
+ value="Authorization=Basic YWRtaW46YWRtaW4=" />
+ <parameter name="responsePrefix" value="tmp.mac-address-resp.prefix" />
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: unassign SUCCESS: response: "/>
+ <parameter name='field3' value='`$tmp.mac-address-resp.prefix.status`' />
+ </record>
+ <switch test="`$tmp.mac-address-resp.prefix.status == 'deleted successfully'`">
+ <outcome value='false'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully"/>
+ </record>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='502' />
+ <parameter name='error-message' value='self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >
+ <set>
+ <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`" value="DELETED" />
+ </set>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/self-serve-mS-mac-address-assign.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-parameters-index].resource-resolution-data.status`" value='SUCCESS' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml
new file mode 100644
index 0000000..0b2cde9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml
@@ -0,0 +1,744 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-mS-vlan-tag-assign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='qidx' value='0' />
+ <parameter name='ss.vt.' value='' />
+ </set>
+ <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='policy-instance-name'>
+ <set>
+ <parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='resource-name'>
+ <set>
+ <parameter name='vt.request[$qidx].resource-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='scope-id'>
+ <set>
+ <parameter name='vt.request[$qidx].scope-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-tag-key'>
+ <set>
+ <parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-type'>
+ <set>
+ <parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='resource-value'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ <parameter name='target' value='$' />
+ <outcome value='false'>
+ <set>
+ <parameter name='vt.request[$qidx].resource-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='true'>
+ <set>
+ <parameter name='vt.request[$qidx].resource-value' value='' />
+ </set>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='qidx' value='`$qidx + 1`' />
+ </set>
+ <set>
+ <parameter name='vt.request_length' value='`$qidx`' />
+ </set>
+ <set>
+ <parameter name='ss.vt.param_length' value='`$qidx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>
+ <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="`$ss.capability-action`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.assign.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />
+ <parameter name='restapiUser' value='`$prop.vt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="vtResp" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failed to get vlan-tag assisgnment from mS" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failed to get vlan-tag assisgnment from mS" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$vtResp.error-code`'>
+ <outcome value='500'>
+ <block atomic='true'>
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Encountered error from mS-vlan-tag-assign with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='200'>
+ <block atomic='true'>
+ <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>
+ <outcome value='nfc-function'>
+ <set>
+ <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.nfc-function-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='nfc-naming-code'>
+ <set>
+ <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.nfc-naming-code-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-customization-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-invariant-uuid'>
+ <set>
+ <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-model-version'>
+ <set>
+ <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.vnfc-model-version-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='vm-type'>
+ <set>
+ <parameter name='ss.param.vm-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ <parameter name='ss.param.vm-type-index' value='`$pidx`' />
+ </set>
+ </outcome>
+ <outcome value='vnfc-name'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.param.vnfc-name-unresolved-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$ss.param.vnfc-name-unresolved-value`" />
+ <parameter name="target" value="${"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="ss.param.vnfc-name-unresolved-value"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$ss.param.vnfc-name-unresolved-value`" />
+ <parameter name="target" value="}"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="ss.param.vnfc-name-unresolved-value"/>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'ss.param.vnfc-name-unresolved-value = ' + $ss.param.vnfc-name-unresolved-value`"/>
+ </record>
+ <block>
+ <for silentFailure='true' index="x" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].name == $ss.param.vnfc-name-unresolved-value`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].value`' />
+ <parameter name='ss.param.vnfc-name-index' value='`$x`' />
+ </set>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'></return>
+ </block>
+ <switch test='`$ss.param.vnfc-name`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>
+ <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="unassign"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />
+ <parameter name='restapiUser' value='`$prop.vt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="vtResp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$vtResp.error-code`'>
+ <outcome value='500'>
+ <set>
+ <parameter name="error-message"
+ value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />
+ </set>
+ </outcome>
+ <outcome value='200'>
+ <block>
+ <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">
+ <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='PENDING' />
+ </set>
+ </for>
+ </for>
+ <set>
+ <parameter name="error-message"
+ value="vlan tags were rolled back from mS successfully." />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to resolve vnfc-name; ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-type' value = '`$ss.param.vm-type`' />
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-invariant-uuid' value = '`$ss.param.vnfc-model-invariant-uuid`' />
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-customization-uuid' value = '`$ss.param.vnfc-model-customization-uuid`' />
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-version' value = '`$ss.param.vnfc-model-version`' />
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-name' value = '`$ss.param.vnfc-name`' />
+ </set>
+ <set>
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length' value = '1' />
+ <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names_length' value = '1' />
+ </set>
+ <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">
+ <for silentFailure='true' index="vtidx" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$vtidx].index`' />
+ </set>
+ <switch test='`$vtResp.output[$oidx].resource-name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].name`'>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value`' />
+ <parameter name='target' value='$' />
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value'
+ value='`$vtResp.output[$oidx].resource-value`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='vnfc-network-role'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].vnfc-network-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ <call module="GENERIC-RESOURCE-API" rpc="generate-cp-instance-id" mode="sync" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>
+ <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="unassign"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />
+ <parameter name='restapiUser' value='`$prop.vt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="vtResp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$vtResp.error-code`'>
+ <outcome value='500'>
+ <set>
+ <parameter name="error-message"
+ value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />
+ </set>
+ </outcome>
+ <outcome value='200'>
+ <block>
+ <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">
+ <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='PENDING' />
+ </set>
+ </for>
+ </for>
+ <set>
+ <parameter name="error-message"
+ value="vlan tags were rolled back from mS successfully." />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error in generating cp-instance-id in SDNC; ' + $error-message.generate-cp-instance-id + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <for silentFailure='true' index="sidx" start="0" end="`$vtResp.output[$oidx].stored-elements_length`">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.connection-point-id'
+ value='`$tmp.return.generate-cp-instance-id.id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-uuid'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlan-uuid`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-id'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-description'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-role'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].element-vlan-role`' />
+ </set>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value'
+ value='`$vtResp.output[$oidx].resource-value`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='vnfc-network-role'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].vnfc-network-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ <call module="GENERIC-RESOURCE-API" rpc="generate-cp-instance-id" mode="sync" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>
+ <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="unassign"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />
+ <parameter name='restapiUser' value='`$prop.vt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="vtResp" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message"
+ value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />
+ </set>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$vtResp.error-code`'>
+ <outcome value='500'>
+ <set>
+ <parameter name="error-message"
+ value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />
+ </set>
+ </outcome>
+ <outcome value='200'>
+ <block>
+ <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">
+ <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='PENDING' />
+ </set>
+ </for>
+ </for>
+ <set>
+ <parameter name="error-message"
+ value="vlan tags were rolled back from mS successfully." />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Error in generating cp-instance-id in SDNC; ' + $error-message.generate-cp-instance-id + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <for silentFailure='true' index="sidx" start="0" end="`$vtResp.output[$oidx].stored-elements_length`">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.connection-point-id'
+ value='`$tmp.return.generate-cp-instance-id.id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-uuid'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlan-uuid`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-id'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-description'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-role'
+ value='`$vtResp.output[$oidx].stored-elements[$sidx].element-vlan-role`' />
+ </set>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.capability-name'
+ value='INPUT' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length'
+ value='`$ss.vt.param_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data_length'
+ value='`$vtResp.output[$oidx].stored-elements_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <set>
+ <parameter name='qidx' value='0' />
+ <parameter name='ss.vt.' value='' />
+ </set>
+ <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />
+ </set>
+ <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='policy-instance-name'>
+ <set>
+ <parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-type'>
+ <set>
+ <parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vlan-tag-key'>
+ <set>
+ <parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='qidx' value='`$qidx + 1`' />
+ </set>
+ <set>
+ <parameter name='vt.request_length' value='`$qidx`' />
+ </set>
+ <set>
+ <parameter name='ss.vt.param_length' value='`$qidx`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>
+ <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>
+ <parameter name="target" value="{action}"/>
+ <parameter name="replacement" value="`$ss.capability-action`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />
+ <parameter name='restapiUser' value='`$prop.vt.mS.user`' />
+ <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="vtResp" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failed to unassign vlan-tag from mS" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="Failed to unassign vlan-tag from mS" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$vtResp.error-code`'>
+ <outcome value='500'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500'/>
+ <parameter name='error-message' value="`'Encountered error while unassigning mS-vlan-tag with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='200'>
+ <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">
+ <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">
+ <set>
+ <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status'
+ value='DELETED' />
+ </set>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-mS-vlan-tag-' + $ss.capability-action + '-' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='`$pathname`' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: mS-vlan-tag-assign"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml
new file mode 100644
index 0000000..4cf5cdb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml
@@ -0,0 +1,414 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-netbox-ip-assign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <switch test="`$ss.capability-type == 'vnf'`">
+ <outcome value='true'>
+ <block>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <set>
+ <parameter name='tmp.ss.param.name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block>
+ <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='service-instance-id'>
+ <set>
+ <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vnf-id'>
+ <set>
+ <parameter name='tmp.ss.vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='prefix-id'>
+ <set>
+ <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='external_key'>
+ <set>
+ <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$ss.capability-action`'>
+ <outcome value='assign'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='FAILED'>
+ <block atomic='true'>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="vf_module_id" value="`$tmp.ss.vnf-id`" />
+ <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+ <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ip" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value'
+ value='`$ip[0]`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='PENDING'>
+ <block atomic='true'>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="vf_module_id" value="`$tmp.ss.vnf-id`" />
+ <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+ <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ip" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value'
+ value='`$ip[0]`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='unassign'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='SUCCESS'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from IPAM_IP_ASSIGNEMENT
+ WHERE external_key = $tmp.ss.external-key
+ AND service_instance_id = $tmp.ss.service-instance-id' >
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.status' value="PENDING_DELETE" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status
+ WHERE external_key = $tmp.ss.external-key
+ AND service_instance_id = $tmp.ss.service-instance-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status'
+ value='DELETED' />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$ss.capability-type == 'vf-module'`">
+ <outcome value='true'>
+ <block>
+ <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <set>
+ <parameter name='tmp.ss.param.name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block>
+ <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+ <outcome value='service-instance-id'>
+ <set>
+ <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf-module-id'>
+ <set>
+ <parameter name='tmp.ss.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='prefix-id'>
+ <set>
+ <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='ip-address-id'>
+ <set>
+ <parameter name='tmp.ss.ip-address-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ <outcome value='external_key'>
+ <set>
+ <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$ss.capability-action`'>
+ <outcome value='assign'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='FAILED'>
+ <block atomic='true'>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
+ <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+ <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ip" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value'
+ value='`$ip[0]`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='PENDING'>
+ <block atomic='true'>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
+ <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+ <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value='' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ip" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value'
+ value='`$ip[0]`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='unassign'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='SUCCESS'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from IPAM_IP_ASSIGNEMENT
+ WHERE external_key = $tmp.ss.external-key
+ AND service_instance_id = $tmp.ss.service-instance-id' >
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.status' value="PENDING_DELETE" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+ key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status
+ WHERE external_key = $tmp.ss.external-key
+ AND service_instance_id = $tmp.ss.service-instance-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
+ </return>
+ </outcome>
+ </update>
+ <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
+ <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+ <parameter name="external_key" value="`$tmp.ss.external-key`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status'
+ value='DELETED' />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml
new file mode 100644
index 0000000..55d851c
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml
@@ -0,0 +1,400 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-pnf-assign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='is-new-pnf' value='true' />
+ </set>
+ <switch test='`$service-data.pnfs.pnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='pnf-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf_length' value='1' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='pnf-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf_length' value='1' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >
+ <switch test='`$pf-topology-operation-input.pnf-details.pnf-id == $service-data.pnfs.pnf[$idx].pnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='is-new-pnf' value='false' />
+ </set>
+ <set>
+ <parameter name='pnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$is-new-pnf`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='pnf-index' value='`$service-data.pnfs.pnf_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf_length' value='`$service-data.pnfs.pnf_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$is-new-pnf`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id'
+ value='`$pnf-topology-operation-input.pnf-details.pnf-id`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-type'
+ value='`$pnf-topology-operation-input.pnf-details.pnf-type`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.tenant'
+ value='`$pnf-topology-operation-input.pnf-request-input.tenant`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.aic-cloud-region'
+ value='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-id'
+ value='`$pnf-topology-operation-input.pnf-details.pnf-id`' />
+ </set>
+ <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.pnf-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'
+ value='`$db.pnf-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'
+ value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'
+ value='`$db.pnf-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'
+ value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'
+ value='`$db.pnf-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'
+ value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-customization-uuid'
+ value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.'
+ value='$pnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.'
+ value='$pnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.'
+ value='$pnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.'
+ value='$pnf-topology-operation-input.pnf-details.' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.'
+ value='$pnf-topology-operation-input.pnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='aai-get' />
+ <parameter name='ss.capability.execution-order[1]' value='generate-name' />
+ <parameter name='ss.capability.execution-order[2]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[4]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[6]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[7]' value='eipam-create-pool' />
+ <parameter name='ss.capability.execution-order[8]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[9]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[10]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[11]' value='create-vpe-pool' />
+ <parameter name='ss.capability.execution-order[12]' value='unresolved-composite-data' />
+ <parameter name='ss.capability.execution-order[13]' value='aai-pnf-put' />
+ <parameter name='ss.capability.execution-order_length' value='14' />
+ </set>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.sdnc-generated-cloud-resources' value='true' />
+ </set>
+ <set>
+ <parameter name='ss.capability-type' value='pnf' />
+ </set>
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.'
+ value='pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-ra-assignment' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE with pnf-ra-assigment"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order[]
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='assign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='PENDING'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='pf.pnf-id'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />
+ <parameter name='pf.pnf-data.sdnc-request-header.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />
+ <parameter name='pf.pnf-data.request-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />
+ <parameter name='pf.pnf-data.service-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />
+ <parameter name='pf.pnf-data.pnf-details.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />
+ <parameter name='pf.pnf-data.pnf-topology.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />
+ <parameter name='pf.pnf-data.pnf-level-oper-status.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />
+ <parameter name='pf.pnf-data.pnf-request-input.pnf-input-parameters.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />
+ <parameter name='pf.pnf-data.pnf-request-input.request-version'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.request-version`' />
+ <parameter name='pf.pnf-data.pnf-request-input.pnf-name'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-name`' />
+ <parameter name='pf.pnf-data.pnf-request-input.tenant'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.tenant`' />
+ <parameter name='pf.pnf-data.pnf-request-input.aic-cloud-region'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-cloud-region`' />
+ <parameter name='pf.pnf-data.pnf-request-input.aic-clli'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-clli`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-pnf-url`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{pnf-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-pnf" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='FAILED'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='pf.pnf-id'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />
+ <parameter name='pf.pnf-data.sdnc-request-header.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />
+ <parameter name='pf.pnf-data.request-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />
+ <parameter name='pf.pnf-data.service-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />
+ <parameter name='pf.pnf-data.pnf-details.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />
+ <parameter name='pf.pnf-data.pnf-topology.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />
+ <parameter name='pf.pnf-data.pnf-level-oper-status.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />
+ <parameter name='pf.pnf-data.pnf-request-input.pnf-input-parameters.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />
+ <parameter name='pf.pnf-data.pnf-request-input.request-version'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.request-version`' />
+ <parameter name='pf.pnf-data.pnf-request-input.pnf-name'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-name`' />
+ <parameter name='pf.pnf-data.pnf-request-input.tenant'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.tenant`' />
+ <parameter name='pf.pnf-data.pnf-request-input.aic-cloud-region'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-cloud-region`' />
+ <parameter name='pf.pnf-data.pnf-request-input.aic-clli'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-clli`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-pnf-url`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{pnf-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-pnf" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />
+ </set>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-pnf-assign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml
new file mode 100644
index 0000000..bded0cb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml
@@ -0,0 +1,233 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-pnf-generate-name' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-gen-name-' +
+ $ss.capability-type + '-' + $ss.capability-action + '-' +
+ $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`" />
+ </set>
+ <switch test="`$ss.capability-action`">
+ <outcome value='unassign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ </set>
+ <for index='i' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ <parameter name='tmp.gen-name_length' value='1' />
+ </set>
+ <for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ </set>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='DELETED' />
+ </set>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ <parameter name='tmp.gen-name_length' value='0' />
+ </set>
+ <for index='i' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ </set>
+ <for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.naming-data-payload == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <for index='l' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml
new file mode 100644
index 0000000..cff4d49
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml
@@ -0,0 +1,235 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-pnf-ra-assignment' mode='sync'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate.pnf-se-serv-uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generateUUID is failed" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="cds" value="execution-service_process."/>
+ <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.pnf-se-serv-uuid`"/>
+ <parameter name="resource-type" value="`$pnf-topology-operation-input.pnf-details.pnf-type`" />
+ <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$pnf-topology-operation-input.pnf-details.pnf-id`" />
+ <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>
+ <parameter name="responsePrefix" value="raAssign" />
+ <parameter name="`$cds + 'isNonAppend'`" value="true"/>
+ <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>
+ <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>
+ </set>
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='highnum' value='0' />
+ <parameter name='prehighnum' value='0'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='highnum' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' />
+ <parameter name='prehighnum' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='i' start='0' end='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param_length`' >
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].name`'>
+ <outcome value='sdnc_model_name'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_model_version'>
+ <set>
+ <parameter name='tmp.sdnc-model-version' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_artifact_name'>
+ <set>
+ <parameter name='tmp.sdnc-artifact-name' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].name + '&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value + '&quot;,'`"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`">
+ <outcome value='true'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'
+ pfx='db1.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No VF_MODEL found where customization_uuid = ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />
+ <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />
+ <parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $pnf-topology-operation-input.service-information.service-instance-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;pnf-model-customization-uuid&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;pnf-id&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.pnf-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.aic-cloud-region + '&quot;'`"/>
+ </set>
+ <set>
+ <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload7 + '}'`" />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.sdnc-artifact-name`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />
+ <parameter name='restapiUser' value='`$prop.cds.user`' />
+ <parameter name='restapiPassword' value='`$prop.cds.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />
+ <parameter name="responsePrefix" value="`$responsePrefix`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from BlueprintProcessingClient" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from BlueprintProcessingClient" />
+ </return>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER BlueprintProcessingClient"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.mso.param.found' value='false' />
+ </set>
+ <switch test='`$prehighnum &gt; 0`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='cnt' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.mso.param.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >
+ <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>
+ <parameter name='num' value='0' />
+ </set>
+ <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>
+ </set>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>
+ </set>
+ <set>
+ <parameter name='num' value='`$num + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' value='`$highnum + 1`'/>
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ </for>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: pnf-ra-assignment"/>
+ </record>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-pnf-ra-assignment-' +
+ $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='`$pathname`' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml
new file mode 100644
index 0000000..2fc4a3a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml
@@ -0,0 +1,143 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-pnf-unassign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[8]' value='generate-name' />
+ <parameter name='ss.capability.execution-order_length' value='9' />
+ </set>
+ <set>
+ <parameter name='ss.capability-type' value='pnf' />
+ </set>
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order[]
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='unassign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='SUCCESS'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vf.pnf-id'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />
+ <parameter name='vf.pnf-data.sdnc-request-header.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />
+ <parameter name='vf.pnf-data.request-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />
+ <parameter name='vf.pnf-data.service-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />
+ <parameter name='vf.pnf-data.pnf-information.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />
+ <parameter name='vf.pnf-data.pnf-request-input.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.`' />
+ <parameter name='vf.pnf-data.pnf-request-input.pnf-input-parameters.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />
+ <parameter name='vf.pnf-data.pnf-topology.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />
+ <parameter name='vf.pnf-data.pnf-level-oper-status.'
+ value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-pnf-url`"/>
+ <parameter name="outputPath" value="tmp.ss-pnf-url"/>
+ <parameter name="target" value="{pnf-id}"/>
+ <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-pnf" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error persisting self-serve pnf assignments in MD-SAL during unassign" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error persisting self-serve pnf assignments in MD-SAL during unassign" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to unassign self-serve pnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`"/>
+ <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>
+ <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>
+ </record>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-pnf-unassign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-mapping-ra-response.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-mapping-ra-response.xml
new file mode 100644
index 0000000..75f5a3f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-mapping-ra-response.xml
@@ -0,0 +1,100 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-process-vfmodule-mapping-ra-response' mode='sync'>
+ <block atomic="true">
+ <switch test='`$jsonContextPrefix.resolution-summary_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="resolution-summary_length is null" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='CONSTANT' value='success'/>
+ </set>
+ <for silentFailure='true' index='vdns-index' start='0' end='`$jsonContextPrefix.resolution-summary_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.mso.param.found' value='false' />
+ </set>
+ <switch test='`$prehighnum &gt; 0`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='param-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$param-index].name == $jsonContextPrefix.resolution-summary[$vdns-index].name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$param-index].value'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].value`'/>
+ </set>
+ <set>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.mso.param.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].name`'/>
+ </set>
+ <switch test="`$jsonContextPrefix.resolution-summary[$vdns-index].status == 'success' and
+ $jsonContextPrefix.resolution-summary[$vdns-index].value == ''`">
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`'
+ value='`$CONSTANT`'/>
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].value`'/>
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].dictionary-source`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].status`'/>
+ </set>
+ <for silentFailure='true' index='kid-index' start='0' end='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers_length`' >
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$kid-index].name'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers[$kid-index].name`'/>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$kid-index].value'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers[$kid-index].value`'/>
+ </set>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key_length'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers_length`' />
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length'
+ value='`$highnum`'/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-process-vfmodule-mapping-ra-response"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-template-ra-response.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-template-ra-response.xml
new file mode 100644
index 0000000..b2746cf
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vfmodule-template-ra-response.xml
@@ -0,0 +1,99 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-process-vfmodule-template-ra-response' mode='sync'>
+ <block atomic="true">
+ <switch test='`$jsonContextPrefix.resource-accumulator-resolved-data_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="resource-accumulator-resolved-data_length is null" />
+ </return>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.mso.param.found' value='false' />
+ </set>
+ <switch test='`$prehighnum &gt; 0`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].value`'
+ value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.mso.param.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >
+ <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='PENDING'/>
+ <parameter name='num' value='0' />
+ </set>
+ <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <for index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>
+ </set>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>
+ </set>
+ <set>
+ <parameter name='num' value='`$num + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length'
+ value='`$highnum`'/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-process-vfmodule-template-ra-response"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-mapping-ra-response.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-mapping-ra-response.xml
new file mode 100644
index 0000000..551364f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-mapping-ra-response.xml
@@ -0,0 +1,100 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-process-vnf-mapping-ra-response' mode='sync'>
+ <block atomic="true">
+ <switch test='`$jsonContextPrefix.resolution-summary_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="resolution-summary is null" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='CONSTANT' value='success'/>
+ </set>
+ <for silentFailure='true' index='vdns-index' start='0' end='`$jsonContextPrefix.resolution-summary_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.mso.param.found' value='false' />
+ </set>
+ <switch test='`$prehighnum &gt; 0`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='param-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$param-index].name == $jsonContextPrefix.resolution-summary[$vdns-index].name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$param-index].value`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].value`'/>
+ </set>
+ <set>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.mso.param.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].name`'/>
+ </set>
+ <switch test="`$jsonContextPrefix.resolution-summary[$vdns-index].status == 'success' and
+ $jsonContextPrefix.resolution-summary[$vdns-index].value == ''`">
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`'
+ value='`$CONSTANT`'/>
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].value`'/>
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='kid-index' start='0' end='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers_length`' >
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$kid-index].name'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers[$kid-index].name`'/>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$kid-index].value'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers[$kid-index].value`'/>
+ </set>
+ </for>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].dictionary-source`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].status`'/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length'
+ value='`$jsonContextPrefix.resolution-summary[$vdns-index].key-identifiers_length`' />
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'
+ value='`$highnum`'/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-process-vnf-mapping-ra-response"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-template-ra-response.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-template-ra-response.xml
new file mode 100644
index 0000000..2e62832
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-process-vnf-template-ra-response.xml
@@ -0,0 +1,104 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-process-vnf-template-ra-response' mode='sync'>
+ <block atomic="true">
+ <switch test='`$jsonContextPrefix.resource-accumulator-resolved-data_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="resource-accumulator-resolved-data_length is null" />
+ </return>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.mso.param.found' value='false' />
+ </set>
+ <switch test='`$prehighnum &gt; 0`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='tmp.mso.param.found' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.mso.param.found`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>
+ </set>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >
+ <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >
+ <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>
+ <parameter name='num' value='0' />
+ </set>
+ <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">
+ <outcome value='true'></outcome>
+ <outcome value='false'>
+ <for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>
+ </set>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>
+ </set>
+ <set>
+ <parameter name='num' value='`$num + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='highnum' value='`$highnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length'
+ value='`$highnum`'/>
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-process-vnf-template-ra-response"/>
+ </record>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml
new file mode 100644
index 0000000..ebd065a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml
@@ -0,0 +1,612 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-unresolved-composite-data' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-type`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-type is null" />
+ </return>
+ </outcome>
+ <outcome value='vnf'>
+ <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ss.composite'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value`' />
+ </set>
+ <switch test="`$tmp.ss.composite == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value' value="" />
+ <parameter name='tmp.ss.final.resolved-value.end' value="" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="["/>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value' value="[" />
+ <parameter name='tmp.ss.final.resolved-value.end' value="]" />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="["/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="]"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.composite: ' + $tmp.ss.composite`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.composite`" />
+ <parameter name="regex" value=","/>
+ <parameter name="ctx_memory_result_key" value="comma-splits" />
+ </execute>
+ <for silentFailure='true' index="comma-splits-index" start="0" end="`$comma-splits_length`">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$comma-splits[$comma-splits-index]`" />
+ <parameter name="outputPath" value="tmp.ss.composite.trim"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-prefix' value='' />
+ <parameter name='tmp.ss.param-suffix' value='' />
+ </set>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.composite.trim`" />
+ <parameter name="regex" value="\$"/>
+ <parameter name="ctx_memory_result_key" value="dollar-splits" />
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-prefix' value='`$dollar-splits[0]`' />
+ </set>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value' value='' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.param-prefix`" />
+ <parameter name="outputPath" value="tmp.ss.param-prefix"/>
+ </execute>
+ <switch test='`$dollar-splits_length == 1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value'
+ value="`$tmp.ss.param-prefix`" />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index="dollar-splits-index" start="1" end="`$dollar-splits_length`">
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value' value="`'$' + $dollar-splits[$dollar-splits-index]`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />
+ <parameter name="target" value="{"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />
+ <parameter name="target" value="{"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.ss.partial.composite-value' value='`$dollar-splits[$dollar-splits-index]`' />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="target" value="}"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="target" value="}"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="regex" value="\}"/>
+ <parameter name="ctx_memory_result_key" value="end-curly-splits" />
+ </execute>
+ <set>
+ <parameter name='tmp.ss.partial.composite-value' value='`$end-curly-splits[0]`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-suffix' value='`$end-curly-splits[1]`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.param-suffix`" />
+ <parameter name="outputPath" value="tmp.ss.param-suffix"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value' value="`'${' + $tmp.ss.partial.composite-value + '}'`" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.partial.composite-value: ' + $tmp.ss.partial.composite-value`"/>
+ </record>
+ <switch test='`$ss.capability-type`'>
+ <outcome value='vnf'>
+ <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">
+ <set>
+ <parameter name='tmp.ss.param-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name`' />
+ </set>
+ <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='vf-module'>
+ <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name`' />
+ </set>
+ <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value="`$tmp.ss.param-prefix + $tmp.ss.partial.resolved-value + $tmp.ss.param-suffix`" />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.partial.resolved-value: ' + $tmp.ss.partial.resolved-value`"/>
+ </record>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value'
+ value="`$tmp.ss.final.composite-resolved-value + $tmp.ss.partial.resolved-value`" />
+ </set>
+ </for>
+ </block>
+ <switch test='`$comma-splits-index == 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value="`$tmp.ss.final.resolved-value + $tmp.ss.final.composite-resolved-value`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value="`$tmp.ss.final.resolved-value + ',' + $tmp.ss.final.composite-resolved-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value='`$tmp.ss.final.resolved-value + $tmp.ss.final.resolved-value.end`' />
+ </set>
+ <switch test='`$ss.capability-type`'>
+ <outcome value='vnf'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.final.resolved-value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value'
+ value='`$tmp.ss.final.resolved-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='vf-module'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.final.resolved-value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value'
+ value='`$tmp.ss.final.resolved-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='vf-module'>
+ <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param.capability-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ss.composite'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />
+ </set>
+ <switch test="`$tmp.ss.composite == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value' value="" />
+ <parameter name='tmp.ss.final.resolved-value.end' value="" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="["/>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value' value="[" />
+ <parameter name='tmp.ss.final.resolved-value.end' value="]" />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="["/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="target" value="]"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.composite`" />
+ <parameter name="outputPath" value="tmp.ss.composite"/>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.composite: ' + $tmp.ss.composite`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.composite`" />
+ <parameter name="regex" value=","/>
+ <parameter name="ctx_memory_result_key" value="comma-splits" />
+ </execute>
+ <for silentFailure='true' index="comma-splits-index" start="0" end="`$comma-splits_length`">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$comma-splits[$comma-splits-index]`" />
+ <parameter name="outputPath" value="tmp.ss.composite.trim"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-prefix' value='' />
+ <parameter name='tmp.ss.param-suffix' value='' />
+ </set>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.composite.trim`" />
+ <parameter name="regex" value="\$"/>
+ <parameter name="ctx_memory_result_key" value="dollar-splits" />
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-prefix' value='`$dollar-splits[0]`' />
+ </set>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value' value='' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.param-prefix`" />
+ <parameter name="outputPath" value="tmp.ss.param-prefix"/>
+ </execute>
+ <switch test='`$dollar-splits_length == 1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value'
+ value="`$tmp.ss.param-prefix`" />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index="dollar-splits-index" start="1" end="`$dollar-splits_length`">
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value' value="`'$' + $dollar-splits[$dollar-splits-index]`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />
+ <parameter name="target" value="{"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />
+ <parameter name="target" value="{"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.ss.partial.composite-value' value='`$dollar-splits[$dollar-splits-index]`' />
+ </set>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="target" value="}"/>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="target" value="}"/>
+ <parameter name="replacement" value=""/>
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ </outcome>
+ <outcome value='false'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="regex" value="\}"/>
+ <parameter name="ctx_memory_result_key" value="end-curly-splits" />
+ </execute>
+ <set>
+ <parameter name='tmp.ss.partial.composite-value' value='`$end-curly-splits[0]`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.partial.composite-value`" />
+ <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.param-suffix' value='`$end-curly-splits[1]`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >
+ <parameter name="source" value="`$tmp.ss.param-suffix`" />
+ <parameter name="outputPath" value="tmp.ss.param-suffix"/>
+ </execute>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value' value="`'${' + $tmp.ss.partial.composite-value + '}'`" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.partial.composite-value: ' + $tmp.ss.partial.composite-value`"/>
+ </record>
+ <switch test='`$ss.capability-type`'>
+ <outcome value='vnf'>
+ <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">
+ <set>
+ <parameter name='tmp.ss.param-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name`' />
+ </set>
+ <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='vf-module'>
+ <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+ <set>
+ <parameter name='tmp.ss.param-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name`' />
+ </set>
+ <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.ss.partial.resolved-value'
+ value="`$tmp.ss.param-prefix + $tmp.ss.partial.resolved-value + $tmp.ss.param-suffix`" />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="`'SS: tmp.ss.partial.resolved-value: ' + $tmp.ss.partial.resolved-value`"/>
+ </record>
+ <set>
+ <parameter name='tmp.ss.final.composite-resolved-value'
+ value="`$tmp.ss.final.composite-resolved-value + $tmp.ss.partial.resolved-value`" />
+ </set>
+ </for>
+ </block>
+ <switch test='`$comma-splits-index == 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value="`$tmp.ss.final.resolved-value + $tmp.ss.final.composite-resolved-value`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value="`$tmp.ss.final.resolved-value + ',' + $tmp.ss.final.composite-resolved-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.ss.final.resolved-value'
+ value='`$tmp.ss.final.resolved-value + $tmp.ss.final.resolved-value.end`' />
+ </set>
+ <switch test='`$ss.capability-type`'>
+ <outcome value='vnf'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.final.resolved-value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value'
+ value='`$tmp.ss.final.resolved-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value='vf-module'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+ <parameter name="source" value="`$tmp.ss.final.resolved-value`" />
+ <parameter name="target" value="$"/>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value'
+ value='`$tmp.ss.final.resolved-value`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-composite.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml
new file mode 100644
index 0000000..d2bb3a0
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml
@@ -0,0 +1,302 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-assign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='is-new-vfmodule' value='true' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='is-new-vfmodule' value='false' />
+ </set>
+ <set>
+ <parameter name='vf-module-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$is-new-vfmodule`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$is-new-vfmodule`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name'
+ value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-type'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.tenant'
+ value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-cloud-region'
+ value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'
+ value='`$vf-module-topology-operation-input.vf-module-request-input.aic-clli`' />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-module-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'
+ value='`$db.vf-module-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'
+ value='`$db.vf-module-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'
+ value='`$db.vf-module-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-customization-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'
+ value='$vf-module-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'
+ value='$vf-module-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'
+ value='$vf-module-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'
+ value='$vf-module-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'
+ value='$vf-module-topology-operation-input.vf-module-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.request-information.request-action`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.sdnc-generated-cloud-resources'
+ value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ss.capability-type' value='vf-module' />
+ </set>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='generate-name' />
+ <parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />
+ <parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />
+ <parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />
+ <parameter name='ss.capability.execution-order[12]' value='aai-vf-module-put' />
+ <parameter name='ss.capability.execution-order_length' value='13' />
+ </set>
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.'
+ value='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-ra-assignment' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE with vfmodule-ra-assignment"/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='assign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='PENDING'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='FAILED'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vf-assign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml
new file mode 100644
index 0000000..1c5e077
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml
@@ -0,0 +1,85 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-forking-logic' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.exist.sdnc-model-name' value='false' />
+ <parameter name='tmp.exist.vf_module_label' value='false' />
+ </set>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='p' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$p].name`">
+ <outcome value='sdnc_model_name'>
+ <set>
+ <parameter name='tmp.exist.sdnc-model-name' value='true' />
+ </set>
+ </outcome>
+ <outcome value='vf_module_label'>
+ <set>
+ <parameter name='tmp.exist.vf_module_label' value='true' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.vf_module_label == 'true'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='true' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT sdnc_model_name from VF_MODEL
+ WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid
+ AND sdnc_model_name is not null'
+ pfx='db.vf-model-name'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table to determine self-serve forking criteria" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT vf_module_label from VF_MODULE_MODEL
+ WHERE vf_customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid
+ AND vf_module_label is not null '
+ pfx='db.vf-module-label'>
+ <outcome value='success'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='true' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table to determine self-serve forking criteria" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='false' />
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='false' />
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml
new file mode 100644
index 0000000..e2dc3e3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml
@@ -0,0 +1,92 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-generate-name-changeassign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.external-key.value' value='' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>
+ <outcome value='external-key'>
+ <set>
+ <parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.external-key.value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="self-service-vf-module-generate-name-changeassign error : external-key is null for vf-module" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.vf-module.changeassign.naming-data-payload" value="`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`"/>
+ </set>
+ <execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>
+ <parameter name='payload' value='`$tmp.vf-module.changeassign.naming-data-payload`' />
+ <parameter name="prifix" value="vf-module.changeassign.nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vf-module ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vf-module ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module" key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id AND vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id " >
+ <parameter name="vf-module-name" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to update vf-module.vf-module-name to ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to update vf-module.vf-module-name to ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].value`' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml
new file mode 100644
index 0000000..01ec0d4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml
@@ -0,0 +1,233 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-generate-name' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-gen-name-' +
+ $ss.capability-type + '-' + $ss.capability-action + '-' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />
+ </set>
+ <switch test="`$ss.capability-action`">
+ <outcome value='unassign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ <parameter name='tmp.gen-name_length' value='1' />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ </set>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='DELETED' />
+ </set>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ <parameter name='tmp.gen-name_length' value='0' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.naming-data-payload == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].resource-resolution-data.status`' value='SUCCESS' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml
new file mode 100644
index 0000000..76b6087
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml
@@ -0,0 +1,75 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-mdsal-put' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vf.vf-module-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />
+ <parameter name='vf.vf-module-data.sdnc-request-header.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />
+ <parameter name='vf.vf-module-data.request-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />
+ <parameter name='vf.vf-module-data.service-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />
+ <parameter name='vf.vf-module-data.vnf-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />
+ <parameter name='vf.vf-module-data.vf-module-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />
+ <parameter name='vf.vf-module-data.vf-module-topology.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />
+ <parameter name='vf.vf-module-data.vf-module-level-oper-status.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.request-version'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.tenant'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-vfmodule-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{vf-module-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-vfmodule" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message" value="`'Failed to persist self-serve vf-module assignments during assign in MD-SAL. ' + $error-message`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message" value="`'Failed to persist self-serve vf-module assignments during assign in MD-SAL. ' + $error-message`" />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml
new file mode 100644
index 0000000..68df95e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml
@@ -0,0 +1,159 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vf-module-unassign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[8]' value='generate-name' />
+ <parameter name='ss.capability.execution-order_length' value='9' />
+ </set>
+ <set>
+ <parameter name='ss.capability-type' value='vf-module' />
+ </set>
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='unassign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='SUCCESS'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vf.vf-module-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />
+ <parameter name='vf.vf-module-data.sdnc-request-header.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />
+ <parameter name='vf.vf-module-data.request-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />
+ <parameter name='vf.vf-module-data.service-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />
+ <parameter name='vf.vf-module-data.vnf-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />
+ <parameter name='vf.vf-module-data.vf-module-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />
+ <parameter name='vf.vf-module-data.vf-module-topology.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />
+ <parameter name='vf.vf-module-data.vf-module-level-oper-status.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.request-version'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.tenant'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />
+ <parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-vfmodule-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>
+ <parameter name="target" value="{vf-module-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-vfmodule" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve vf-module assignments during unassign in MD-SAL" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed to persist self-serve vf-module assignments during unassign in MD-SAL" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`"/>
+ <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>
+ <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>
+ </record>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vf-unassign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml
new file mode 100644
index 0000000..543b9f5
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml
@@ -0,0 +1,70 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vfmodule-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="no param name/value provided in vf-module-request-input" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.input.param.found.in.service.param' value='false' />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].name == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].resource-resolution-data.status`' value='PENDING'/>
+ <parameter name='ss.input.param.index' value='`$i`' />
+ <parameter name='ss.service-data.param.index' value='`$j`' />
+ <parameter name='ss.input.param.found.in.service.param' value='true' />
+ <parameter name='ss.capability-type' value='vf-module' />
+ <parameter name='ss.capability-action' value='changeassign' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />
+ </return>
+ </outcome>
+ </call>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$ss.input.param.found.in.service.param`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No vf-module-request-input.vf-module-input-parameters.param[].name found in service-data." />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml
new file mode 100644
index 0000000..9038e67
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml
@@ -0,0 +1,204 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vfmodule-ra-assignment' mode='sync'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate.vnf-se-serv-uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generateUUID is failed" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="cds" value="execution-service_process."/>
+ <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.vnf-se-serv-uuid`"/>
+ <parameter name="resource-type" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-type`" />
+ <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`" />
+ <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>
+ <parameter name="responsePrefix" value="raAssign" />
+ <parameter name="`$cds + 'isNonAppend'`" value="true"/>
+ <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>
+ <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='highnum' value='0' />
+ <parameter name='prehighnum' value='0'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />
+ <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>
+ <outcome value='sdnc_model_name'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_model_version'>
+ <set>
+ <parameter name='tmp.sdnc-model-version' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='vf_module_label'>
+ <set>
+ <parameter name='tmp.vf-module-label' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name + '&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value + '&quot;,'`"/>
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.vf-module-label == ''`">
+ <outcome value='true'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db1.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No VF_MODEL found with customization_uuid = ' + $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />
+ <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />
+ </set>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT vf_module_label from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ AND vf_module_label is not null'
+ pfx='db1.vf-module-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf_module_label not found in VF_MODULE_MODEL WHERE customization_uuid = ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vf-module-label' value='`$db1.vf-module-model.vf-module-label`' />
+ </set>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vf-module-topology-operation-input.service-information.service-instance-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;vnf-id&quot;:&quot;' + $vf-module-topology-operation-input.vnf-information.vnf-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;vf-module-model-customization-uuid&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload8" value="`$tmp.config-name-value-payload7 + '&quot;vf-module-id&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload9" value="`$tmp.config-name-value-payload8 + '&quot;aic-cloud-region&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region + '&quot;'`"/>
+ </set>
+ <set>
+ <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload9 + '}'`" />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.vf-module-label`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />
+ <parameter name='restapiUser' value='`$prop.cds.user`' />
+ <parameter name='restapiPassword' value='`$prop.cds.pwd`' />
+ <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="raAssign" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from ConfigAssignmentNode" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from ConfigAssignmentNode" />
+ </return>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER BlueprintProcessingClient"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="`'raAssign.payload.resource-assignment-response.resolved-data.' + $tmp.vf-module-label`" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='success'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-process-vfmodule-mapping-ra-response' mode='sync' ></call>
+ </outcome>
+ <outcome value='failure'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.vf-module-label`" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to parse RA respose from mapping or meshed-template" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-process-vfmodule-template-ra-response' mode='sync' ></call>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: vfmodule-ra-assignment"/>
+ </record>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-vfmodule-ra-assignment-' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='`$pathname`' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml
new file mode 100644
index 0000000..96db3ef
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml
@@ -0,0 +1,287 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-assign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='is-new-vnf' value='true' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf_length' value='1' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf_length' value='1' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='is-new-vnf' value='false' />
+ </set>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$is-new-vnf`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf_length' value='`$service-data.vnfs.vnf_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$is-new-vnf`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'
+ value='`$db.vf-model.nf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'
+ value='`$db.vf-model.nf-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'
+ value='`$db.vf-model.nf-function`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'
+ value='`$db.vf-model.nf-code`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'
+ value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'
+ value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$db.vf-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$db.vf-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$db.vf-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.'
+ value='$vnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.'
+ value='$vnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.'
+ value='$vnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.'
+ value='$vnf-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.'
+ value='$vnf-topology-operation-input.vnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='generate-name' />
+ <parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />
+ <parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />
+ <parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />
+ <parameter name='ss.capability.execution-order[12]' value='aai-vnf-put' />
+ <parameter name='ss.capability.execution-order_length' value='13' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />
+ </set>
+ <set>
+ <parameter name='ss.capability-type' value='vnf' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>
+ <outcome value=''>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'
+ value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-ra-assignment' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order[]
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='assign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='PENDING'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='FAILED'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnf-assign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml
new file mode 100644
index 0000000..16da1bb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml
@@ -0,0 +1,70 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-changeassign' mode='sync'>
+ <block atomic='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="no param name/value provided in vnf-request-input" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.input.param.found.in.service.param' value='false' />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name == $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`' value='PENDING'/>
+ <parameter name='ss.input.param.index' value='`$i`' />
+ <parameter name='ss.service-data.param.index' value='`$j`' />
+ <parameter name='ss.input.param.found.in.service.param' value='true' />
+ <parameter name='ss.capability-type' value='vnf' />
+ <parameter name='ss.capability-action' value='changeassign' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />
+ </return>
+ </outcome>
+ </call>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$ss.input.param.found.in.service.param`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No vnf-request-input.vnf-input-parameters.param[].name found in service-data." />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml
new file mode 100644
index 0000000..3570e5d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml
@@ -0,0 +1,54 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-forking-logic' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.exist.sdnc-model-name' value='false' />
+ <parameter name='tmp.exist.sdnc-artifact-name' value='false' />
+ </set>
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">
+ <outcome value=''>
+ <set>
+ <parameter name='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='p' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$p].name`">
+ <outcome value='sdnc_model_name'>
+ <set>
+ <parameter name='tmp.exist.sdnc-model-name' value='true' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_artifact_name'>
+ <set>
+ <parameter name='tmp.exist.sdnc-artifact-name' value='true' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.sdnc-artifact-name == 'true'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='true' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <switch test="`$db.vf-model.sdnc-model-name != '' and $db.vf-model.sdnc-artifact-name != ''`">
+ <outcome value='true'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='true' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='ss.self-serve-flag' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml
new file mode 100644
index 0000000..c8a419a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml
@@ -0,0 +1,94 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-generate-name-changeassign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.external-key.value' value='' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>
+ <outcome value='external-key'>
+ <set>
+ <parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.external-key.value`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="self-service-vnf-generate-name-changeassign error : external-key is null for vnf" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.vnf.changeassign.naming-data-payload"
+ value="`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`"/>
+ </set>
+ <execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>
+ <parameter name='payload' value='`$tmp.vnf.changeassign.naming-data-payload`' />
+ <parameter name="prifix" value="vnf.changeassign.nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vnf ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vnf ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id " >
+ <parameter name="vnf-name" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`' />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to update generic-vnf.vnf-name to ' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to update generic-vnf.vnf-name to ' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].value`' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`'/>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml
new file mode 100644
index 0000000..4a87679
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml
@@ -0,0 +1,233 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-generate-name' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-gen-name-' +
+ $ss.capability-type + '-' + $ss.capability-action + '-' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`" />
+ </set>
+ <switch test="`$ss.capability-action`">
+ <outcome value='unassign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ <parameter name='tmp.gen-name_length' value='1' />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">
+ <outcome value='true'>
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ </set>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Unassign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='DELETED' />
+ </set>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />
+ <parameter name='tmp.gen-name_length' value='0' />
+ </set>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />
+ </set>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>
+ <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />
+ <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.naming-data-payload == ''`">
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',}' />
+ <parameter name='replacement' value='}' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>
+ <parameter name='outputPath' value='tmp.naming-data-payload' />
+ <parameter name='source' value='`$tmp.naming-data-payload`' />
+ <parameter name='target' value=',]' />
+ <parameter name='replacement' value=']' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />
+ <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />
+ <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="nameGenResponse" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from NameGenerationNode Assign" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="nameGenResponse.httpResponse" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="false" />
+ </execute>
+ <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >
+ <for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />
+ <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml
new file mode 100644
index 0000000..a35b4c1
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml
@@ -0,0 +1,67 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-mdsal-put' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vf.vnf-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ <parameter name='vf.vnf-data.sdnc-request-header.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />
+ <parameter name='vf.vnf-data.request-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />
+ <parameter name='vf.vnf-data.service-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />
+ <parameter name='vf.vnf-data.vnf-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />
+ <parameter name='vf.vnf-data.vnf-topology.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />
+ <parameter name='vf.vnf-data.vnf-level-oper-status.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />
+ <parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />
+ <parameter name='vf.vnf-data.vnf-request-input.request-version'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.request-version`' />
+ <parameter name='vf.vnf-data.vnf-request-input.vnf-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-name`' />
+ <parameter name='vf.vnf-data.vnf-request-input.tenant'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.tenant`' />
+ <parameter name='vf.vnf-data.vnf-request-input.aic-cloud-region'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-cloud-region`' />
+ <parameter name='vf.vnf-data.vnf-request-input.aic-clli'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-clli`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-vnf-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-vnf-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vnf-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vnf-url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-vnf" />
+ <outcome value='failure'>
+ <set>
+ <parameter name="error-message" value="`'Failed to persist self-serve vnf assignments during assign in MD-SAL. ' + $error-message`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name="error-message" value="`'Failed to persist self-serve vnf assignments during assign in MD-SAL. ' + $error-message`" />
+ </set>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml
new file mode 100644
index 0000000..420bdf3
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml
@@ -0,0 +1,179 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-ra-assignment' mode='sync'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="tmp.return.generate.vnf-se-serv-uuid" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="generateUUID is failed" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="cds" value="execution-service_process."/>
+ <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.vnf-se-serv-uuid`"/>
+ <parameter name="resource-type" value="`$vnf-topology-operation-input.vnf-information.vnf-type`" />
+ <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />
+ <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>
+ <parameter name="responsePrefix" value="raAssign" />
+ <parameter name="`$cds + 'isNonAppend'`" value="true"/>
+ <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>
+ <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='highnum' value='0' />
+ <parameter name='prehighnum' value='0'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />
+ <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>
+ <outcome value='sdnc_model_name'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_model_version'>
+ <set>
+ <parameter name='tmp.sdnc-model-version' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='sdnc_artifact_name'>
+ <set>
+ <parameter name='tmp.sdnc-artifact-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name + '&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value + '&quot;,'`"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`">
+ <outcome value='true'>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db1.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />
+ <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />
+ <parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vnf-topology-operation-input.service-information.service-instance-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;vnf-id&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.vnf-id + '&quot;,'`"/>
+ <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + '&quot;'`"/>
+ </set>
+ <set>
+ <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload7 + '}'`" />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />
+ <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.sdnc-artifact-name`' />
+ <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />
+ <parameter name='restapiUser' value='`$prop.cds.user`' />
+ <parameter name='restapiPassword' value='`$prop.cds.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />
+ <parameter name="responsePrefix" value="raAssign" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from BlueprintProcessingClient" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error from BlueprintProcessingClient" />
+ </return>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="AFTER BlueprintProcessingClient"/>
+ </record>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="`'raAssign.payload.resource-assignment-response.resolved-data.' + $tmp.sdnc-artifact-name`" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='success'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-process-vnf-mapping-ra-response' mode='sync' ></call>
+ </outcome>
+ <outcome value='failure'>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">
+ <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`" />
+ <parameter name="outputPath" value="jsonContextPrefix" />
+ <parameter name="isEscaped" value="true" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to parse RA respose from mapping or meshed-template" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-process-vnf-template-ra-response' mode='sync' ></call>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="DONE: self-serve-vnf-ra-assignment"/>
+ </record>
+ <set>
+ <parameter name='pathname'
+ value="`'/var/tmp/ss-vnf-ra-assignment-' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='`$pathname`' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml
new file mode 100644
index 0000000..b640fbf
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml
@@ -0,0 +1,143 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='self-serve-vnf-unassign' mode='sync'>
+ <block atomic='true'>
+ <set>
+ <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />
+ <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />
+ <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />
+ <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />
+ <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />
+ <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />
+ <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />
+ <parameter name='ss.capability.execution-order[8]' value='generate-name' />
+ <parameter name='ss.capability.execution-order_length' value='9' />
+ </set>
+ <set>
+ <parameter name='ss.capability-type' value='vnf' />
+ </set>
+ <switch test='`$prop.controller.user`'>
+ <outcome value=''>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ </outcome>
+ </switch>
+ <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >
+ <set>
+ <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />
+ <!--
+ss.capability.execution-order[]
+-->
+ </set>
+ <set>
+ <parameter name='ss.capability-action' value='unassign' />
+ </set>
+ <set>
+ <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <set>
+ <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+ </set>
+ <switch test='`$ss.capability-name == $tmp.param.capability-name`'>
+ <outcome value='true'>
+ <block atomic='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+ <outcome value='SUCCESS'>
+ <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vf.vnf-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ <parameter name='vf.vnf-data.sdnc-request-header.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />
+ <parameter name='vf.vnf-data.request-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />
+ <parameter name='vf.vnf-data.service-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />
+ <parameter name='vf.vnf-data.vnf-information.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />
+ <parameter name='vf.vnf-data.vnf-request-input.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.`' />
+ <parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />
+ <parameter name='vf.vnf-data.vnf-topology.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />
+ <parameter name='vf.vnf-data.vnf-level-oper-status.'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.ss-vnf-assignments`"/>
+ <parameter name="outputPath" value="tmp.ss-vnf-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ss-vnf-url`"/>
+ <parameter name="outputPath" value="tmp.ss-vnf-url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ss-vnf" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error persisting self-serve vnf assignments in MD-SAL during unassign" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error persisting self-serve vnf assignments in MD-SAL during unassign" />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to unassign self-serve vnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>
+ </record>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`"/>
+ <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>
+ <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>
+ </record>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnf-unassign.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_send-so-response.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_send-so-response.xml
new file mode 100644
index 0000000..aee8feb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_send-so-response.xml
@@ -0,0 +1,46 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='send-so-response' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name="so.response-message" value="`$error-message`" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'so-response.xml'`" />
+ <parameter name='restapiUrl' value="`$so.notification-url`" />
+ <parameter name='restapiUser' value='`$prop.so.user`' />
+ <parameter name='restapiPassword' value='`$prop.so.pwd`' />
+ <parameter name='accept' value='text/plain' />
+ <parameter name='format' value='xml' />
+ <parameter name='contentType' value='application/xml' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name="responsePrefix" value="soResponse-vnf-assign" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Error sending SO response. ' + $error-message`" />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Error sending SO response. ' + $error-message`" />
+ </set>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-assign.xml
new file mode 100644
index 0000000..300c1a9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-assign.xml
@@ -0,0 +1,185 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='service-topology-operation-assign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateServiceInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateServiceInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='db.service-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading SERVICE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.service-instance-name' value='' />
+ </set>
+ <switch test='`$service-topology-operation-input.service-request-input.service-instance-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <switch test='`$db.service-model.ecomp-naming`'>
+ <outcome value='Y'>
+ <block></block>
+ </outcome>
+ <outcome value='N'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No service-instance-name was received but ecomp-naming is not Y" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No service-instance-name was received but ecomp-naming is not Y" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$db.service-model.naming-policy`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-input.action' value='ASSIGN' />
+ <parameter name='generate-unique-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />
+ <parameter name='generate-unique-name-input.index-table-name' value='SERVICE_INSTANCE_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='service_instance_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`$db.service-model.service-instance-name-prefix + '_'`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.service-instance-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='generated-via-policy' value='true' />
+ </set>
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.service-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.service-model.service-uuid`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unable to generate service name" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.service-instance-name' value='`$naming-policy-generate-name-output.service-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />
+ <parameter name='generate-unique-name-input.supplied-name' value='`$service-topology-operation-input.service-request-input.service-instance-name`' />
+ <parameter name='generate-unique-name-input.service-instance-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.service-instance-name' value="`$service-topology-operation-input.service-request-input.service-instance-name`" />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.service-topology.service-topology-identifier.service-instance-id'
+ value='`$service-topology-operation-input.service-information.service-instance-id`' />
+ <parameter name='service-data.service-topology.service-topology-identifier.service-type'
+ value='`$service-topology-operation-input.service-information.subscription-service-type`' />
+ <parameter name='service-data.service-topology.service-topology-identifier.service-instance-name'
+ value='`$tmp.service-instance-name`' />
+ <parameter name='service-data.service-topology.service-topology-identifier.global-customer-id'
+ value='`$service-topology-operation-input.service-information.global-customer-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.service-topology.onap-model-information.'
+ value='`$service-topology-operation-input.service-information.onap-model-information.`' />
+ </set>
+ <switch test='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`' >
+ <set>
+ <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-name'
+ value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].name`' />
+ <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-value'
+ value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].value`' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.service-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.service-level-oper-status.last-rpc-action' value='assign' />
+ <parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml
new file mode 100644
index 0000000..c018b1a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml
@@ -0,0 +1,63 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='service-topology-operation-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateServiceInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'changeassign' then request-action must be 'CreateServiceInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='db.service-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading SERVICE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='service-data.service-topology.onap-model-information.'
+ value='`$service-topology-operation-input.service-information.onap-model-information.`' />
+ </set>
+ <set>
+ <parameter name='service-data.service-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.service-level-oper-status.last-rpc-action' value='changeassign' />
+ <parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />
+ </set>
+ <set>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml
new file mode 100644
index 0000000..89cc3eb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml
@@ -0,0 +1,67 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='service-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteServiceInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteServiceInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot deactivate this service because there are provided allotted resources" />
+ </return>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-instance"
+ key="customer.global-customer-id = $service-data.service-topology.service-topology-identifier.global-customer-id AND
+ service-subscription.service-type = $service-data.service-topology.service-topology-identifier.service-type AND
+ service-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.service-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.service-level-oper-status.last-rpc-action' value='deactivate' />
+ <parameter name='service-data.service-level-oper-status.last-action' value='DeleteServiceInstance' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-delete.xml
new file mode 100644
index 0000000..5270874
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation-delete.xml
@@ -0,0 +1,100 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='service-topology-operation-delete' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteServiceInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'delete' then request-action must be 'DeleteServiceInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot delete the service because there are networks defined" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot delete the service because there are VNFs defined" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot deactivate this service because there are provided allotted resources" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot deactivate this service because there are consumed allotted resources" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$service-data.service-topology.onap-model-information.model-uuid`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.' value='' />
+ <parameter name='service-status.' value='' />
+ </set>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation.xml
new file mode 100644
index 0000000..1cf7718
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_service-topology-operation.xml
@@ -0,0 +1,41 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='service-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-service-input' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.sdnc-request-header.' value='`$service-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.request-information.' value='`$service-topology-operation-input.request-information.`' />
+ <parameter name='service-data.service-information.' value='`$service-topology-operation-input.service-information.`' />
+ <parameter name='service-data.service-request-input.' value='`$service-topology-operation-input.service-request-input.`' />
+ </set>
+ <switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-assign' mode='sync' ></call>
+ </outcome>
+ <outcome value='deactivate'>
+ <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='delete'>
+ <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='changeassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-changeassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$service-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml
new file mode 100644
index 0000000..4d75a2f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml
@@ -0,0 +1,133 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='tunnelxconn-topology-operation-activate' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<parameter name='tmp.ar.brg-vnf-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.tunnelxconn-vnf-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/tunnelxconn-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-tx-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />
+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />
+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />
+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $tunnelxconn-topology-operation-input.service-information.global-customer-id AND
+ service-subscription.service-type = $tunnelxconn-topology-operation-input.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="in-service-path" />
+
+
+<!--
+
+<set>
+$tunnelxconn-topology-operation-input.service-information.global-customer-id
+$tunnelxconn-topology-operation-input.service-information.subscription-service-type
+
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+
+ $tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id
+
+--><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tunnelxconn-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml
new file mode 100644
index 0000000..58f73f8
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml
@@ -0,0 +1,272 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='tunnelxconn-topology-operation-assign' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+<parameter name='tmp.search.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/tunnelxconn-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='Other'>
+
+<call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' >
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />
+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />
+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set><set>
+<parameter name='tx-ar-identifiers.consuming-service-instance-id' value="`$tunnelxconn-topology-operation-input.service-information.service-instance-id` " />
+<parameter name='tx-ar-identifiers.parent-service-instance-id' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+<parameter name='tx-ar-identifiers.allotted-resource-type' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+<parameter name='tx-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+
+</set><set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.'
+value="`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+
+
+</set><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+<outcome value=''>
+<set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-invariant-uuid'
+value="`$ar-model.invariant-uuid`" />
+
+
+</set></outcome></switch><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+<outcome value=''>
+<set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-uuid'
+value="`$ar-model.uuid`" />
+
+
+</set></outcome></switch><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+<outcome value=''>
+<set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version'
+value="`$ar-model.version`" />
+
+
+</set></outcome></switch><switch test='`$ar-model.ecomp-generated-naming`'>
+<outcome value='Y'>
+<block atomic="true">
+<switch test='`$ar-model.naming-policy`'>
+<outcome value='oam_network_policy'>
+<block atomic='true'>
+<set>
+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>
+
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>
+
+</execute><set>
+<parameter name='tx-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+</set></block></outcome><outcome value='Other'>
+<block atomic='true'>
+<set>
+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$TenantOAMNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>
+
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.ar-name`"/>
+ <parameter name="outputPath" value="tmp.ar-name"/>
+ <parameter name="target" value="$LandingNetworkRole"/>
+ <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>
+
+</execute><set>
+<parameter name='tx-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in allotted-resource-model data. Ecomp-generated-naming should be true" />
+
+</return></outcome></switch><set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.' value="`$tx-ar-identifiers.`" />
+
+
+</set><set>
+<parameter name='tmp.vni' value='123' />
+<parameter name='tmp.vgmux-bearer-ip' value='127.0.0.1' />
+<parameter name='tmp.vgmux-lan-ip' value='127.0.0.1' /></set><switch test="`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length != ''`">
+<outcome value='true'>
+<for index='curidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >
+<switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-name`'>
+<outcome value='vgmux_private_ip_0'>
+<set>
+<parameter name='tmp.vgmux-lan-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>
+
+</set></outcome><outcome value='vgmux_private_ip_2'>
+<set>
+<parameter name='tmp.vgmux-bearer-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>
+
+</set></outcome></switch></for></outcome></switch><set>
+<parameter name='tmp.manageVni.action' value='reserve' />
+<parameter name='tmp.manageIpaddr.action' value='reserve' />
+<parameter name='tmp.manageVni.pool' value='VNI'/>
+<parameter name='tmp.manageIpaddr.pool' value='VGW'/></set><call module='GENERIC-RESOURCE-API' rpc='manage-vni-assignment' mode='sync' >
+</call><call module='GENERIC-RESOURCE-API' rpc='manage-ipaddr-assignment' mode='sync' >
+</call><set>
+<parameter name='tx-ar-assignments.vni' value='`$tmp.manageVni.vni`'/>
+<parameter name='tx-ar-assignments.vgmux-bearer-ip' value='`$tmp.vgmux-bearer-ip`'/>
+<parameter name='tx-ar-assignments.vgmux-lan-ip' value='`$tmp.vgmux-lan-ip`'/>
+<parameter name='tx-ar-assignments.vg-ip' value='`$tmp.manageIpaddr.ip`'/>
+
+</set><set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].name' value='VNI'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].value' value='`$tmp.manageVni.vni`'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].name' value='vgmux_private_ip_2'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].value' value='`$tmp.vgmux-bearer-ip`'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].name' value='vgmux_private_ip_0'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].value' value='`$tmp.vgmux-lan-ip`'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].name' value='vgw_private_ip_0'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].value' value='`$tmp.manageIpaddr.ip`'/>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters_length' value='4'/>
+
+</set><set>
+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.'
+value="`$tx-ar-assignments.`" />
+
+
+</set><switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+<outcome value=''>
+<set>
+<parameter name='tmp.cidx' value="`0`" />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+
+
+</set></outcome><outcome value='Other'>
+<block atomic="true"><for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+<switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+
+<outcome value='true'>
+<block atomic="true"><set>
+<parameter name='tmp.cidx' value='`$cidx`' />
+<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+<parameter name='tmp.found-cidx' value='true' /></set></block></outcome></switch></for><switch test='`$tmp.found-cidx`'>
+<outcome value='false'>
+<block atomic="true"><set>
+<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+</set></block></outcome></switch></block></outcome></switch><set>
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+
+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><set>
+<parameter name='service-data.service-information.global-customer-id' value='`$tunnelxconn-topology-operation-input.service-information.global-customer-id`' />
+<parameter name='service-data.service-information.subscription-service-type' value='`$tunnelxconn-topology-operation-input.service-information.subscription-service-type`' />
+<!--
+<parameter name='service-data.service-information.service-instance-id' value='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`' />
+-->
+<parameter name='service-data.service-information.service-instance-id' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="description" value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+ <parameter name="selflink" value="`$tmp.ar.self-link`" />
+ <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+ <parameter name="model-version-id" value="`$ar-model.uuid`" />
+ <parameter name="operational-status" value="null" /><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tunnelxconn-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></outcome><outcome value='Other'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`" />
+</return></outcome></call></outcome></execute></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml
new file mode 100644
index 0000000..8071065
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml
@@ -0,0 +1,300 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'>
+ <method rpc='tunnelxconn-topology-operation-create' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/tunnelxconn-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-tx-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />
+ </set>
+ <switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='PendingCreate'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />
+ <parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />
+ <parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />
+ </set>
+ <set>
+ <parameter name='tmp.tunnel-vgMUX-vG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />
+ <parameter name='tmp.tunnel-vgMUX-vBRG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />
+ </set>
+ <set>
+ <parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' ></call>
+ <for index='paramidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >
+ <!--
+ <for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >
+ -->
+ <switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>
+ <!--
+ <switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>
+ -->
+ <outcome value='true'>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />
+ <!--
+ <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />
+
+ -->
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`"/>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />
+ <parameter name='tmp.tunnel-dest-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />
+ <parameter name='tmp.tunnel-src-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip` " />
+ <parameter name='tmp.tunnel-vni' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vBRG-name` " />
+ <parameter name='tmp.tunnel-dest-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />
+ <parameter name='tmp.tunnel-src-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip` " />
+ <parameter name='tmp.tunnel-vni' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`" />
+ <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-name`"/>
+ </execute>
+ <set>
+ <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vBRG-name` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`" />
+ <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $tunnelxconn-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml
new file mode 100644
index 0000000..dc24e03
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml
@@ -0,0 +1,117 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='tunnelxconn-topology-operation-deactivate' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/tunnelxconn-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-tx-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />
+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><set>
+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />
+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />
+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+
+</execute><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="allotted-resource"
+ key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+ service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+ service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+ allotted-resource.id = $tmp.ar.allotted-resource-id"
+ pfx='pfx' local-only='false' force='false'>
+ <parameter name="operational-status" value="out-of-service-path" />
+<outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="AAI failed" />
+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tunnelxconn-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml
new file mode 100644
index 0000000..d70fb60
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml
@@ -0,0 +1,268 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'>
+ <method rpc='tunnelxconn-topology-operation-delete' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/tunnelxconn-topology/'` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='bk-tx-ar' value='$mdsal-ar.' />
+ </set>
+ <switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>
+ <outcome value='1'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />
+ </set>
+ <switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+ <parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />
+ <parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />
+ <parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+ <parameter name="outputPath" value="tmp.current-time" />
+ </execute>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />
+ <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+ </set>
+ <set>
+ <parameter name='tx-ar-assignments.' value="" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' ></call>
+ <for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >
+ <switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.honeycomb.url`"/>
+ <parameter name="outputPath" value="tmp.honeycomb.url"/>
+ <parameter name="target" value="{honeycomb-instance-ip}"/>
+ <parameter name="replacement" value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`"/>
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>
+ <set>
+ <parameter name='tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />
+ </set>
+ <set>
+ <parameter name='tmp.tunnel-vgMUX-vG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />
+ <parameter name='tmp.tunnel-vgMUX-vBRG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vG-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vBRG-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>
+ <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>
+ <parameter name="target" value="{tunnel-name}"/>
+ <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vG-name`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />
+ <parameter name='restapiUser' value='`$prop.honeycomb.user`' />
+ <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="honeycomb-vnf" />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+ <parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $tunnelxconn-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml
new file mode 100644
index 0000000..eaab7f2
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml
@@ -0,0 +1,80 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='tunnelxconn-topology-operation-unassign' mode='sync'>
+<block atomic="true"><set>
+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+
+
+</set><set>
+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/tunnelxconn-topology/'` " />
+
+</set><execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>
+ <parameter name="outputPath" value="tmp.ar-url"/>
+ <parameter name="target" value="{allotted-resource-id}"/>
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block atomic="true">
+<set>
+<parameter name='bk-tx-ar' value='$mdsal-ar.' />
+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>
+<outcome value='1'>
+<block atomic='true'>
+<set>
+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />
+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+<outcome value='Created'>
+<block>
+</block></outcome><outcome value='Other'>
+<block>
+</block></outcome></switch><set>
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />
+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<block atomic="true">
+</block></outcome></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='DELETE' />
+ <parameter name="responsePrefix" value="mdsal-ar" />
+
+<outcome value='success'>
+<block>
+</block></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome><outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating md-sal for tunnelxconn-allotted-resource" />
+</return></outcome></execute><set>
+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>
+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $tunnelxconn-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+
+</set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml
new file mode 100644
index 0000000..277b74d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml
@@ -0,0 +1,26 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='tunnelxconn-topology-operation' mode='sync'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='validate-tunnelxconn-input' mode='sync' >
+</call><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value='assign'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-assign' mode='sync' >
+</call></block></outcome><outcome value='create'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-create' mode='sync' >
+</call></block></outcome><outcome value='activate'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-activate' mode='sync' >
+</call></block></outcome><outcome value='deactivate'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-deactivate' mode='sync' >
+</call></block></outcome><outcome value='delete'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-delete' mode='sync' >
+</call></block></outcome><outcome value='unassign'>
+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-unassign' mode='sync' >
+</call></block></outcome><outcome value='Other'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+</return></outcome></switch><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml
new file mode 100644
index 0000000..bf041b1
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml
@@ -0,0 +1,319 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-api-contrail-route-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ctotmp.action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$cto-api.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.port-mirror-configuration-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.port-mirror-configuration-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.source-network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.source-network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.collector-network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.default-domain`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.default-project`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.cloud-region-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.cloud-owner`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.cloud-owner is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.service-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.service-type is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.owning-entity`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$cto-api.default-domain`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.default-project`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.cloud-region-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.src-contrail-network-fqdn`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.collector-contrail-network-fqdn`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.owning-entity`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$cto-api.default-domain`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.default-project`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.cloud-region-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.src-contrail-network-fqdn`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.collector-contrail-network-fqdn`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.rollback-flag`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.rollback-flag is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.owning-entity`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$cto-api.default-domain`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.default-project`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.cloud-region-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.rollback-flag`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.rollback-flag is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.configuration-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.configuration-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$cto-api.owning-entity`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml
new file mode 100644
index 0000000..73bb52d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml
@@ -0,0 +1,118 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-bbs-network-input-parameters' mode='sync'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateAccessConnectivityInstance'>
+ <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='CreateInternetProfileInstance'>
+ <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteAccessConnectivityInstance'>
+ <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='DeleteInternetProfileInstance'>
+ <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ <outcome value='ChangeInternetProfileInstance'>
+ <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="svc-action is null" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-vnf-input-parameters.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-vnf-input-parameters.xml
new file mode 100644
index 0000000..7f72fbd
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-bbs-vnf-input-parameters.xml
@@ -0,0 +1,118 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-bbs-vnf-input-parameters' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateAccessConnectivityInstance'>
+ <switch test='$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='CreateInternetProfileInstance'>
+ <switch test='$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteAccessConnectivityInstance'>
+ <switch test='$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='DeleteInternetProfileInstance'>
+ <switch test='$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ <outcome value='ChangeInternetProfileInstance'>
+ <switch test='$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error invalid request-action" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="svc-action is null" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-brg-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-brg-input.xml
new file mode 100644
index 0000000..57b493f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-brg-input.xml
@@ -0,0 +1,116 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='validate-brg-input' mode='sync'>
+<block atomic="true"><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.service-information.service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value='assign'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="brg-information.onap-model-information.model-customization-uuid is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.vgmux-bearer-ip`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.vni`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.brg-wan-mac-address `'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />
+</return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+ pfx='ar-model'>
+
+<outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+</return></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+</return></outcome></get-resource></block></outcome><outcome value='create'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='activate'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='deactivate'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='delete'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='unassign'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch></block></outcome></switch><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml
new file mode 100644
index 0000000..ec0301a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml
@@ -0,0 +1,331 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-connection-attachment-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$connection-attachment-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSOTNAttachmentInstance'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">
+ <block>
+ <set>
+ <parameter name='tmp.name' value='' />
+ <parameter name='tmp.value' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>
+ <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>
+ </set>
+ <switch test="`$tmp.name`">
+ <outcome value='sotnVpnName'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='clientSignal'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='access-provider-id'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='access-client-id'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='access-topology-id'></outcome>
+ <outcome value='access-node-id'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='cVLAN'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='CreateSDWANAttachmentInstance'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">
+ <block>
+ <set>
+ <parameter name='tmp.name' value='' />
+ <parameter name='tmp.value' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>
+ <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>
+ </set>
+ <switch test="`$tmp.name`">
+ <outcome value='sdwanVpnName'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='role'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'$tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.request-action is invalid" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSOTNAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='ActivateSDWANAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.request-action is invalid" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSDWANAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='DeactivateSOTNAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSOTNAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='DeleteSDWANAttachmentInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
+ </execute>
+ <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-contrail-route-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-contrail-route-input.xml
new file mode 100644
index 0000000..421335d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-contrail-route-input.xml
@@ -0,0 +1,337 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-contrail-route-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateContrailRouteInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='DeleteContrailRouteInstance'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Invalid request-information.request-action " />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="contrail-route-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="contrail-topology-operation-input.contrail-route-request-input.dest-network.network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+ pfx='ar-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateContrailRouteInstance for svc-action=assign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateNetworkInstance for svc-action=create" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateContrailRouteInstance for svc-action=activate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteContrailRouteInstance for svc-action=deactivate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteContrailRouteInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteContrailRouteInstance'>
+ <block atomic="true">
+ <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteContrailRouteInstance for svc-action=unassign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml
new file mode 100644
index 0000000..cc1bc1a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml
@@ -0,0 +1,108 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-generic-configuration-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Service instance ' + $generic-configuration-topology-operation-input.service-information.service-instance-id + ' does not exist'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateGenericConfigurationInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be CreateGenericConfigurationInstance'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='activate'>
+ <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateGenericConfigurationInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be CreateGenericConfigurationInstance'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='deactivate'>
+ <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteGenericConfigurationInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be DeleteGenericConfigurationInstance'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='unassign'>
+ <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteGenericConfigurationInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be DeleteGenericConfigurationInstance'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unsupported svc-action ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml
new file mode 100644
index 0000000..3489544
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml
@@ -0,0 +1,107 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-getpathsegment-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$getpathsegment-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$getpathsegment-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateForwardingPathInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.subscription-service-type is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='db.service-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error reading SERVICE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE invariant_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid'
+ pfx='db.service-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error reading SERVICE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for invariant UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input-parameters.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input-parameters.xml
new file mode 100644
index 0000000..0987a77
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input-parameters.xml
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="validate-network-input-parameters" mode="sync">
+ <block atomic="true">
+ <switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">
+ <outcome value="create">
+ <block atomic="true">
+ <switch test="`$network-topology-operation-input.request-information.request-action`">
+ <outcome value="CreateNetworkInstance">
+ <block atomic="true">
+ <for index="i" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <block>
+ <set>
+ <parameter name="tmp.name" value="" />
+ <parameter name="tmp.value" value="" />
+ </set>
+ <set>
+ <parameter name="tmp.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`" />
+ <parameter name="tmp.value" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].value`" />
+ </set>
+ <switch test="`$tmp.name`">
+ <outcome value="name">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="service-type">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="site1-name">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="site2-name">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="sna1_name">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="sna2_name">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="pe1_id">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="pe2_id">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac1-id">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac2-id">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac1-ip">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac2-ip">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac1_peer_ip">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac2_peer_ip">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac1_svlan">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="ac2_svlan">
+ <switch test="`$tmp.value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'network-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be CreateNetworkInstance for svc-action=create" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="activate">
+ <switch test="`$network-topology-operation-input.request-information.request-action`">
+ <outcome value="ActivateDCINetworkInstance">
+ <block atomic="true">
+ <call module="GENERIC-RESOURCE-API" rpc="validate-overlay-network-input-parameters" mode="sync" />
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be ActivateNetworkInstance for svc-action=activate" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="deactivate">
+ <switch test="`$network-topology-operation-input.request-information.request-action`">
+ <outcome value="DeActivateDCINetworkInstance">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">
+ <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />
+ </execute>
+ <switch test="`$network-topology-operation-input.network-information.network-id`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeactivateNetworkInstance for svc-action=deactivate" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value="delete">
+ <block atomic="true">
+ <switch test="`$network-topology-operation-input.request-information.request-action`">
+ <outcome value="DeleteNetworkInstance">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">
+ <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />
+ </execute>
+ <switch test="`$network-topology-operation-input.network-information.network-id`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input.xml
new file mode 100644
index 0000000..87cf448
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-network-input.xml
@@ -0,0 +1,596 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-network-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateNetworkInstance'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.networks.network_length`'>
+ <outcome value=''>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.validate-network-input"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Network id proveded but no network exists that matches"/>
+ <parameter name="field5" value="`$network-topology-operation-input.network-information.network-id`"/>
+ </record>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+ <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+ <outcome value=''>
+ <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.validate-network-input"/>
+ <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Network instance group id proveded but no network instance group exists that matches"/>
+ <parameter name="field5" value="`$network-topology-operation-input.network-information.network-instance-group-id`"/>
+ </record>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+ <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.ngidx' value='`$ngidx`' />
+ <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.service-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-data.service-information.onap-model-information.model-uuid'
+ pfx='service-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid
+ and service_uuid = $service-data.service-information.onap-model-information.model-uuid'
+ pfx='network-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='service-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid
+ and service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='network-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be CreateNetworkInstance for svc-action=assign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSDWANConnectivityInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='ActivateSOTNConnectivityInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='ActivateDCINetworkInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='CreateNetworkInstance'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-information.network-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.service-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-data.service-information.onap-model-information.model-uuid'
+ pfx='service-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid
+ and service_uuid = $service-data.service-information.onap-model-information.model-uuid'
+ pfx='network-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from SERVICE_MODEL WHERE service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='service-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid
+ and service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'
+ pfx='network-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No network model found for customization UUID '
+ + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +
+ ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be CreateNetworkInstance for svc-action=activate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='changeassign'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateNetworkInstance'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-information.network-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.from-preload`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.from-preload is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be CreateNetworkInstance for svc-action=changeassign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSDWANConnectivityInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='DeactivateSOTNConnectivityInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='DeActivateDCINetworkInstance'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='DeleteNetworkInstance'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-information.network-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=deactivate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteNetworkInstance'>
+ <block atomic="true">
+ <switch test='`$network-topology-operation-input.network-information.network-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.network-information.network-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=unassign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml
new file mode 100644
index 0000000..2e16622
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="validate-overlay-network-input-parameters" mode="sync">
+ <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <block atomic="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site1_networkName" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site2_networkName" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site1_routerId" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`">
+ <outcome value="true">
+ <block>
+ <set>
+ <parameter name="validate.dci-connects.site2_routerId" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site1_importRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site2_importRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site1_exportRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT2'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site1_exportRT2" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site1_vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="validate.dci-connects.site2_vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">
+ <outcome value="true">
+ <block>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="prop.dci-connects.tunnelType" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ <switch test="`$validate.dci-connects.tunnelType`">
+ <outcome value="L3-DCI">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">
+ <parameter name="`$network-topology-operation-input.network-request-input.network-input-parameters.site1_routerId`" value="" />
+ <parameter name="`$network-topology-operation-input.network-request-input.network-input-parameters.site2_routerId`" value="" />
+ </execute>
+ </outcome>
+ <outcome value="L2-DCI" />
+ <outcome value="other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-pnf-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-pnf-input.xml
new file mode 100644
index 0000000..3c1ae0d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-pnf-input.xml
@@ -0,0 +1,86 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-pnf-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-details.pnf-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="pnf-details.pnf-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="pnf-details.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="pnf-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="pnf-request-input.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-security-zone-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-security-zone-input.xml
new file mode 100644
index 0000000..0aaa7ba
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-security-zone-input.xml
@@ -0,0 +1,328 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-security-zone-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSecurityZoneInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='DeleteSecurityZoneInstance'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Invalid request-information.request-action " />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="security-zone-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="security-zone-topology-operation-input.security-zone-request-input.vlan-tag is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="security-zone-topology-operation-input.security-zone-request-input.trusted-network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="security-zone-operation-input.security-zone-request-input.untrusted-network-role is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+ pfx='ar-model'>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateSecurityZoneInstance for svc-action=assign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateSecurityZoneInstance for svc-action=create" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be CreateSecurityZoneInstance for svc-action=activate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteSecurityZoneInstance for svc-action=deactivate" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteSecurityZoneInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSecurityZoneInstance'>
+ <block atomic="true">
+ <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required to be DeleteSecurityZoneInstance for svc-action=unassign" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-service-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-service-input.xml
new file mode 100644
index 0000000..ca1c3a4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-service-input.xml
@@ -0,0 +1,117 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-service-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$service-topology-operation-input.service-information.subscription-service-type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.subscription-service-type is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.global-customer-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.global-customer-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='changeassign'>
+ <block atomic="true">
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.onap-model-information.model-name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml
new file mode 100644
index 0000000..58b7467
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml
@@ -0,0 +1,106 @@
+<service-logic xmlns='http://www.onap.org/sdnc/svclogic' 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}'><method rpc='validate-tunnelxconn-input' mode='sync'>
+<block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>
+<outcome value='assign'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="tunnelxconn-information.onap-model-information.model-customization-uuid is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.brg-wan-mac-address`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="tunnelxconn-topology-operation-input.brg-wan-mac-address is a required input" />
+</return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+ pfx='ar-model'>
+
+<outcome value='not-found'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+</return></outcome><outcome value='failure'>
+<return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+</return></outcome></get-resource></block></outcome><outcome value='create'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='activate'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='deactivate'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='delete'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+</return></outcome></switch></block></outcome><outcome value='unassign'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+<outcome value=''><return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+</return></outcome></switch></block></outcome></switch><return status='success'>
+<parameter name="ack-final-indicator" value="Y" />
+<parameter name="error-code" value="200" />
+<parameter name="error-message" value="`$error-message`" />
+</return></block></method></service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vf-module-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vf-module-input.xml
new file mode 100644
index 0000000..f21ff99
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vf-module-input.xml
@@ -0,0 +1,86 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-vf-module-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-information.vnf-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-information.vf-module-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-request-input.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vnf-input.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vnf-input.xml
new file mode 100644
index 0000000..6de5257
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_validate-vnf-input.xml
@@ -0,0 +1,77 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='validate-vnf-input' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.service-information.service-instance-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.tenant`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-information.vnf-request-input.tenant is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-request-input.aic-cloud-region is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml
new file mode 100644
index 0000000..0324511
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml
@@ -0,0 +1,926 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-generate-heat-parameters' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='const.sub-int' value='subint' />
+ <parameter name='const.subnet-id' value='_subnet_id' />
+ <parameter name='const.v6-subnet-id' value='_v6_subnet_id' />
+ <parameter name='const.port' value='port' />
+ <parameter name='const.sub-int-count' value='_subintcount' />
+ <parameter name='const.vlan-ids' value='_vlan_ids' />
+ <parameter name='const.net-names' value='_net_names' />
+ <parameter name='const.net-ids' value='_net_ids' />
+ <parameter name='const.ip' value='_ip' />
+ <parameter name='const.v6-ip' value='_v6_ip' />
+ <parameter name='const.floating-ip' value='_floating_ip' />
+ <parameter name='const.floating-v6-ip' value='_floating_v6_ip' />
+ <parameter name='const.underscore' value='_' />
+ </set>
+ <set>
+ <parameter name='output-index' value='0' />
+ </set>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-name-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + '_name_'
+ + $vm-name-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />
+ </set>
+ <switch test='`$vm-name-index &gt; 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='cdl' value="`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='cdl' value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + '_names'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>
+ <outcome value=''>
+ <set>
+ <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + $const.floating-ip`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + $const.floating-v6-ip`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length &gt; 0`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='cdl' value='[' />
+ </set>
+ <for index='interface-route-prefix-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length`' >
+ <block>
+ <switch test='`$interface-route-prefix-index &gt; 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='cdl' value="`$cdl + ','`" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='cdl' value="`$cdl
+ + '{\&quot;interface_route_table_routes_route_prefix\&quot;:\&quot;'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix[$interface-route-prefix-index]
+ + '\&quot;}'`" />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='cdl' value="`$cdl + ']'`" />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_route_prefixes'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='address-family-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`' >
+ <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[$address-family-index].ip-version`'>
+ <outcome value='ipv4'>
+ <block>
+ <for silentFailure='true' index='address-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[$address-family-index].network-ips.network-ip_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + $const.ip
+ + $const.underscore
+ + $address-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ 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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <switch test='`$address-index &gt; 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='cdl' value="`$cdl + ',' + $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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='cdl' 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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_ips'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block>
+ <for silentFailure='true' index='address-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[$address-family-index].network-ips.network-ip_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + $const.v6-ip
+ + $const.underscore
+ + $address-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ 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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <switch test='`$address-index &gt; 0`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='cdl' value="`$cdl + ',' + $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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='cdl' 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[$address-family-index].network-ips.network-ip[$address-index]`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_v6_ips'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length &gt; 0`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_vlan_filter'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <set>
+ <parameter name='public-cdl' value='' />
+ <parameter name='private-cdl' value='' />
+ <parameter name='all-cdl' value='' />
+ </set>
+ <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.is-private`'>
+ <outcome value='true'>
+ <switch test='`$private-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='private-cdl'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='private-cdl'
+ value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$public-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='public-cdl'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='public-cdl'
+ value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$all-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='all-cdl'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='all-cdl'
+ value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$private-cdl`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_private_vlans'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$private-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$public-cdl`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_public_vlans'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$public-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ + $const.underscore
+ + $network-key
+ + '_guest_vlans'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$all-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block>
+ <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='port-index' value='0' />
+ </set>
+ <for silentFailure='true' index='vnfc-port-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_subintcount'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_floating_ip'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_floating_v6_ip'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vlan-cdl' value='' />
+ <parameter name='net-names-cdl' value='' />
+ <parameter name='net-id-cdl' value='' />
+ <parameter name='ipv4-ips-cdl' value='' />
+ <parameter name='ipv6-ips-cdl' value='' />
+ </set>
+ <for silentFailure='true' index='vnic-sub-interface-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <block>
+ <switch test='`$vlan-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vlan-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='vlan-cdl' value="`$vlan-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$net-names-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='net-names-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='net-names-cdl' value="`$net-names-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$net-id-cdl`'>
+ <outcome value=''>
+ <set>
+ <parameter name='net-id-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='net-id-cdl' value="`$net-id-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`" />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='nii-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].ip-version`'>
+ <outcome value='ipv4'>
+ <block>
+ <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + $const.underscore
+ + $vnfc-network-index
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_ip_'
+ + $ip-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block>
+ <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + $const.underscore
+ + $vnfc-network-index
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_v6_ip_'
+ + $ip-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <switch test='`$vlan-cdl`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + $const.underscore
+ + $vnfc-network-index
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_vlan_ids'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$vlan-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$net-names-cdl`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + $const.underscore
+ + $vnfc-network-index
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_net_names'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$net-names-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$net-id-cdl`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type
+ + $const.underscore
+ + $vnfc-network-index
+ + '_subint_'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role
+ + '_port_'
+ + $port-index
+ + '_net_ids'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$net-id-cdl`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='port-index' value='`$port-index + 1`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for silentFailure='true' index='az-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`'availability_zone_'
+ + $az-index`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$az-index]`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </for>
+ <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <block>
+ <set>
+ <parameter name='network-key' value='' />
+ </set>
+ <set>
+ <parameter name='network-role' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />
+ </set>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <switch test='`$network-role ==
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>
+ <outcome value=''>
+ <set>
+ <parameter name='network-key' value='`network-role`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />
+ </set>
+ </outcome>
+ </switch>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$network-key`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$network-key`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$network-key
+ + '_net_id'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$network-key
+ + '_net_name'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$network-key
+ + '_net_fqdn'`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn
+`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-ipv4' value='false' />
+ <parameter name='found-ipv6' value='false' />
+ </set>
+ <for silentFailure='true' index='subnet-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version`'>
+ <outcome value='ipv4'>
+ <switch test='`$found-ipv4`'>
+ <outcome value='false'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$network-key
+ + $const.subnet-id`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <set>
+ <parameter name='found-ipv4' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='ipv6'>
+ <switch test='`$found-ipv6`'>
+ <outcome value='false'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-parameters.param[$output-index].name'
+ value="`$network-key
+ + $const.v6-subnet-id`" />
+ <parameter name='tmp.vf-module-parameters.param[$output-index].value'
+ value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ <set>
+ <parameter name='found-ipv6' value='true' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-parameters.param_length`'>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.preload-parameters.' value='`$tmp.vf-module-topology.vf-module-parameters.`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-parameters.' value='`$tmp.vf-module-parameters.`' />
+ </set>
+ <for silentFailure='true' index='preload-index' start='0' end='`$tmp.preload-parameters.param_length`' >
+ <block>
+ <set>
+ <parameter name='found-match' value='false' />
+ </set>
+ <for index='cur-index' start='0' end='`$output-index`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name
+ == $tmp.preload-parameters.param[$preload-index].name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value' value='`$tmp.preload-parameters.param[$preload-index].value`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'
+ value="`$tmp.preload-parameters.param[$preload-index].name`" />
+ <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'
+ value="`$tmp.preload-parameters.param[$preload-index].value`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='input-index' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <block>
+ <set>
+ <parameter name='found-match' value='false' />
+ </set>
+ <for index='cur-index' start='0' end='`$output-index`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name
+ == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value'
+ value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`' />
+ </set>
+ <set>
+ <parameter name='found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-match`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'
+ value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`" />
+ <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'
+ value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`" />
+ </set>
+ <set>
+ <parameter name='output-index' value='`$output-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-parameters.param_length' value='`$output-index`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.sdnc-generated-cloud-resources' value='true' />
+ </set>
+ </block>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml
new file mode 100644
index 0000000..edbbcca
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml
@@ -0,0 +1,188 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-assign-rollback' mode='sync'>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='1'>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>
+ <outcome value='true'>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>
+ <outcome value='true'>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>
+ <outcome value='true'>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>
+ <outcome value='false'>
+ <block>
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $vf-module-topology-operation-input.vf-module-information.vf-module-id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $vf-module-topology-operation-input.vf-module-information.vf-module-id" ></update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag`'>
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" ></delete>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag`'>
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="vf-module:relationship-list"
+ key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id
+ AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id
+ AND related-to = l3-network
+ AND l3-network.network-id = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id" ></delete>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" ></delete>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" ></delete>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id
+ == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>
+ <outcome value='true'>
+ <for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >
+ <set>
+ <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'
+ value='' />
+ <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'
+ value='unassigned' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml
new file mode 100644
index 0000000..e5f823a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml
@@ -0,0 +1,175 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='vf-module-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'activate' then request-action must be 'CreateVfModuleInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vf-module-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$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.vlan-vnfc-instance-group_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-activate' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="orchestration-status" value="Active" />
+ <parameter name="prov-status" value="NVTPROV" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vnfc in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ </return>
+ </outcome>
+ </update>
+ </for>
+ </for>
+ <update resource='SQL' force='true' plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ key='UPDATE EIPAM_IP_ASSIGNMENTS SET status = "ACTIVE" WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table" />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'
+ value='$vf-module-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'
+ value='$vf-module-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'
+ value='$vf-module-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'
+ value='$vf-module-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'
+ value='$vf-module-topology-operation-input.vf-module-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmoduleactivate.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-async.xml
new file mode 100644
index 0000000..923303a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-async.xml
@@ -0,0 +1,1862 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-assign-async' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <set>
+ <parameter name="so.ack-final-indicator" value="Y" />
+ <parameter name="so.response-code" value="500" />
+ <parameter name="so.notification-url" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="so.svc-request-id" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="so.service-type" value="`$vf-module-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="so.service-instance-id" value="`$vf-module-topology-operation-input.service-information.service-instance-id`" />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-module-model'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-assign' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to create self-serve assignment for vf-module with vf-module-id=' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' with error: ' + $error-message`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.request-information.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnfend.log' />
+ </execute>
+ <set>
+ <parameter name="so.response-code" value="200" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-module-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id
+ + ' already exists, and status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-level-oper-status.order-status`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-type' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />
+ <parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />
+ <parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region"
+ pfx='aai.cloud-region' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cloud region not found in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error retrieving cloud region from AAI. Is AAI down?" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>
+ <outcome value='complex'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='aai-uid-split' />
+ <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />
+ <parameter name='regex' value='/' />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'
+ value='`$aai-uid-split[$aai-uid-split_length - 1]`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-module-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'
+ value='`$db.vf-module-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-version'
+ value='`$db.vf-module-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-version'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-name'
+ value='`$db.vf-module-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-name'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`'>
+ <outcome value=''>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'from-preload flag is true but could not find preload information for VF module name ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$prop.controller.url + $prop.restapi.preloadinformation + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name + '/vf-module'`" />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-preload" />
+ <outcome value='failure'>
+ <block>
+ <switch test='`$mdsal-preload.response-code`'>
+ <outcome value='404'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'from-preload flag is true but could not find preload information for VF module name ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error retrieving preload-information" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmoduleb.log' />
+ </execute>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='automated-assignment' value='true' />
+ </set>
+ </outcome>
+ <outcome value='true'>
+ <set>
+ <parameter name='automated-assignment' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='vnf-network-index' value='-1' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='vnf-network-index' value='`$idx`' />
+ </set>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-network-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'VNFC network role '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role
+ + ' is not found in VNF network list'
+ `" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <for index='subnet-role-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >
+ <for index='address-family-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.address-family'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='af-count' value='0' />
+ </set>
+ <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <switch test='`$tmp.address-family
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />
+ </set>
+ <set>
+ <parameter name='af-count' value='`$af-count + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$af-count`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id'
+ value='`$subnet-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='-1' />
+ </set>
+ <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <switch test='`$tmp.address-family
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>
+ <outcome value='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'SDNC subnet id '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id
+ + ' does not have network-start-address populated'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'SDNC subnet id '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id
+ + ' does not have cidr-mask populated'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test='`$tmp.address-family`'>
+ <outcome value='ipv4'>
+ <set>
+ <parameter name='ip-type' value='IPv4' />
+ </set>
+ </outcome>
+ <outcome value='ipv6'>
+ <set>
+ <parameter name='ip-type' value='IPv6' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="isInSameSubnet">
+ <parameter name="firstIPAddr" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`" />
+ <parameter name="secondIPAddr" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address`" />
+ <parameter name="subnet" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`" />
+ <parameter name="ipType" value="`$ip-type`" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$subnet-id`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Not able to find VNF network subnet that contains address '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address
+ `" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id' value='`$subnet-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </for>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmodulec.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_RELATED_NETWORK_ROLE where vfc_customization_uuid = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid
+ and network_role = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'
+ pfx='db.vnf-related-network-role[]'>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-message" value="Error reading VFC_RELATED_NETWORK_ROLE table" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <for index='db-related-network-index' start='0' end='`$db.vnf-related-network-role_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='found-related-network' value='false' />
+ </set>
+ <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='related-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network[$related-network-index].network-role
+ == $db.vnf-related-network-role[$db-related-network-index].related-network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-related-network' value='true' />
+ </set>
+ <set>
+ <parameter name='saved-vnf-network-index' value='`$vnf-network-index`' />
+ <parameter name='saved-related-network-index' value='`$related-network-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-related-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$found-related-network`'>
+ <outcome value='false'>
+ <block atomic='true'>
+ <set>
+ <parameter name="error-message" value="`'Unable to find related network '
+ + $db.vnf-related-network-role[$db-related-network-index].related-network-role + ' in vnf-networks'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].is-trunked'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].is-trunked`' />
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].segmentation-id`' />
+ </set>
+ <set>
+ <parameter name='rn-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' />
+ </set>
+ <switch test='`$rn-index`'>
+ <outcome value=''>
+ <set>
+ <parameter name='rn-index' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-role`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.vlan-interface`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.lower-tag-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.upper-tag-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.is-private'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.is-private`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length'
+ value='`$rn-index + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module"
+ key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id
+ AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="vf-module-name" value="`$tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name`" />
+ <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.onap-model-information.model-invariant-uuid`" />
+ <parameter name="model-version-id" value="`$tmp.vf-module-topology.onap-model-information.model-uuid`" />
+ <parameter name="model-customization-id" value="`$tmp.vf-module-topology.onap-model-information.model-customization-uuid`" />
+ <parameter name="selflink" value="`$vf-module-object-path`" />
+ <parameter name="automated-assignment" value="`$automated-assignment`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vf-module in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />
+ </set>
+ </block>
+ </outcome>
+ </update>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.nfc-naming-code' value='DEFAULT' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.nfc-naming-code' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.nfc-function' value='DEFAULT' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.nfc-function' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >
+ <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />
+ <parameter name="nfc-function" value="`$tmp.nfc-function`" />
+ <parameter name="orchestration-status" value="`PendingCreate`" />
+ <parameter name="in-maint" value="true" />
+ <parameter name="prov-status" value="`PREPROV`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >
+ <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />
+ <parameter name="nfc-function" value="`$tmp.nfc-function`" />
+ <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`" />
+ <parameter name="model-version-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid`" />
+ <parameter name="model-customization-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid`" />
+ <parameter name="orchestration-status" value="`PendingCreate`" />
+ <parameter name="in-maint" value="true" />
+ <parameter name="prov-status" value="`PREPROV`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag' value='true' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +
+ $vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vf-module" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +
+ $vf-module-topology-operation-input.vnf-information.vnf-id +
+ '/vf-modules/vf-module/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vnfc relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating vnfc relationships" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="cp-instance-id" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id" >
+ <parameter name="cp-instance-id" value="`$cp-instance-id`" />
+ <parameter name="port-id" value="0" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving cp object to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving cp object to AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.connection-point-id'
+ value='`$cp-instance-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.port-id'
+ value='0' />
+ </set>
+ <for silentFailure='true' index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >
+ <for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.address-family'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />
+ </set>
+ <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >
+ <switch test='`$tmp.address-family`'>
+ <outcome value='ipv4'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >
+ <parameter name="l3-interface-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />
+ <parameter name="l3-interface-ipv4-prefix-length" value="32" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error creating l3-interface-ipv4-address-list object in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +
+ '/subnets/subnet/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating l3-interface-ipv4-address-list relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating l3-interface-ipv4-address-list relationships" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv6-address-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >
+ <parameter name="l3-interface-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />
+ <parameter name="l3-interface-ipv6-prefix-length" value="128" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error creating l3-interface-ipv6-address-list object in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv6-address-list:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +
+ '/subnets/subnet/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating l3-interface-ipv6-address-list relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating l3-interface-ipv6-address-list relationships" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </for>
+ <for index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating cp relationship to l3-network in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating cp relationship to l3-network" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vlan-tag" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vlan-tags/vlan-tag/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.vlan-interface`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating cp relationship to l3-network and vlan-tag in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating cp relationship to l3-network and vlan-tag" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module:relationship-list"
+ key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id
+ AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vf-module relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No l3-network found in AAI for network ID '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" >
+ <parameter name="vip-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]`" />
+ <parameter name="vip-ipv4-prefix-length" value="32" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vip-ipv4-address-list in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error saving vip-ipv4-address-list" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id
+ + '/subnets/subnet/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv4-subnet-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationships" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="cp" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ + '/cps/cp/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" >
+ <parameter name="vip-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]`" />
+ <parameter name="vip-ipv6-prefix-length" value="128" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error saving vip-ipv6-address-list in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error saving vip-ipv6-address-list" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id
+ + '/subnets/subnet/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv6-subnet-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vip-ipv6-address-list relationships in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating vip-ipv6-address-list relationships" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="cp" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ + '/cps/cp/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-assign' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vlantaggingfailure.log' />
+ </execute>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-generate-heat-parameters' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmoduleheat.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >
+ <block atomic="true">
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id
+ AND ecomp_service_instance_id = $service-data.service-information.service-instance-id
+ AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>
+ <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>
+ </record>
+ </outcome>
+ </delete>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="INSERT INTO VIPR_CONFIGURATION (vnf_id, vnf_name, ecomp_service_instance_id, vm_name, cloud_region_id, cloud_owner) VALUES ( $service-data.vnfs.vnf[$vnf-index].vnf-id , $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name , $service-data.service-information.service-instance-id , $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index] , $tmp.vf-module-topology.aic-cloud-region , $prop.cloud-region.cloud-owner )" >
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>
+ <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>
+ </record>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.' value='tmp.vf-module-topology.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'
+ value='$vf-module-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'
+ value='$vf-module-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'
+ value='$vf-module-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'
+ value='$vf-module-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'
+ value='$vf-module-topology-operation-input.vf-module-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <set>
+ <parameter name='vf-module-data.'
+ value='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vf-module`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.service-topology.service-topology-identifier.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.vf-module.url"/>
+ <parameter name="target" value="{vf-module-id}"/>
+ <parameter name="replacement" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'vf-module-assign.json'`" />
+ <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.vf-module.url`" />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="vf-module-assign" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error doing PUT of vf-module" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error doing PUT of vf-module" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmodule.log' />
+ </execute>
+ <set>
+ <parameter name="so.response-code" value="200" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml
new file mode 100644
index 0000000..fd1ca63
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml
@@ -0,0 +1,1302 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-assign-no-preload' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='false' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-module-to-vfc-mapping[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.vf-module-to-vfc-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm_length'
+ value='`$db.vf-module-to-vfc-mapping_length`' />
+ </set>
+ <for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'
+ pfx='db.vfc-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test="$db.vfc-model.ecomp-generated-naming == 'Y'">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="$db.vfc-model.naming-policy">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'naming_policy is null for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type'
+ value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'
+ value='`$db.vfc-model.nfc-naming-code`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type-tag'
+ value='`$db.vfc-model.vm-type-tag`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count'
+ value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />
+ <!-- Context variables used when creating vnfc object in AAI -->
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'
+ value='`$db.vfc-model.invariant-uuid`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'
+ value='`$db.vfc-model.nfc-function`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'
+ value='`$db.vfc-model.uuid`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length'
+ value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'
+ value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />
+ </set>
+ <for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vfc-model.customization-uuid`' />
+ <parameter name='naming-policy-generate-name-input.vnf-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to generate VM name: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]'
+ value='`$naming-policy-generate-name-output.vm-name`' />
+ </set>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to generate VNFC name: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'
+ value='`$naming-policy-generate-name-output.vnfc-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </for>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'
+ pfx='db.vfc-to-network-role-mapping[]'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.vfc-to-network-role-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='network-index' value='-1' />
+ </set>
+ <for silentFailure='true' index='idx' start='0' end='`$service-data.networks.network_length`' >
+ <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`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='network-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$network-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <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`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <!--This isn't a node in MD-SAL, but we need to save this for later when we are doing EIPAM processing-->
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id'
+ value='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />
+ </set>
+ <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='network-information-index' value='-1' />
+ </set>
+ </outcome>
+ <outcome value='4'>
+ <block atomic="true">
+ <set>
+ <parameter name='network-information-index' value='0' />
+ </set>
+ <set>
+ <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'
+ value='ipv4' />
+ <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'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />
+ <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'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='6'>
+ <block atomic="true">
+ <set>
+ <parameter name='network-information-index' value='`$network-information-index + 1`' />
+ </set>
+ <set>
+ <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'
+ value='ipv6' />
+ <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'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />
+ <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'
+ value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='`$db.vfc-to-network-role-mapping_length`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='auto-ip-assignment-input.aic-cloud-region'
+ value='`$tmp.vf-module-topology.aic-cloud-region`' />
+ <parameter name='auto-ip-assignment-input.vf-module.model-customization-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ <parameter name='auto-ip-assignment-input.vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='auto-ip-assignment-input.service-instance-id'
+ value='`$service-data.service-information.service-instance-id`' />
+ <parameter name='auto-ip-assignment-input.service-type'
+ value='`$service-data.service-information.service-type`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' />
+ </set>
+ <for index='vm-type-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`' />
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' />
+ </set>
+ <for index='vm-name-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vm-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`' />
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />
+ </set>
+ <for index='vnfc-name-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <set>
+ <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names[$vnfc-name-index].vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name`' />
+ </set>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='auto-ip-assignment-input.vnf-topology.vnf-assignments.'
+ value='tmp.vnf-topology.vnf-assignments.' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='auto-ip-assignment' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failure in call to auto-ip-assignment: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-no-preload.log' />
+ </execute>
+ <for silentFailure='true' index='plan-index' start='0' end='`$eipam-ip-block.plans_length`' >
+ <for silentFailure='true' index='req-index' start='0' end='`$eipam-ip-block.plans[$plan-index].requests_length`' >
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='ck-split' />
+ <parameter name='original_string' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />
+ <parameter name='regex' value='\|' />
+ </execute>
+ <set>
+ <parameter name='tmp.vm-type' value='`$ck-split[0]`' />
+ <parameter name='tmp.vnfc-name' value='`$ck-split[1]`' />
+ <parameter name='tmp.network-role' value='`$ck-split[2]`' />
+ <parameter name='tmp.subnet-role' value='`$ck-split[3]`' />
+ <parameter name='tmp.address-family' value='`$ck-split[5]`' />
+ <parameter name='tmp.ip-type' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-type`' />
+ <parameter name='tmp.client-key' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />
+ <parameter name='tmp.ip-prefix' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-prefix`' />
+ </set>
+ <switch test='`$tmp.subnet-role`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.subnet-role' value='NONE' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.address-family`'>
+ <outcome value='4'>
+ <set>
+ <parameter name='tmp.address-family' value='ipv4' />
+ </set>
+ </outcome>
+ <outcome value='6'>
+ <set>
+ <parameter name='tmp.address-family' value='ipv6' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='found-vm-type' value='false' />
+ </set>
+ <for index='vm-type-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ == $tmp.vm-type`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-vm-type' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-vm-type`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <block>
+ <block>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" ></update>
+ </block>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'EIPAM returned vm-type ' + $tmp.vm-type + ' but could not find that under vf-module-assignments'`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.ip-type`'>
+ <outcome value='FIXED'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-vnfc-name' value='false' />
+ </set>
+ <for silentFailure='true' index='vnfc-name-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name
+ == $tmp.vnfc-name`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-vnfc-name' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-vnfc-name`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <block>
+ <block>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" ></update>
+ </block>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'EIPAM returned VNFC name ' + $tmp.vnfc-name + ' but could not find that under vf-module-assignments for vm-type ' + $tmp.vm-type`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-subnet-role'
+ value='`$tmp.subnet-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'
+ value='`$tmp.address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'
+ value='FIXED' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-subnet-role'
+ value='`$tmp.subnet-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'
+ value='`$tmp.address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'
+ value='FIXED' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-network-role' value='false' />
+ </set>
+ <for index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role
+ == $tmp.network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-network-role' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-network-role`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='network-role-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length'
+ value='`$network-role-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-subnet-role'
+ value='`$tmp.subnet-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'
+ value='`$tmp.address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'
+ value='FIXED' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-subnet-role' value='false' />
+ </set>
+ <for index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role
+ == $tmp.subnet-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-subnet-role' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-subnet-role`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-role-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role'
+ value='`$tmp.subnet-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length'
+ value='`$subnet-role-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length' value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-address-family'
+ value='`$tmp.address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'
+ value='FIXED' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-address-family' value='false' />
+ </set>
+ <for index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role
+ == $tmp.address-family`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-address-family' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-address-family`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='address-family-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family'
+ value='`$tmp.address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length'
+ value='`$address-family-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length' value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].ip-type'
+ value='FIXED' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='ip-address-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-ip-address'
+ value='`$tmp.ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-client-key'
+ value='`$tmp.client-key`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].ip-type'
+ value='FIXED' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length'
+ value='`$ip-address-length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='VIP'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.network-role' value='`$ck-split[1]`' />
+ <parameter name='tmp.subnet-role' value='`$ck-split[2]`' />
+ <parameter name='tmp.address-family' value='`$ck-split[4]`' />
+ </set>
+ <set>
+ <parameter name='tmp.vm-network-index' value='-1' />
+ </set>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='tmp.vm-network-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='tmp.vm-network-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for silentFailure='true' index='vm-network-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role
+ == $tmp.network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vm-network-index' value='`$vm-network-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.vm-network-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vm-network-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='`$tmp.vm-network-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.address-family`'>
+ <outcome value='4'>
+ <block>
+ <set>
+ <parameter name='tmp.length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length`' />
+ </set>
+ <switch test='`$tmp.length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4[0]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4[0]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$tmp.length]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'
+ value='`$tmp.length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='6'>
+ <block>
+ <set>
+ <parameter name='tmp.length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length`' />
+ </set>
+ <switch test='`$tmp.length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[0]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[0]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[$tmp.length]'
+ value='`$tmp.ip-prefix`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'
+ value='`$tmp.length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-no-preload2.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <for silentFailure='true' index='vnfc-network-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.network-role'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vm-network-index' value='-1' />
+ </set>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='tmp.vm-network-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='tmp.vm-network-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for silentFailure='true' index='vm-network-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role
+ == $tmp.network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vm-network-index' value='`$vm-network-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.vm-network-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vm-network-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'
+ value='`$tmp.network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'
+ value='`$tmp.vm-network-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <for index='vnfc-subnet-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >
+ <for index='address-family-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.ip-version'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />
+ </set>
+ <set>
+ <parameter name='tmp.nii-index' value='-1' />
+ </set>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`'>
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='tmp.nii-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[0].ip-version'
+ value='`$tmp.ip-version`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='0'>
+ <block>
+ <set>
+ <parameter name='tmp.nii-index' value='0' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[0].ip-version'
+ value='`$tmp.ip-version`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for silentFailure='true' index='nii-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$nii-index].ip-version
+ == $tmp.ip-version`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nii-index' value='`$nii-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.nii-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nii-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-version'
+ value='`$tmp.ip-version`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'
+ value='`$tmp.nii-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.ip-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.ip-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.ip-index'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='ip-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >
+ <block>
+ <set>
+ <parameter name='target-index' value='`$ip-index + $tmp.ip-index`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip[$target-index]'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-index].vnfc-ip-address`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length'
+ value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-count'
+ value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ </block>
+ </for>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-no-preload3.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml
new file mode 100644
index 0000000..879f000
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml
@@ -0,0 +1,559 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-assign-preload' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vf-module-topology.`' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-module-to-vfc-mapping[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.vf-module-to-vfc-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='db-vm-type-index' value='-1' />
+ </set>
+ <for index='tmp-idx' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >
+ <switch test='`$db.vf-module-to-vfc-mapping[$tmp-idx].vm-type
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='db-vm-type-index' value='`$tmp-idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$db-vm-type-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Preload data contains vm-type ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type + ' but VF_MODULE_TO_VFC_MAPPING table does not have this vm-type'`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'
+ pfx='db.vfc-model'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_MODEL table" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'
+ value='`$db.vfc-model.nfc-naming-code`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'
+ value='`$db.vfc-model.nfc-function`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'
+ value='`$db.vfc-model.invariant-uuid`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'
+ value='`$db.vfc-model.uuid`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' />
+ </set>
+ <switch test='`$db.vfc-model.naming-policy`'>
+ <outcome value=''>
+ <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-type-index]`' />
+ </set>
+ </for>
+ </outcome>
+ <outcome value='Other'>
+ <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to generate VNFC name: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'
+ value='`$naming-policy-generate-name-output.vnfc-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />
+ </set>
+ <for silentFailure='true' index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-network-role'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-subnet-role'
+ value='NA' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet_length'
+ value='1' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' />
+ </set>
+ <for silentFailure='true' index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-address-family'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-version`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-dhcp'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ip-count'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-count`' />
+ </set>
+ <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip_length`' >
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].vnfc-ip-address'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip[$ip-index]`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].ip-type'
+ value='FIXED' />
+ </set>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-preload-x.log' />
+ </execute>
+ <for silentFailure='true' index='vnf-network-index' start='0'
+ end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='found-network-name' value='false' />
+ </set>
+ <for silentFailure='true' index='ex-vnf-network-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-network-name' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-network-name`'>
+ <outcome value='true'>
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-role`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='cur-vnf-network-index'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].neutron-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'
+ value='`$cur-vnf-network-index + 1`' />
+ </set>
+ <set>
+ <parameter name='cur-subnet-index' value='0' />
+ </set>
+ <switch test="`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[0].sdnc-subnet-id`">
+ <outcome value=''>
+ <block atomic="true">
+ <for index='ex-subnet-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='subnet-index' start='0'
+ end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-match' value='false' />
+ </set>
+ <for index='ex-subnet-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='match' value='true' />
+ </set>
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='match' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='match' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <switch test='`$match`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.found-match' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$tmp.found-match`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-preloadxxx.log' />
+ </execute>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Could not find subnet match for network-name '
+ + $mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].sdnc-subnet-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].ip-version'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-name'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />
+ </set>
+ <set>
+ <parameter name='cur-subnet-index' value='`$cur-subnet-index + 1`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'
+ value='`$cur-subnet-index`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='cur-vnf-network-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='cur-vnf-network-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='cur-vnf-network-index'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'
+ value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'
+ value='`$cur-vnf-network-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-preload.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='found-network' value='false' />
+ </set>
+ <set>
+ <parameter name='tmp.network-role'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />
+ </set>
+ <for index='vnf-network-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role
+ == $tmp.network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />
+ </set>
+ <set>
+ <parameter name='found-network' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-network`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Unable to find network-id for network with network-role ' + $tmp.network-role`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-sync.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-sync.xml
new file mode 100644
index 0000000..19ee62a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-sync.xml
@@ -0,0 +1,1353 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='vf-module-topology-operation-assign-sync' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-module-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-assign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create self-serve assignment for vf-module with vf-module-id=' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' with error: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnfend.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-module-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id
+ + ' already exists, and status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />
+ <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-type' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />
+ <parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />
+ <parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-module-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'
+ value='`$db.vf-module-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-version'
+ value='`$db.vf-module-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-version'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-name'
+ value='`$db.vf-module-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-name'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'
+ value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`'>
+ <outcome value=''>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value="`$prop.controller.url + $prop.restapi.preloadinformation + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name + '/vf-module/'`" />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-preload" />
+ <outcome value='failure'>
+ <block>
+ <switch test='`$mdsal-preload.response-code`'>
+ <outcome value='404'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving preload-information" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-preload' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmoduleb.log' />
+ </execute>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>
+ <outcome value='false'>
+ <set>
+ <parameter name='automated-assignment' value='true' />
+ </set>
+ </outcome>
+ <outcome value='true'>
+ <set>
+ <parameter name='automated-assignment' value='false' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='vnf-network-index' value='-1' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='vnf-network-index' value='`$idx`' />
+ </set>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-network-index`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNFC network role '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role
+ + ' is not found in VNF network list'
+ `" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <for index='subnet-role-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >
+ <for index='address-family-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.address-family'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='af-count' value='0' />
+ </set>
+ <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <switch test='`$tmp.address-family
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />
+ </set>
+ <set>
+ <parameter name='af-count' value='`$af-count + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$af-count`'>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id'
+ value='`$subnet-id`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='-1' />
+ </set>
+ <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >
+ <switch test='`$tmp.address-family
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>
+ <outcome value='true'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`'>
+ <outcome value=''>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'SDNC subnet id '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id
+ + ' does not have network-start-address populated'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`'>
+ <outcome value=''>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'SDNC subnet id '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id
+ + ' does not have cidr-mask populated'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test='`$tmp.address-family`'>
+ <outcome value='ipv4'>
+ <set>
+ <parameter name='ip-type' value='IPv4' />
+ </set>
+ </outcome>
+ <outcome value='ipv6'>
+ <set>
+ <parameter name='ip-type' value='IPv6' />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="isInSameSubnet">
+ <parameter name="firstIPAddr" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`" />
+ <parameter name="secondIPAddr" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address`" />
+ <parameter name="subnet" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`" />
+ <parameter name="ipType" value="`$ip-type`" />
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$subnet-id`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Not able to find VNF network subnet that contains address '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address
+ `" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id' value='`$subnet-id`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </for>
+ </for>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmodulec.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VFC_RELATED_NETWORK_ROLE where vfc_customization_uuid = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid
+ and network_role = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'
+ pfx='db.vnf-related-network-role[]'>
+ <outcome value='failure'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VFC_RELATED_NETWORK_ROLE table" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <for index='db-related-network-index' start='0' end='`$db.vnf-related-network-role_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='found-related-network' value='false' />
+ </set>
+ <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='related-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network[$related-network-index].network-role
+ == $db.vnf-related-network-role[$db-related-network-index].related-network-role`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-related-network' value='true' />
+ </set>
+ <set>
+ <parameter name='saved-vnf-network-index' value='`$vnf-network-index`' />
+ <parameter name='saved-related-network-index' value='`$related-network-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-related-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test='`$found-related-network`'>
+ <outcome value='false'>
+ <block>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find related network '
+ + $db.vnf-related-network-role[$db-related-network-index].related-network-role + ' in vnf-networks'`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].is-trunked'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].is-trunked`' />
+ <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].segmentation-id`' />
+ </set>
+ <set>
+ <parameter name='rn-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' />
+ </set>
+ <switch test='`$rn-index`'>
+ <outcome value=''>
+ <set>
+ <parameter name='rn-index' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-role`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.vlan-interface`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.lower-tag-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.upper-tag-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.is-private'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.is-private`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length'
+ value='`$rn-index + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block atomic="true">
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.nfc-naming-code' value='DEFAULT' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.nfc-naming-code' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.nfc-function' value='DEFAULT' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.nfc-function' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`'>
+ <outcome value=''>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >
+ <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />
+ <parameter name="nfc-function" value="`$tmp.nfc-function`" />
+ <parameter name="orchestration-status" value="`PendingCreate`" />
+ <parameter name="in-maint" value="true" />
+ <parameter name="prov-status" value="`PREPROV`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ <outcome value='Other'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >
+ <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />
+ <parameter name="nfc-function" value="`$tmp.nfc-function`" />
+ <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`" />
+ <parameter name="model-version-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid`" />
+ <parameter name="model-customization-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid`" />
+ <parameter name="orchestration-status" value="`PendingCreate`" />
+ <parameter name="in-maint" value="true" />
+ <parameter name="prov-status" value="`PREPROV`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vnfc to AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag' value='true' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +
+ $vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vf-module" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +
+ $vf-module-topology-operation-input.vnf-information.vnf-id +
+ '/vf-modules/vf-module/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vnfc relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating vnfc relationships" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+ <parameter name="ctx-destination" value="cp-instance-id" />
+ </execute>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id" >
+ <parameter name="cp-instance-id" value="`$cp-instance-id`" />
+ <parameter name="port-id" value="0" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating cp object in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating cp object in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.connection-point-id'
+ value='`$cp-instance-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.port-id'
+ value='0' />
+ </set>
+ <for silentFailure='true' index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >
+ <for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.address-family'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />
+ </set>
+ <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >
+ <switch test='`$tmp.address-family`'>
+ <outcome value='ipv4'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >
+ <parameter name="l3-interface-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />
+ <parameter name="l3-interface-ipv4-prefix-length" value="32" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating l3-interface-ipv4-address-list object in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv4-address-list:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +
+ '/subnets/subnet/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating l3-interface-ipv4-address-list relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating l3-interface-ipv4-address-list relationships" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ <outcome value='ipv6'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv6-address-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >
+ <parameter name="l3-interface-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />
+ <parameter name="l3-interface-ipv6-prefix-length" value="128" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error creating l3-interface-ipv6-address-list object in AAI" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-interface-ipv6-address-list:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id
+ AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +
+ '/subnets/subnet/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating l3-interface-ipv6-address-list relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating l3-interface-ipv6-address-list relationships" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </for>
+ <for index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating cp relationship to l3-network in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating cp relationship to l3-network" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>
+ <outcome value='true'>
+ <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cp:relationship-list"
+ key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ AND cp.cp-instance-id = $cp-instance-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].network-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vlan-tag" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vlan-tags/vlan-tag/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.vlan-interface`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating cp relationship to l3-network and vlan-tag in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating cp relationship to l3-network and vlan-tag" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vf-module:relationship-list"
+ key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id
+ AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/' +
+ $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vf-module relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No l3-network found in AAI for network ID '
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" >
+ <parameter name="vip-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]`" />
+ <parameter name="vip-ipv4-prefix-length" value="32" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vip-ipv4-address-list in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error saving vip-ipv4-address-list" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id
+ + '/subnets/subnet/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv4-subnet-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationships" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="cp" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ + '/cps/cp/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" >
+ <parameter name="vip-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]`" />
+ <parameter name="vip-ipv6-prefix-length" value="128" />
+ <parameter name="is-floating" value="false" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error saving vip-ipv6-address-list in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error saving vip-ipv6-address-list" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag' value='true' />
+ </set>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="subnet" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/l3-networks/l3-network/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id
+ + '/subnets/subnet/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv6-subnet-id`" />
+ <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />
+ <parameter name="relationship-list.relationship[1].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vip-ipv6-address-list relationships in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating vip-ipv6-address-list relationships" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>
+ <outcome value='true'>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list:relationship-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="cp" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name
+ + '/cps/cp/'
+ + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-assign' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vlantaggingfailure.log' />
+ </execute>
+ <return status='failure'></return>
+ </block>
+ </outcome>
+ </call>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-generate-heat-parameters' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmoduleheat.log' />
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >
+ <block atomic="true">
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id
+ AND ecomp_service_instance_id = $service-data.service-information.service-instance-id
+ AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>
+ <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>
+ </record>
+ </outcome>
+ </delete>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="INSERT INTO VIPR_CONFIGURATION (vnf_id, vnf_name, ecomp_service_instance_id, vm_name, cloud_region_id, cloud_owner) VALUES ( $service-data.vnfs.vnf[$vnf-index].vnf-id , $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name , $service-data.service-information.service-instance-id , $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index] , $tmp.vf-module-topology.aic-cloud-region , $prop.cloud-region.cloud-owner )" >
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>
+ <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>
+ </record>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.' value='tmp.vf-module-topology.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'
+ value='$vf-module-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'
+ value='$vf-module-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'
+ value='$vf-module-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'
+ value='$vf-module-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'
+ value='$vf-module-topology-operation-input.vf-module-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vfmodule.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml
new file mode 100644
index 0000000..f1f9ca1
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml
@@ -0,0 +1,27 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-assign' mode='sync'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`length($vf-module-topology-operation-input.sdnc-request-header.svc-notification-url) == 0`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <switch test='$vf-module-topology-operation-input.sdnc-request-header.svc-notification-url) == $prop.so.ignore-url'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-async' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml
new file mode 100644
index 0000000..e0527fb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml
@@ -0,0 +1,28 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-async' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='skip-mdsal-update' value='Y' />
+ </set>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-async' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml
new file mode 100644
index 0000000..93eaf71
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml
@@ -0,0 +1,158 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'changeassign' then request-action must be 'CreateVfModuleInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vf-module-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-changeassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error performing changeassign for self-serve vf-module resources with error: '+ $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-module-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.onap-model-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.onap-model-information.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'
+ value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'
+ value='`$vf-module-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml
new file mode 100644
index 0000000..4f31a9f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml
@@ -0,0 +1,156 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='vf-module-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vf-module-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$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.vlan-vnfc-instance-group_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-deactivate' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating vnfc in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />
+ </return>
+ </outcome>
+ </update>
+ </for>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-topology.vf-module-assignments.vf-module-status' value='PendingDelete' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'
+ value='$vf-module-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'
+ value='$vf-module-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'
+ value='$vf-module-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'
+ value='$vf-module-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'
+ value='$vf-module-topology-operation-input.vf-module-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'
+ value='$vf-module-topology-operation-input.vf-module-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'
+ value='PendingDelete' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml
new file mode 100644
index 0000000..4586dad
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml
@@ -0,0 +1,386 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteVfModuleInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vnf-index' value='-1' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-index`'>
+ <outcome value='-1'>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vf-module-index' value='-1' />
+ </set>
+ <for silentFailure='true' index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vf-module-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vf-module-index`'>
+ <outcome value='-1'>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-unassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error while unassigning self-serve vf-moldule esources with error: '+ $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules." value=""/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block>
+ <set>
+ <parameter name="tmpidx" value="`$idx - 1`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].' value='' />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx]." value="$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx]." />
+ </set>
+ </block>
+ </for>
+ <!--EIPAM plug-in needs this attribute set with this name-->
+ <set>
+ <parameter name='lastidx' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`' />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lastidx]." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$lastidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table" />
+ </return>
+ </outcome>
+ </update>
+ <!--EIPAM plug-in needs this attribute set with this name-->
+ <set>
+ <parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />
+ </set>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error in EIPAM unassign IP address" />
+ </return>
+ </outcome>
+ </execute>
+ <for silentFailure='true' index='vm-type-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <for silentFailure='true' index='vm-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >
+ <block atomic="true">
+ <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id
+ AND ecomp_service_instance_id = $service-data.service-information.service-instance-id
+ AND vm_name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>
+ <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>
+ <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>
+ </record>
+ </outcome>
+ </delete>
+ </block>
+ </for>
+ </for>
+ <switch test='`$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.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-groups"
+ key="instance-group.instance-group-function = $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.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function
+ AND instance-group.instance-group-type = 'L3-NETWORK'"
+ pfx='aai.instance-group' local-only='false' >
+ <outcome value='success'>
+ <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >
+ <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >
+ <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >
+ <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key
+ == 'service-instance.service-instance-id'`">
+ <outcome value='true'>
+ <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value
+ == $service-data.service-information.service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='1'>
+ <block>
+ <set>
+ <parameter name='tmp.status' value="`'PENDING_DELETE_' + $aai.instance-group.instance-group[$ig-index].id`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $aai.instance-group.instance-group[$ig-index].id" ></update>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">
+ <parameter name="deleteEIPAM_status" value="`$tmp.status`" />
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$aai.instance-group.instance-group[$ig-index].id
+ == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>
+ <outcome value='true'>
+ <for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >
+ <set>
+ <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'
+ value='' />
+ <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'
+ value='unassigned' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-input.name-table-type' value='VF_MODULE_INSTANCE' />
+ <parameter name='generate-unique-name-input.context-id' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='generate-unique-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='vm-type-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <block>
+ <for silentFailure='true' index='vm-name-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />
+ <parameter name='naming-policy-generate-name-input.vm-name' 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.vms.vm[$vm-type-index].vm-names.vm-name[$vnfc-index]`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vnfc"
+ key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"></delete>
+ </block>
+ </for>
+ <for silentFailure='true' index='network-role-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >
+ <block>
+ <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block>
+ <for silentFailure='true' index='ipv4-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv4-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv4-address-list.vip-ipv4-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" ></delete>
+ </for>
+ <for silentFailure='true' index='ipv6-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vip-ipv6-address-list"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner
+ AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region
+ AND vip-ipv6-address-list.vip-ipv6-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" ></delete>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ </block>
+ </for>
+ <block>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules." value=""/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block>
+ <set>
+ <parameter name="tmpidx" value="`$idx - 1`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].' value='' />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx]." value="$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx]." />
+ </set>
+ </block>
+ </for>
+ <!--EIPAM plug-in needs this attribute set with this name-->
+ <set>
+ <parameter name='lastidx' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`' />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lastidx]." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$lastidx`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
new file mode 100644
index 0000000..fa9cbd9
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
@@ -0,0 +1,197 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' ></call>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`length($vf-module-topology-operation-input.sdnc-request-header.svc-notification-url) == 0`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-notification-url == $prop.so.ignore-url`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='skip-mdsal-update' value='Y' />
+ </set>
+ <set>
+ <parameter name='ack-final' value='N' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='changeassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="request-action"/>
+ <parameter name="field3" value='`$vf-module-topology-operation-input.request-information.request-action`'/>
+ </record>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSOTNUniInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-uni-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSOTNL2VpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-l2vpn-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSOTNUniInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-uni-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSOTNL2VpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-l2vpn-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSOTNUniInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-uni-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSOTNL2VpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-l2vpn-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSOTNUniInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-uni-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSOTNL2VpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vf-operation-l2vpn-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='SdwanBandwidthChange'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-bandwidth-policy-change' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml
new file mode 100644
index 0000000..42c29a7
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml
@@ -0,0 +1,313 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-vlan-tagging-activate' mode='sync'>
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource&amp;nodesOnly=true'"
+ force="true"
+ local-only="false"
+ pfx="tmp.aai.vnf">
+ <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $vf-module-topology-operation-input.vnf-information.vnf-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="query/cloud-region-fromVnf" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf" />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ <for index='result-idx' start='0' end='`$tmp.aai.vnf.results_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.cloud-region-id' value='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vlan-vnfc-instance-groups.'
+ 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.`' />
+ </set>
+ <for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >
+ <switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'
+ value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='parent-port-role'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role`' />
+ <parameter name='vnfc-instance-group-function'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />
+ <parameter name='network-instance-group-function'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`' />
+ </set>
+ <set>
+ <parameter name='vsig-index' value='-1' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >
+ <switch test='`
+ $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].parent-port-role
+ 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
+ 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
+`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vsig-index' value='`$idx`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vsig-index`'>
+ <outcome value='-1'>
+ <block>
+ <set>
+ <parameter name='vsig-index'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role'
+ value='`$parent-port-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function'
+ value='`$vnfc-instance-group-function`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function'
+ value='`$network-instance-group-function`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'
+ value='`$vsig-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.aai.network">
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $prop.cloud-region.cloud-owner + '/' + $tmp.cloud-region-id`" />
+ <parameter name="start_length" value="1" />
+ <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`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get network data for network role '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get network data for network role '
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />
+ </return>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='network-name' value='`$tmp.aai.network.results[0].l3-network.network-name`' />
+ </set>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'
+ value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='dest-vnfc-index'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' />
+ </set>
+ <for index='src-vnfc-index' start='0'
+ end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >
+ <block atomic="true">
+ <set>
+ <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'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.aai.interfaces">
+ <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`" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/vserver-l-interfaces-fromVnfc?networkName=' + $network-name`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to get interface data for network name '
+ + $network-name
+ + ' and vnfc '
+ + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <block></block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <for silentFailure='true' index='idx1' start='0' end='`$tmp.aai.interfaces.results_length`' >
+ <switch test='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`' />
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-name`' />
+ </set>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' />
+ </set>
+ <for silentFailure='true' index='int-index' start='0'
+ end='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' >
+ <block>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`' />
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-name`' />
+ </set>
+ <for silentFailure='true' index='idx2' start='0' end='`$tmp.aai.interfaces.results_length`' >
+ <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.interface-id
+ == $tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <for silentFailure='true' index='sub-int-index' start='0'
+ end='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' >
+ <block>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`' />
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-name`' />
+ </set>
+ <for silentFailure='true' index='idx3' start='0' end='`$tmp.aai.interfaces.results_length`' >
+ <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.interface-id
+ == $tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`'>
+ <outcome value='true'>
+ <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for silentFailure='true' index='idx4' start='0' end='`$tmp.aai.interfaces.results_length`' >
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-interface
+ == $tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>
+ <outcome value='true'>
+ <block>
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <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'
+ value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='dest-vnfc-index' value='`$dest-vnfc-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'
+ value='`$dest-vnfc-index`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml
new file mode 100644
index 0000000..f451812
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml
@@ -0,0 +1,791 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-vlan-tagging-assign' mode='sync'>
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select distinct vmvm.vm_type, rg.group_uuid from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_MODEL vm,
+ RESOURCE_GROUP_TO_TARGET_NODE_MAPPING rgm, RESOURCE_GROUP rg
+ where vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ and vmvm.vfc_customization_uuid = vm.customization_uuid
+ and vmvm.vm_type = vm.vm_type
+ and vm.uuid = rgm.target_node_uuid
+ and rgm.target_type = 'CVFC'
+ and rgm.group_uuid = rg.group_uuid"
+ pfx='db.group-uuids[]'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error getting group uuids from DB" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <for index='group-index' start='0' end='`$db.group-uuids_length`' >
+ <block atomic="true">
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select attribute_name, attribute_value from ATTRIBUTE_VALUE_PAIR
+ where resource_uuid = $db.group-uuids[$group-index].group-uuid
+ and attribute_name in ('vfc_instance_group_function','vfc_parent_port_role','network_collection_function')"
+ pfx='db.parameters[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error getting parameters from ATTRIBUTE_VALUE_PAIR table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find parameters ATTRIBUTE_VALUE_PAIR table for group ' + $db.group-uuids[$group-index].group-uuid`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <for index='parameter-index' start='0' end='`$db.parameters_length`' >
+ <switch test='`$db.parameters[$parameter-index].attribute-name`'>
+ <outcome value='vfc_parent_port_role'>
+ <set>
+ <parameter name='db.group-uuids[$group-index].vfc_parent_port_role' value='`$db.parameters[$parameter-index].attribute-value`' />
+ </set>
+ </outcome>
+ <outcome value='vfc_instance_group_function'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >
+ <parameter name="source" value="`$db.parameters[$parameter-index].attribute-value`" />
+ <parameter name="target" value="get_input=" />
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Parameter value for '
+ + $db.parameters[$parameter-index].attribute-name
+ + ' is '
+ + $db.parameters[$parameter-index].attribute-value
+ + ' but was expected to start with get_input='`" />
+ </return>
+ </outcome>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated-value' />
+ <parameter name='string' value='`$db.parameters[$parameter-index].attribute-value`' />
+ <parameter name='begin-index' value='10' />
+ </execute>
+ </outcome>
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp
+ where vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ and vmm.vf_customization_uuid = vf.customization_uuid
+ and vf.uuid = avp.resource_uuid
+ and vmm.vf_customization_uuid = avp.resource_customization_uuid
+ and avp.attribute_name = $tmp.truncated-value"
+ pfx='db.mapped-value'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'System error retrieving mapped parameter value for '
+ + $db.parameters[$parameter-index].attribute-name`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find mapped parameter value for '
+ + $db.parameters[$parameter-index].attribute-name
+ + ' value '
+ + $tmp.truncated-value`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='db.group-uuids[$group-index].vfc-instance-group-function' value='`$db.mapped-value.attribute-value`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='network_collection_function'>
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >
+ <parameter name="source" value="`$db.parameters[$parameter-index].attribute-value`" />
+ <parameter name="target" value="get_input=" />
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Parameter value for '
+ + $db.parameters[$parameter-index].attribute-name
+ + ' is '
+ + $db.parameters[$parameter-index].attribute-value
+ + ' but was expected to start with get_input='`" />
+ </return>
+ </outcome>
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>
+ <parameter name='result' value='tmp.truncated-value' />
+ <parameter name='string' value='`$db.parameters[$parameter-index].attribute-value`' />
+ <parameter name='begin-index' value='10' />
+ </execute>
+ </outcome>
+ </execute>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp
+ where vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ and vmm.vf_customization_uuid = vf.customization_uuid
+ and vf.uuid = avp.resource_uuid
+ and vmm.vf_customization_uuid = avp.resource_customization_uuid
+ and avp.attribute_name = $tmp.truncated-value"
+ pfx='db.mapped-value'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'System error retrieving mapped parameter value for '
+ + $db.parameters[$parameter-index].attribute-name`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find mapped parameter value for '
+ + $db.parameters[$parameter-index].attribute-name
+ + ' value '
+ + $tmp.truncated-value`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='db.group-uuids[$group-index].network-collection-function' value='`$db.mapped-value.attribute-value`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-groups"
+ key="instance-group.instance-group-function = $db.group-uuids[$group-index].vfc-instance-group-function
+ AND instance-group.instance-group-type = 'VNFC'"
+ pfx='aai.instance-group' local-only='false' >
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].vfc-instance-group-function
+ + ' and instance-group-type VNFC'`" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'System error getting AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].vfc-instance-group-function
+ + ' and instance-group-type VNFC'`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='found-instance-group' value='false' />
+ </set>
+ <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >
+ <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >
+ <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >
+ <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key
+ == 'service-instance.service-instance-id'`">
+ <outcome value='true'>
+ <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value
+ == $service-data.service-information.service-instance-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-instance-group' value='true' />
+ </set>
+ <set>
+ <parameter name='aai-ig-index' value='`$ig-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <switch test='`$found-instance-group`'>
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Unable to find AAI instance-group for instance-group-function '
+ + $db.group-uuids[$group-index].vfc-instance-group-function
+ + ' and instance-group-type VNFC'`" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vvig-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <break/>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='vvig-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id
+ == $aai.instance-group.instance-group[$aai-ig-index].id`'>
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message"
+ value="`'Instance group id '
+ + $aai.instance-group.instance-group[$aai-ig-index].id
+ + ' already exists in MD-SAL under vlan-vnfc-instance-groups'`" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ <set>
+ <parameter name='vvig-index' value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id'
+ value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function'
+ value='`$db.group-uuids[$group-index].vfc-instance-group-function`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnf-id'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length'
+ value='`$vvig-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vm-type'
+ value='`$db.group-uuids[$group-index].vm-type`' />
+ </set>
+ <set>
+ <parameter name='found-vm-type' value='false' />
+ </set>
+ <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type
+ == $db.group-uuids[$group-index].vm-type`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-vm-type' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-vm-type`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'TOSCA provided vm-type ' +
+ $db.group-uuids[$group-index].vm-type + ' but that was not found in vf-module-assignments.vms'`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />
+ </set>
+ <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-group:relationship-list"
+ key="instance-group.id = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="vnfc" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/vnfcs/vnfc/' +
+ $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="System error creating instance-group relationship to vnfc" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Not-found error relating instance group '
+ + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id
+ + ' to vnfc '
+ + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].data-created' value='true' />
+ </set>
+ </block>
+ </for>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select property_name from VF_MODULE_TO_VFC_MAPPING vmvm,
+ RESOURCE_POLICY_TO_TARGET_NODE_MAPPING rptnm, RESOURCE_POLICY rp
+ where vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ AND vmvm.vm_type = $db.group-uuids[$group-index].vm-type
+ AND vmvm.vfc_customization_uuid = rptnm.target_node_uuid
+ AND rptnm.policy_uuid = rp.policy_uuid
+ AND rp.property_type = 'vlan_tag_policy'
+ AND rp.policy_type = 'ecomp.policies.External'
+ AND rp.property_source = 'Policy Manager'"
+ pfx='db.policy[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failure retrieving policy for vm-type ' + $db.group-uuids[$group-index].vm-type`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find policy for vm-type ' + $db.group-uuids[$group-index].vm-type`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role'
+ value='`$db.group-uuids[$group-index].vfc_parent_port_role`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-assignment-policy-name'
+ value='`$db.policy[0].property-name`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function'
+ value='`$db.group-uuids[$group-index].network-collection-function`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group_length'
+ value='1' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key="select vnrm.* from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_TO_NETWORK_ROLE_MAPPING vnrm
+ where vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid
+ AND vmvm.vm_type = $db.group-uuids[$group-index].vm-type
+ AND vmvm.vfc_customization_uuid = vnrm.vfc_customization_uuid
+ AND vnrm.network_role_tag = $db.group-uuids[$group-index].vfc_parent_port_role"
+ pfx='db.vfc-to-network-role[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failure reading VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find rows in VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <for index='vnic-index' start='0' end='`$db.vfc-to-network-role_length`' >
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id'
+ value='`$vnic-index`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic_length'
+ value='`$db.vfc-to-network-role_length`' />
+ </set>
+ <set>
+ <parameter name='get-data-from-policy-input.policy-instance-name' value='`$db.policy[0].property-name`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <switch test='`$get-data-from-policy-output.precreate-sub-intf-num &gt; 0`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='assign-vlan-tags' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ <for index='vnfc-index' start='1' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnics-groups.'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnics-groups.`' />
+ </set>
+ </for>
+ <set>
+ <parameter name='counter' value='0' />
+ </set>
+ <set>
+ <parameter name='seq-no' value='1' />
+ </set>
+ <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >
+ <for index='vnic-group-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vt-ip.' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.vt-ip.network-instance-group-function'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />
+ <parameter name='tmp.vt-ip.nf-role'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />
+ <parameter name='tmp.vt-ip.vm-type'
+ value='`$db.group-uuids[$group-index].vm-type`' />
+ <parameter name='tmp.vt-ip.vnfc-name'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />
+ <parameter name='tmp.vt-ip.type'
+ value='FIXED' />
+ <parameter name='tmp.vt-ip.vf-module-id'
+ value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ </set>
+ <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$tmp.vt-ip.network-instance-group-id
+ == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>
+ <outcome value='true'>
+ <switch test='`$get-data-from-policy-output.ip-assignment`'>
+ <outcome value='shared'>
+ <for silentFailure='true' index='subnet-index' start='0'
+ end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vt-ip.ip-version'
+ value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />
+ <parameter name='tmp.vt-ip.network-instance-group-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />
+ <parameter name='tmp.vt-ip.sequence-number'
+ value='`$seq-no`' />
+ </set>
+ <set>
+ <parameter name='counter' value='`$counter + 1`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <switch test='`$eipam-ip-block.plans_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >
+ <for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='1' />
+ <parameter name='tmp.index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='1' />
+ <parameter name='tmp.index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='2' />
+ <parameter name='tmp.index' value='1' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'
+ value='`$tmp.vt-ip.ip-version`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'
+ value='N' />
+ </set>
+ <switch test='`$tmp.vt-ip.ip-version`'>
+ <outcome value='ipv4'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv4-address'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </outcome>
+ <outcome value='ipv6'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv6-address'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='seq-no' value='`$seq-no + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value="`'/var/tmp/bgb-eipam.log' + $counter`" />
+ </execute>
+ </block>
+ </for>
+ </outcome>
+ <outcome value='unique'>
+ <for silentFailure='true' index='subnet-index' start='0'
+ end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >
+ <for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >
+ <set>
+ <parameter name='tmp.vt-ip.ip-version'
+ value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />
+ </set>
+ <for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vt-ip.network-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id`' />
+ <parameter name='tmp.vt-ip.sequence-number'
+ value='`$seq-no`' />
+ </set>
+ <set>
+ <parameter name='counter' value='`$counter + 1`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'></return>
+ </outcome>
+ </call>
+ <switch test='`$eipam-ip-block.plans_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='1' />
+ <parameter name='tmp.index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='1' />
+ <parameter name='tmp.index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='1'>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'
+ value='2' />
+ <parameter name='tmp.index' value='1' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'
+ value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'
+ value='`$tmp.vt-ip.ip-version`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'
+ value='1' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'
+ value='N' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='seq-no' value='`$seq-no + 1`' />
+ </set>
+ </block>
+ </for>
+ </for>
+ </for>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'From policy: ip-assignment is '
+ + $get-data-from-policy-output.ip-assignment
+ + ' but must be unique or shared'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </for>
+ <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >
+ <for index='vm-vnfc-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-vnfc-index].vnfc-name`'>
+ <outcome value='true'>
+ <for index='vnic-group-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >
+ <block>
+ <set>
+ <parameter name='vnfc-network-index' value='-1' />
+ </set>
+ <for index='vn-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnfc-network-index' value='`$vn-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnfc-network-index`'>
+ <outcome value='-1'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Cannot find vnfc-network for network role '
+ + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role.vnfc-type'
+ value='`$db.group-uuids[$group-index].vm-type`' />
+ </set>
+ <for index='vnic-index' start='0'
+ end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >
+ <block>
+ <set>
+ <parameter name='vnfc-port-index' value='-1' />
+ </set>
+ <for silentFailure='true' index='v-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' >
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id
+ == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$v-index].vnfc-port-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='vnfc-port-index' value='`$v-index`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnfc-port-index`'>
+ <outcome value='-1'>
+ <block>
+ <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vnfc-port-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='vnfc-port-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnfc-port-id'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id`' />
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />
+ </set>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length'
+ value='`$vnfc-port-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'></outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.'
+ value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </get-resource>
+ <return status='success'></return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml
new file mode 100644
index 0000000..b39e116
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml
@@ -0,0 +1,88 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-vlan-tagging-deactivate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vlan-vnfc-instance-groups.'
+ 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.`' />
+ </set>
+ <for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >
+ <for index='vnfc-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >
+ <for index='vnic-group-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='parent-port-role'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />
+ <parameter name='network-instance-group-function'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />
+ <parameter name='vnfc-instance-group-function'
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />
+ </set>
+ <for silentFailure='true' index='vsig-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >
+ <switch test='`
+ $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role
+ and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function
+ and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function
+`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].customer-bonding-requests.customer-bonding-request_length`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='Cannot deactivate module because customer bonding request exists' />
+ </return>
+ </outcome>
+ </switch>
+ <for index='vnf-vnfc-index' start='0'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' >
+ <switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name
+ == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$vnf-vnfc-index].vnfc-name`'>
+ <outcome value='true'>
+ <block>
+ <for index='$idx' start='`$vnf-vnfc-index`'
+ end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' >
+ <block>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'
+ value='' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx + 1].`' />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length].' value='' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ </for>
+ </for>
+ <return status='success'>
+ <parameter name='' value='' />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
new file mode 100644
index 0000000..9a7a73b
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
@@ -0,0 +1,289 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync'>
+ <block atomic="true">
+ <switch test='`$tmp.vt-ip.type`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='type is required' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vt-ip.network-instance-group-function`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='network-instance-group-function is required for FIXED ip request' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vt-ip.ip-version`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='ip-version is required' />
+ </return>
+ </outcome>
+ <outcome value='ipv4'>
+ <set>
+ <parameter name='tmp.address-family' value='4' />
+ <parameter name='tmp.sql.address-family' value='%4' />
+ </set>
+ </outcome>
+ <outcome value='ipv6'>
+ <set>
+ <parameter name='tmp.address-family' value='6' />
+ <parameter name='tmp.sql.address-family' value='%6' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='eipam-ip-block.' value='' />
+ </set>
+ <switch test='`$tmp.vt-ip.type`'>
+ <outcome value='FIXED'>
+ <block atomic='true'>
+ <switch test='`$tmp.vt-ip.vnfc-name`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='vnfc-name is required for FIXED ip request' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vt-ip.vf-module-id`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='vf-module-id is required' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$tmp.vt-ip.sequence-number`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='seq-num is required' />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.selected-client-key"
+ value="`$tmp.vt-ip.vm-type + '|' +
+ $tmp.vt-ip.vnfc-name + '|' +
+ $tmp.vt-ip.network-instance-group-function + '|' +
+ $tmp.vt-ip.type + '|' +
+ $tmp.address-family + '|' +
+ $tmp.vt-ip.sequence-number`" />
+ <!--
+fixed-ip client-key:
+vm-type + VFCname + network-instance-group-function + "FIXED" + [ip-version(4/6)] + seqNo
+ seqNo required for unique, but not required for shared
+-->
+ </set>
+ <set>
+ <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.vf-module-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='VIP'>
+ <block atomic='true'>
+ <switch test='`$tmp.vt-ip.nf-role`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='nf-role is required for VIP ip request' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vt-ip.network-instance-group-id == '' `">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='network-isntance-group-id is required for VIP' />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.network-instance-group-id`"/>
+ </set>
+ <set>
+ <parameter name='tmp.selected-client-key'
+ value="`$tmp.vt-ip.nf-role + '|' +
+ $tmp.vt-ip.network-instance-group-function + '|' +
+ $tmp.vt-ip.type + '|' +
+ $tmp.vt-ip.ip-version`" />
+ <!--
+loating-ip client-key:
+nf-role + network-instance-group-function + "VIP" + [ip-version(4/6)]
+-->
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vt-ip.network-id == '' and $tmp.vt-ip.network-instance-group-id == '' `">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='either network-id or network-isntance-group-id is required' />
+ </return>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vt-ip.network-id != '' `">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.sql'
+ value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_id = ' +
+ '$tmp.vt-ip.network-id AND address_family like $tmp.sql.address-family'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <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`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="eipam-ip-block.plans[0].requests[0].network-id"
+ value="`$tmp.vt-ip.network-id`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <switch test="`$tmp.vt-ip.network-instance-group-id != '' `">
+ <outcome value='true'>
+ <block atomic='true'>
+ <set>
+ <parameter name='tmp.sql'
+ value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_instance_group_id = '+
+ '$tmp.vt-ip.network-instance-group-id AND address_family like $tmp.sql.address-family'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <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`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="eipam-ip-block.plans[0].requests[0].network-instance-group-id"
+ value="`$tmp.vt-ip.network-instance-group-id`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='tmp.level4-key-found' value='false' />
+ </set>
+ <for index='didx' start='0' end='`$db.selected-subnet-data_length`' >
+ <set>
+ <parameter name='tmp.sql'
+ 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 )'`" />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='`$tmp.sql`' pfx='db.selected-subnet-keys'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table to find MAX level by entity_id' />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test="`$db.selected-subnet-keys.level == '4' `">
+ <outcome value='false'>
+ <block></block>
+ </outcome>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='tmp.level4-key-found' value='true' />
+ </set>
+ <set>
+ <parameter name='tmp.selected-entity-id' value='`$db.selected-subnet-keys.entity-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.selected-plan-name' value='`$db.selected-subnet-data[$didx].plan-name`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </get-resource>
+ </for>
+ <switch test="`$tmp.level4-key-found`">
+ <outcome value='false'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value='No level 4 KeyName found in EIPAM_IP_SUBNET_KEYS' />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from EIPAM_IP_SUBNET_KEYS
+ where entity_id = $tmp.selected-entity-id order by level'
+ pfx='db.eipam-subnet-keys[]'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table by entity_id' />
+ </return>
+ </outcome>
+ </get-resource>
+ <for index='key' start='0' end='`$db.eipam-subnet-keys_length`' >
+ <set>
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-name"
+ value="`$db.eipam-subnet-keys[$key].key-name`"/>
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-value"
+ value="`$db.eipam-subnet-keys[$key].key-value`"/>
+ </set>
+ </for>
+ <set>
+ <parameter name='eipam-ip-block.plans[0].plan-name' value='`$tmp.selected-plan-name`' />
+ <parameter name='eipam-ip-block.plans[0].address-family' value="`$tmp.vt-ip.ip-version`" />
+ <parameter name='eipam-ip-block.plans[0].requests[0].client-key'
+ value="`$tmp.selected-client-key`" />
+ <parameter name="eipam-ip-block.plans[0].requests[0].info"
+ value="`$tmp.eipam.info`"/>
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools_length" value="4"/>
+ <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />
+ <parameter name="eipam-ip-block.plans_length" value="1"/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/vlan-tag-ip.log' />
+ </execute>
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">
+ <outcome value='failure'>
+ <block atomic="true">
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-get-resource-request.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-get-resource-request.xml
new file mode 100644
index 0000000..d602cc0
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-get-resource-request.xml
@@ -0,0 +1,242 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-get-resource-request' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-id" value='`$vnf-get-resource-request-input.service-information.service-instance-id`'/>
+ <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-name" value='`$service-data.service-topology.service-topology-identifier.service-instance-name`'/>
+ </set>
+ <switch test="`$vnf-get-resource-request-input.vnf_length == ''`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length" value='`$service-data.vnfs.vnf_length`'/>
+ </set>
+ <switch test="`$service-data.vnfs.vnf_length == ''`">
+ <outcome value='false'>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-id`' value="`$service-data.vnfs.vnf[$i].vnf-id`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-name`' value="`$service-data.vnfs.vnf[$i].vnf-name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`'/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`'/>
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">
+ <outcome value='false'>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.status`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.capability-name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' />
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`"/>
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`">
+ <outcome value='false'>
+ <for index='l' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-id`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param_length`' value="`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`"/>
+ </set>
+ <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key_length`' value="`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`"/>
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.vnf_counter" value='0'/>
+ </set>
+ <for index='ll' start='0' end='`$vnf-get-resource-request-input.vnf_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.vnf-id" value="`$vnf-get-resource-request-input.vnf[$ll].vnf-id`"/>
+ </set>
+ <switch test="`$service-data.vnfs.vnf_length == ''`">
+ <outcome value='false'>
+ <for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <block atomic="true">
+ <switch test='`$tmp.vnf-id == $service-data.vnfs.vnf[$i].vnf-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-id`' value="`$service-data.vnfs.vnf[$i].vnf-id`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-name`' value="`$service-data.vnfs.vnf[$i].vnf-name`"/>
+ <parameter name="tmp.pnum" value='0'/>
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">
+ <outcome value='false'>
+ <for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.status`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.capability-name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`"/>
+ <parameter name='tmp.prnum' value='0' />
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key_length`' value='`$tmp.prnum + 1`' />
+ <parameter name='tmp.prnum' value='`$tmp.prnum + 1`' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param_length`' value='`$tmp.pnum + 1`' />
+ <parameter name='tmp.pnum' value='`$tmp.pnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`">
+ <outcome value='false'>
+ <for index='ln' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >
+ <switch test="`$vnf-get-resource-request-input.vnf[$ll].vf-module_length == ''`">
+ <outcome value='false'>
+ <for index='jj' start='0' end='`$vnf-get-resource-request-input.vnf[$ll].vf-module_length`' >
+ <switch test='`$vnf-get-resource-request-input.vnf[$ll].vf-module[$jj].vf-module-id == $service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`"/>
+ <parameter name="tmp.vfpnum" value='0'/>
+ </set>
+ <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>
+ <parameter name='tmp.pvnfrnum' value='0' />
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key_length`' value='`$tmp.pvnfrnum + 1`' />
+ <parameter name='tmp.pvnfrnum' value='`$tmp.pvnfrnum + 1`' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param_length`' value='`$tmp.vfpnum + 1`' />
+ <parameter name='tmp.vfpnum' value='`$tmp.vfpnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`"/>
+ <parameter name="tmp.vfpnum" value='0'/>
+ </set>
+ <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>
+ <parameter name='tmp.pvnfrnum' value='0' />
+ </set>
+ <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">
+ <outcome value='false'>
+ <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key_length`' value='`$tmp.pvnfrnum + 1`' />
+ <parameter name='tmp.pvnfrnum' value='`$tmp.pvnfrnum + 1`' />
+ </set>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param_length`' value='`$tmp.vfpnum + 1`' />
+ <parameter name='tmp.vfpnum' value='`$tmp.vfpnum + 1`' />
+ </set>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length' value='`$tmp.vnf_counter + 1`' />
+ <parameter name='tmp.vnf_counter' value='`$tmp.vnf_counter + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <return status="success">
+ <parameter name="error-code" value="200" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml
new file mode 100644
index 0000000..78f1abe
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml
@@ -0,0 +1,64 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='vnf-topology-operation-activate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'activate' then request-action must be 'CreateVnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-async.xml
new file mode 100644
index 0000000..61b4226
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-async.xml
@@ -0,0 +1,1536 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-assign-async' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <set>
+ <parameter name="so.ack-final-indicator" value="Y" />
+ <parameter name="so.response-code" value="500" />
+ <parameter name="so.notification-url" value="`$vnf-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+ <parameter name="so.svc-request-id" value="`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`" />
+ <parameter name="so.service-type" value="`$vnf-topology-operation-input.service-information.subscription-service-type`" />
+ <parameter name="so.service-instance-id" value="`$vnf-topology-operation-input.service-information.service-instance-id`" />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVnfInstance'" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id + ' with error: ' + $error-message`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnfend.log' />
+ </execute>
+ <set>
+ <parameter name="so.response-code" value="200" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic='true'>
+ <set>
+ <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id
+ + ' already exists'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnf-network-collection_length' value='0' />
+ </set>
+ <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="instance-group"
+ key="instance-group.id = $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id"
+ pfx='aai.instance-group' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Cannot find instance group id ' +
+ $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id
+ + ' in AAI'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error retrieving instance-group from AAI" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <for index='rel-index' start='0' end='`$aai.instance-group.relationship-list.relationship_length`' >
+ <switch test='`$aai.instance-group.relationship-list.relationship[$rel-index].related-to`'>
+ <outcome value='collection'>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="collection"
+ key="collection.collection-id = $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value"
+ pfx='aai.collection' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find AAI relationship from collection '
+ + $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value
+ + ' to service instance'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Failed to get network service instance '
+ + $network-service-instance + ' from MD-SAL'`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='found-network-instance-group' value='false' />
+ </set>
+ <for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id
+ == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>
+ <outcome value='true'>
+ <block>
+ <set>
+ <parameter name='found-network-instance-group' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$found-network-instance-group`'>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Could not find network instance group ' +
+ $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id
+ + ' in MD-SAL service instance '
+ + $network-service-instance`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-function'
+ value='`$aai.instance-group.instance-group-function`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-id'
+ value='`$aai.instance-group.id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-service-instance-id'
+ value='`$service-data.network-instance-groups.network-instance-group[$nig-index].service-instance-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-customization-uuid'
+ value='`$aai.collection.collection-customization-id`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnf-network-collection_length' value='`$tmp.vnf-network-collection_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length'
+ value='`$tmp.vnf-network-collection_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'
+ value='`$db.vf-model.nf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'
+ value='`$db.vf-model.nf-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'
+ value='`$db.vf-model.nf-function`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'
+ value='`$db.vf-model.nf-code`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'
+ value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'
+ value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-information.vnf-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <switch test='`$db.vf-model.ecomp-generated-naming`'>
+ <outcome value='Y'>
+ <block></block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$db.vf-model.naming-policy`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-input.action' value='ASSIGN' />
+ <parameter name='generate-unique-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`'z' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + $db.vf-model.nf-code`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vf-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Unable to generate VNF name" />
+ </set>
+ <block atomic='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vnf-name' value='`$naming-policy-generate-name-output.vnf-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-information.vnf-name`" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'
+ value='`$tmp.vnf-name`' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$db.vf-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$db.vf-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$db.vf-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="cloud-region"
+ key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND
+ cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND
+ depth='all'"
+ pfx='aai.cloud-region' local-only='false' >
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Cloud region not found in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error retrieving cloud region from AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >
+ <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>
+ <outcome value='complex'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+ <parameter name='ctx_memory_result_key' value='aai-uid-split' />
+ <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />
+ <parameter name='regex' value='/' />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'
+ value='`$aai-uid-split[$aai-uid-split_length - 1]`' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_TO_NETWORK_ROLE_MAPPING WHERE vf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-network-role-mapping[]'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.vf-network-role-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='network-index' value='0' />
+ </set>
+ <for silentFailure='true' index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>
+ <switch test='`$db.vf-network-role-mapping[$role-index].network-role`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='null'>
+ <block></block>
+ </outcome>
+ <outcome value='NULL'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='aai.l3-network.' value='' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-networks"
+ key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"
+ pfx='aai.l3-network' local-only='false'
+>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error retrieving l3-network from AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='l3-network-id' value='-1' />
+ </set>
+ <block>
+ <set>
+ <parameter name='found-network' value='false' />
+ </set>
+ <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >
+ <block atomic="true">
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>
+ <outcome value='PendingCreate'>
+ <block></block>
+ </outcome>
+ <outcome value='Pending Create'>
+ <block></block>
+ </outcome>
+ <outcome value='PendingDelete'>
+ <block></block>
+ </outcome>
+ <outcome value='Pending Delete'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >
+ <block atomic="true">
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>
+ <outcome value='service-instance'>
+ <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>
+ <outcome value='service-instance.service-instance-id'>
+ <set>
+ <parameter name='network-service-instance-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='cloud-region'>
+ <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>
+ <outcome value='cloud-region.cloud-region-id'>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />
+ </set>
+ <set>
+ <parameter name='found-network' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ <switch test='`$l3-network-id`'>
+ <outcome value='-1'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'
+ value='`$db.vf-network-role-mapping[$role-index].network-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'
+ value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].contrail-network-fqdn'
+ value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />
+ </set>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' >
+ <block>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`'>
+ <outcome value=''>
+ <set>
+ <parameter name='aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role' value='NONE' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`'>
+ <outcome value='4'>
+ <set>
+ <parameter name='tmp.ip-version' value='ipv4' />
+ </set>
+ </outcome>
+ <outcome value='6'>
+ <set>
+ <parameter name='tmp.ip-version' value='ipv6' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].ip-version'
+ value='`$tmp.ip-version`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].neutron-subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].sdnc-subnet-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-role'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-name'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].network-start-address'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].network-start-address`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].gateway-address'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].gateway-address`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].cidr-mask'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].cidr-mask`' />
+ </set>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].dhcp-enabled`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'
+ value='Y' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'
+ value='N' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VNF_RELATED_NETWORK_ROLE where vnf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid
+ and network_role = $db.vf-network-role-mapping[$role-index].network-role'
+ pfx='db.vnf-related-network-role[]'>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error reading VNF_RELATED_NETWORK_ROLE table" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-topology-identifier-structure`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$network-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.ntis-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$l3-network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ntis-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ntis" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`
+ 'Error retrieving network-topology-identifier-structure for service instance '
+ + $network-service-instance-id
+ + ' and network-id '
+ + $l3-network-id`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].is-trunked'
+ value='`$mdsal-ntis.network-topology-identifier-structure.is-trunked`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].segmentation-id'
+ value='`$mdsal-ntis.network-topology-identifier-structure.segmentation-id`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.oe">
+ <parameter name="start[0]" value="`'nodes/service-instances/service-instance?service-instance-id=' + $network-service-instance-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="/query/owning-entity-fromService-instance" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error getting owning entity from service instance" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Unable to find owning entity from service instance" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='rn-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length`' />
+ </set>
+ <switch test='`$rn-index`'>
+ <outcome value=''>
+ <set>
+ <parameter name='rn-index' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='rel-network-role-index' start='0' end='`$db.vnf-related-network-role_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.get-networks">
+ <parameter name="start[0]" value="`'/business/owning-entities/owning-entity/' + $tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/getNetworks?networkRole=' + $db.vnf-related-network-role[$rel-network-role-index].related-network-role
+ + '&amp;cloudRegionId=' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error calling getNetworks custom query in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No l3-network returned from getNetworks custom query for related network role '
+ + $db.vnf-related-network-role[0].related-network-role`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-id'
+ value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-role'
+ value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-role`' />
+ </set>
+ <for index='rel-index' start='0' end='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship_length`' >
+ <switch test='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].related-to`'>
+ <outcome value='vlan-tag'>
+ <block atomic="true">
+ <set>
+ <parameter name='vlan-tag-id' value='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $vlan-tag-id"
+ pfx='aai.vlan-tag' local-only='false'
+>
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error getting vlan-tag object from AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'
+ value='`$aai.vlan-tag.vlan-tag-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'
+ value='`$aai.vlan-tag.vlan-id-outer`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'
+ value='`$aai.vlan-tag.vlan-id-inner`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.is-private'
+ value='`$aai.vlan-tag.is-private`' />
+ </set>
+ </outcome>
+ </get-resource>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length'
+ value='`$rn-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='network-index' value='`$network-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vnfa.log' />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'
+ value='`$network-index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'
+ value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />
+ </set>
+ <switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>
+ <outcome value=''>
+ <switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No availability zones found in AAI for cloud region '
+ + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'
+ value='`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />
+ <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating generic-vnf in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'
+ value='`$db.vf-model.avail-zone-max-count`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'
+ value='`$aai.cloud-region.availability-zones.availability-zone_length`' />
+ </set>
+ <for index='vnf-nw-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-nw-index].network-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating generic-vnf in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <set>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vnf-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vnf-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />
+ <parameter name="prov-status" value="PREPROV" />
+ <!-- <parameter name="operational-status" value="out-of-service-path" /> -->
+ <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />
+ <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />
+ <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />
+ <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />
+ <parameter name="in-maint" value="true" />
+ <parameter name="selflink" value="`$vnf-object-path`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </update>
+ <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-information.vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/instance-groups/instance-group/'
+ + $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id`" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error updating relationship in generic-vnf in AAI" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.vnf-assign`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$service-data.service-topology.service-topology-identifier.service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.vnf.url"/>
+ <parameter name="target" value="{vnf-id}"/>
+ <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>
+ </execute>
+ <set>
+ <parameter name='vnf-data.' value='service-data.vnfs.vnf[$vnf-index].vnf-data.' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'vnf-data-assign.json'`" />
+ <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.vnf.url`" />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='PUT' />
+ <parameter name="responsePrefix" value="vnf-assign" />
+ <outcome value='failure'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error doing PUT of vnf-data" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic="true">
+ <set>
+ <parameter name="error-message" value="Error doing PUT of vnf-data" />
+ </set>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vnf.log' />
+ </execute>
+ <set>
+ <parameter name="so.response-code" value="200" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-sync.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-sync.xml
new file mode 100644
index 0000000..2ad5a46
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign-sync.xml
@@ -0,0 +1,899 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='aai-disabled'>
+ <method rpc='vnf-topology-operation-assign-sync' mode='sync'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.cloud-region.cloud-owner' value='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='true'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id + ' with error: ' + $error-message`" />
+ </return>
+ </outcome>
+ </call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-vnfend.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vnf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id
+ + ' already exists'`" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />
+ </set>
+ <set>
+ <parameter name='tmp.vnf-network-collection_length' value='0' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length'
+ value='`$tmp.vnf-network-collection_length`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'
+ value='`$db.vf-model.nf-type`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'
+ value='`$db.vf-model.nf-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'
+ value='`$db.vf-model.nf-function`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'
+ value='`$db.vf-model.nf-code`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'
+ value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'
+ value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-information.vnf-name`'>
+ <outcome value=''>
+ <block atomic="true">
+ <switch test='`$db.vf-model.ecomp-generated-naming`'>
+ <outcome value='Y'>
+ <block></block>
+ </outcome>
+ <outcome value='N'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$db.vf-model.naming-policy`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='generate-unique-name-input.action' value='ASSIGN' />
+ <parameter name='generate-unique-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />
+ <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />
+ <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />
+ <parameter name='generate-unique-name-input.prefix' value="`'z' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + $db.vf-model.nf-code`" />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vf-model.naming-policy`' />
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />
+ <parameter name='naming-policy-generate-name-input.query-parameter' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unable to generate VNF name" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='tmp.vnf-name' value='`$naming-policy-generate-name-output.vnf-name`' />
+ </set>
+ </outcome>
+ </call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-information.vnf-name`" />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'
+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'
+ value='`$tmp.vnf-name`' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$db.vf-model.invariant-uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$db.vf-model.uuid`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$db.vf-model.version`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$db.vf-model.name`' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ </set>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_TO_NETWORK_ROLE_MAPPING WHERE vf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-network-role-mapping[]'>
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <set>
+ <parameter name='db.vf-network-role-mapping_length' value='0' />
+ </set>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='network-index' value='0' />
+ </set>
+ <for silentFailure='true' index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>
+ <switch test='`$db.vf-network-role-mapping[$role-index].network-role`'>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='null'>
+ <block></block>
+ </outcome>
+ <outcome value='NULL'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='aai.l3-network.' value='' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-networks"
+ key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"
+ pfx='aai.l3-network' local-only='false'
+>
+ <outcome value='not-found'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '
+ + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + ' and network_role '
+ + $db.vf-network-role-mapping[$network-index].network-role`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error retrieving l3-network from AAI" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='l3-network-id' value='-1' />
+ </set>
+ <block>
+ <set>
+ <parameter name='found-network' value='false' />
+ </set>
+ <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >
+ <block atomic="true">
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>
+ <outcome value='PendingCreate'>
+ <block></block>
+ </outcome>
+ <outcome value='Pending Create'>
+ <block></block>
+ </outcome>
+ <outcome value='PendingDelete'>
+ <block></block>
+ </outcome>
+ <outcome value='Pending Delete'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >
+ <block atomic="true">
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>
+ <outcome value='service-instance'>
+ <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>
+ <outcome value='service-instance.service-instance-id'>
+ <set>
+ <parameter name='network-service-instance-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='cloud-region'>
+ <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>
+ <outcome value='cloud-region.cloud-region-id'>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />
+ </set>
+ <set>
+ <parameter name='found-network' value='true' />
+ </set>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test='`$found-network`'>
+ <outcome value='true'>
+ <break/>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ <switch test='`$l3-network-id`'>
+ <outcome value='-1'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'
+ value='`$db.vf-network-role-mapping[$role-index].network-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'
+ value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].contrail-network-fqdn'
+ value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />
+ </set>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='0' />
+ </set>
+ </outcome>
+ <outcome value='0'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' >
+ <block>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`'>
+ <outcome value=''>
+ <set>
+ <parameter name='aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role' value='NONE' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`'>
+ <outcome value='4'>
+ <set>
+ <parameter name='tmp.ip-version' value='ipv4' />
+ </set>
+ </outcome>
+ <outcome value='6'>
+ <set>
+ <parameter name='tmp.ip-version' value='ipv6' />
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].ip-version'
+ value='`$tmp.ip-version`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].neutron-subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].sdnc-subnet-id'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-role'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-name'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-name`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].network-start-address'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].network-start-address`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].gateway-address'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].gateway-address`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].cidr-mask'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].cidr-mask`' />
+ </set>
+ <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].dhcp-enabled`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'
+ value='Y' />
+ </set>
+ </outcome>
+ <outcome value='false'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'
+ value='N' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'
+ value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VNF_RELATED_NETWORK_ROLE where vnf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid
+ and network_role = $db.vf-network-role-mapping[$role-index].network-role'
+ pfx='db.vnf-related-network-role[]'>
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VNF_RELATED_NETWORK_ROLE table" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.network-topology-identifier-structure`"/>
+ <parameter name="outputPath" value="tmp.part"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$network-service-instance-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$tmp.part`"/>
+ <parameter name="outputPath" value="tmp.ntis-url"/>
+ <parameter name="target" value="{network-id}"/>
+ <parameter name="replacement" value="`$l3-network-id`"/>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ntis-url`' />
+ <parameter name='restapiUser' value='`$prop.controller.user`' />
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='GET' />
+ <parameter name="responsePrefix" value="mdsal-ntis" />
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`
+ 'Error retrieving network-topology-identifier-structure for service instance '
+ + $network-service-instance-id
+ + ' and network-id '
+ + $l3-network-id`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].is-trunked'
+ value='`$mdsal-ntis.network-topology-identifier-structure.is-trunked`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].segmentation-id'
+ value='`$mdsal-ntis.network-topology-identifier-structure.segmentation-id`' />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.oe">
+ <parameter name="start[0]" value="`'nodes/service-instances/service-instance?service-instance-id=' + $network-service-instance-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="/query/owning-entity-fromService-instance" />
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting owning entity from service instance" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unable to find owning entity from service instance" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='rn-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length`' />
+ </set>
+ <switch test='`$rn-index`'>
+ <outcome value=''>
+ <set>
+ <parameter name='rn-index' value='0' />
+ </set>
+ </outcome>
+ </switch>
+ <for index='rel-network-role-index' start='0' end='`$db.vnf-related-network-role_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="custom-query"
+ key="format = 'resource'"
+ force="true"
+ local-only="false"
+ pfx="tmp.AnAI-data.get-networks">
+ <parameter name="start[0]" value="`'/business/owning-entities/owning-entity/' + $tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id `" />
+ <parameter name="start_length" value="1" />
+ <parameter name="query" value="`'/query/getNetworks?networkRole=' + $db.vnf-related-network-role[$rel-network-role-index].related-network-role
+ + '&amp;cloudRegionId=' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error calling getNetworks custom query in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No l3-network returned from getNetworks custom query for related network role '
+ + $db.vnf-related-network-role[0].related-network-role`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-id'
+ value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-role'
+ value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-role`' />
+ </set>
+ <for index='rel-index' start='0' end='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship_length`' >
+ <switch test='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].related-to`'>
+ <outcome value='vlan-tag'>
+ <block atomic="true">
+ <set>
+ <parameter name='vlan-tag-id' value='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="vlan-tag"
+ key="vlan-tag.vlan-tag-id = $vlan-tag-id"
+ pfx='aai.vlan-tag' local-only='false'
+>
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error getting vlan-tag object from AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'
+ value='`$aai.vlan-tag.vlan-tag-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'
+ value='`$aai.vlan-tag.vlan-id-outer`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'
+ value='`$aai.vlan-tag.vlan-id-inner`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.is-private'
+ value='`$aai.vlan-tag.is-private`' />
+ </set>
+ </outcome>
+ </get-resource>
+ <break/>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length'
+ value='`$rn-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='network-index' value='`$network-index + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vnfa.log' />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'
+ value='`$network-index`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'
+ value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'
+ value='`$db.vf-model.avail-zone-max-count`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'
+ value='`$aai.cloud-region.availability-zones.availability-zone_length`' />
+ </set>
+ <set>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vnf-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vnf-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >
+ <block atomic="true">
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf:relationship-list"
+ key="generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-information.vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />
+ <parameter name="relationship-list.relationship[0].related-link"
+ value="`'/aai/v$/network/instance-groups/instance-group/'
+ + $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id`" />
+ <outcome value='failure'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating relationship in generic-vnf in AAI" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ </block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </return>
+ </block>
+ </outcome>
+ </save>
+ </block>
+ </for>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/bgb-vnf.log' />
+ </execute>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml
new file mode 100644
index 0000000..9c6089f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml
@@ -0,0 +1,27 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-assign' mode='sync'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`length($vnf-topology-operation-input.sdnc-request-header.svc-notification-url) == 0`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <switch test='$vnf-topology-operation-input.sdnc-request-header.svc-notification-url) == $prop.so.ignore-url'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-async' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml
new file mode 100644
index 0000000..64183eb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml
@@ -0,0 +1,28 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-async' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='skip-mdsal-update' value='Y' />
+ </set>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-async' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml
new file mode 100644
index 0000000..a45713f
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml
@@ -0,0 +1,132 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-changeassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'changeassign' then request-action must be 'CreateVnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error reading VF_MODEL table" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.'
+ value='`$vnf-topology-operation-input.vnf-information.onap-model-information.`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <set>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $service-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'></return>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-changeassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error performing changeassign for self-serve resources with error: '+ $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml
new file mode 100644
index 0000000..7665486
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml
@@ -0,0 +1,84 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-index`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />
+ </return>
+ </outcome>
+ </switch>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="generic-vnf"
+ key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="orchestration-status" value="PendingDelete" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error updating generic-vnf in AAI" />
+ </return>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />
+ </return>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml
new file mode 100644
index 0000000..32e922e
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml
@@ -0,0 +1,174 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation-unassign' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteVnfInstance'>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`' >
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vnf-index`'>
+ <outcome value=''>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`">
+ <outcome value='0'>
+ <block></block>
+ </outcome>
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Cannot delete the VNF because there are VF modules defined" />
+ </return>
+ </outcome>
+ </switch>
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+ key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'
+ pfx='db.vf-model'>
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="Error reading VF_MODEL table"/>
+ </record>
+ </outcome>
+ <outcome value='not-found'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`"/>
+ </record>
+ </outcome>
+ </get-resource>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>
+ <switch test="`$ss.self-serve-flag`">
+ <outcome value='false'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="service-data.vnfs." value=""/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >
+ <block>
+ <set>
+ <parameter name="$tmpidx" value="`$idx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$tmpidx]." value="" />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length - 1]." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />
+ <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+ <parameter name='naming-policy-generate-name-input.action' value='DELETE' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-unassign' mode='sync' >
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error while unassigning self-serve resources with error: '+ $error-message`" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value='1'>
+ <set>
+ <parameter name="service-data.vnfs." value=""/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >
+ <block>
+ <set>
+ <parameter name="$tmpidx" value="`$idx - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$tmpidx]." value="" />
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length - 1]." value=""/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation.xml
new file mode 100644
index 0000000..9b8f9a0
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_vnf-topology-operation.xml
@@ -0,0 +1,253 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ 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}'>
+ <method rpc='vnf-topology-operation' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-vnf-input' mode='sync' ></call>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='assign'>
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test='`length($vnf-topology-operation-input.sdnc-request-header.svc-notification-url) == 0`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-notification-url == $prop.so.ignore-url`'>
+ <outcome value='true'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign-sync' mode='sync' ></call>
+ </outcome>
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='skip-mdsal-update' value='Y' />
+ </set>
+ <set>
+ <parameter name='ack-final' value='N' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANVpnInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='ActivateSDWANSiteInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='ActivateSOTNUnderlayInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vnf-topology-operation-underlay-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANVpnInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='DeactivateSDWANSiteInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='unassign'>
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-unassign' mode='sync' ></call>
+ </outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateAccessConnectivityInstance'>
+ <for index='idx' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-vnf-topology-operation-create-huawei' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='CreateInternetProfileInstance'>
+ <for index='idx' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-create-huawei' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='CreateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANVpnInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='CreateSDWANSiteInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='CreateSOTNUnderlayInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vnf-topology-operation-underlay-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteAccessConnectivityInstance'>
+ <for index='idx' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-vnf-topology-operation-delete-huawei' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='DeleteInternetProfileInstance'>
+ <for index='idx' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-delete-huawei' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ <outcome value='DeleteSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANVpnInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='DeleteSDWANSiteInstance'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync' ></call>
+ </block>
+ </outcome>
+ <outcome value='DeleteSOTNUnderlayInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sotn-vnf-topology-operation-underlay-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <switch test='`$vnf-topology-operation-input.request-information.request-action`'>
+ <outcome value='ChangeInternetProfileInstance'>
+ <for index='idx' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >
+ <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'manufacturer'`">
+ <outcome value='true'>
+ <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`'>
+ <outcome value='HUAWEI'>
+ <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-vnf-topology-operation-change-huawei' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml
new file mode 100644
index 0000000..b11e740
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml
@@ -0,0 +1,777 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="wan-connection-topology-operation-activate" mode="sync">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="specification"/>
+ <outcome value="true">
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </outcome>
+ <outcome value="false">
+ <block atomic="true">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties"/>
+ <parameter name="contextPrefix" value="prop"/>
+ </execute>
+ <set>
+ <parameter name="tmp.found-network-input" value="false"/>
+ </set>
+ <for index="pidx" start="0" end="`$service-data.networks.network_length`">
+ <switch test="`$service-data.networks.network[$pidx].network-data.network-information.onap-model-information.model-name == $network-topology-operation-input.network-information.onap-model-information.model-name`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.pidx" value="`$pidx`"/>
+ <parameter name="tmp.network." value="`$service-data.networks.network[$pidx].`"/>
+ <parameter name="tmp.network-input-parameters" value="`$service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`"/>
+ <parameter name="tmp.found-network-input" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FC"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="sotn"/>
+ <outcome value="true">
+ <block>
+ <block atomic="true">
+ <set>
+ <parameter name="sotnFcPortListLength" value="0"/>
+ </set>
+ <for index="sIdx" start="0" end="`$service-data.networks.network_length`">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="sotn"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FcPort"/>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.sotnFcPortList[`$sotnFcPortListLength`]" value="`$sIdx`"/>
+ </set>
+ <for index="paramIdx" start="0" end="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].name`"/>
+ <parameter name="target" value="address"/>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="sotnFcPortAddress" value="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].value`"/>
+ </set>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.oss.url + '/oss/inventory?location=' + $sotnFcPortAddress`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="customHttpHeaders" value="X-FromAppId=MSO"/>
+ <parameter name="httpMethod" value="GET"/>
+ <parameter name="responsePrefix" value="temp.oss.accessTPs"/>
+ <outcome value="success">
+ <switch test="`$temp.oss.accessTPs_length`">
+ <outcome value="Other">
+ <block atomic="true">
+ <switch test="`$temp.accessTPs_length`">
+ <outcome value="">
+ <set>
+ <parameter name="tp_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="tp_length" value="`$temp.accessTPs_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$temp.oss.accessTPs_length`">
+ <set>
+ <parameter name="`temp.accessTPs[$idx + $tp_length].`" value="`$temp.oss.accessTPs[$idx].`"/>
+ </set>
+ </for>
+ <set>
+ <parameter name="temp.accessTPs_length" value="`$temp.accessTPs_length + $temp.oss.accessTPs_length`"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </execute>
+ </for>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </for>
+ </block>
+ <switch test="`$temp.accessTPs_length &gt;= 2`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="prop.connection-attachment.access-topology-id" value="`$temp.accessTPs[0].access-topology-id`"/>
+ <parameter name="prop.connection-attachment.access-client-id" value="`$temp.accessTPs[0].access-client-id`"/>
+ <parameter name="prop.connection-attachment.access-provider-id" value="`$temp.accessTPs[0].access-provider-id`"/>
+ <parameter name="prop.connection-attachment.access-node-id" value="`$temp.accessTPs[0].access-node-id`"/>
+ <parameter name="prop.connection-attachment.access-ltp-id" value="`$temp.accessTPs[0].access-ltp-id`"/>
+ <parameter name="prop.remote.connection-attachment.access-topology-id" value="`$temp.accessTPs[1].access-topology-id`"/>
+ <parameter name="prop.remote.connection-attachment.access-client-id" value="`$temp.accessTPs[1].access-client-id`"/>
+ <parameter name="prop.remote.connection-attachment.access-provider-id" value="`$temp.accessTPs[1].access-provider-id`"/>
+ <parameter name="prop.remote.connection-attachment.access-node-id" value="`$temp.accessTPs[1].access-node-id`"/>
+ <parameter name="prop.remote.connection-attachment.access-ltp-id" value="`$temp.accessTPs[1].access-ltp-id`"/>
+ </set>
+ <for index="paidx" start="0" end="`$tmp.network-input-parameters.param_length`">
+ <block>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'name'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.name" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'service-type'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.service-type" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'total-size'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.total-size" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pir'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.pir" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'cbs'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.cbs" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pbs'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.pbs" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'couplingFlag'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.couplingFlag" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'colorAware'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.colorAware" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'route-objective-function'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.route-objective-function" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'diversity-policy'`">
+ <outcome value="true">
+ <set>
+ <parameter name="template.diversity-policy" value="`$tmp.network-input-parameters.param[$paidx].value`"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`"/>
+ <parameter name="restapiUrl" value="`$prop.restapi.connection-oof-url`"/>
+ <parameter name="restapiUser" value="`$prop.oof.user`"/>
+ <parameter name="restapiPassword" value="`$prop.oof.password`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="oof"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`"/>
+ <outcome value="failure"></outcome>
+ <outcome value="success">
+ <for index="vidx" start="0" end="`$oof.vpns_length`">
+ <block atomic="true">
+ <set>
+ <parameter name="oof.vpn." value="`$oof.vpns[$vidx].`"/>
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $oof.vpn.access-node-id AND depth = '0'" pfx="tmp.aai.pnf" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`"/>
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`"/>
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`"/>
+ </return>
+ </outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`"/>
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`"/>
+ </return>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`"/>
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sotn-api-ConnectivityService.json'`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-ConnectivityService:create-connectivity-service'`"/>
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`"/>
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="patch"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name="customHttpHeaders" value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`"/>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Error executing Create vpn rest api"/>
+ </return>
+ </outcome>
+ <outcome value="success">
+ <block atomic="true"/>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <block atomic="true">
+ <switch test="`$found-network-input`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Network input parameters not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.restapiUrl-found" value="false"/>
+ <parameter name="tmp.restapiUser-found" value="false"/>
+ <parameter name="tmp.restapiPassword-found" value="false"/>
+ <parameter name="tmp.templateFileName-found" value="false"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+ </set>
+ <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`">
+ <block>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`">
+ <outcome value="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="true"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`"/>
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.templateFileName-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiUrl-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`">
+ <outcome value="true">
+ <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync">
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value="false">
+ <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$tmp.templateFileName`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`"/>
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="restApi-result"/>
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FD"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$found-network-input`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Network input parameters not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.restapiUrl-found" value="false"/>
+ <parameter name="tmp.restapiUser-found" value="false"/>
+ <parameter name="tmp.restapiPassword-found" value="false"/>
+ <parameter name="tmp.templateFileName-found" value="false"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+ </set>
+ <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`">
+ <block>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`">
+ <outcome value="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="true"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`"/>
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.templateFileName-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiUrl-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`">
+ <outcome value="true">
+ <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync">
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value="false">
+ <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$tmp.templateFileName`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`"/>
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="restApi-result"/>
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FcPort"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="sitewan"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$found-network-input`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Network input parameters not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.restapiUrl-found" value="false"/>
+ <parameter name="tmp.restapiUser-found" value="false"/>
+ <parameter name="tmp.restapiPassword-found" value="false"/>
+ <parameter name="tmp.templateFileName-found" value="false"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+ </set>
+ <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`">
+ <block>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`">
+ <outcome value="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
+ <outcome value="success">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="true"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`"/>
+ <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`"/>
+ </set>
+ </outcome>
+ <outcome value="not-found">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="prop.thirdpartySdnc-found" value="false"/>
+ </set>
+ </outcome>
+ </get-resource>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.templateFileName-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiUrl-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`">
+ <outcome value="true">
+ <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync">
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value="false">
+ <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="templateFileName" value="`$tmp.templateFileName`"/>
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`"/>
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="restApi-result"/>
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <block>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value="false">
+ <block>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </execute>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml
new file mode 100644
index 0000000..d3b24d4
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="wan-connection-topology-operation-create" mode="sync">
+ <block atomic="true">
+ <switch test="`$network-topology-operation-input.network-information.network-id`">
+ <outcome value="">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+ <parameter name="ctx-destination" value="network-topology-operation-input.network-information.network-id"/>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="error-code" value=""/>
+ <parameter name="error-message" value="An error occured while generation allotted resource ID"/>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value="Other"></outcome>
+ </switch>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties"/>
+ <parameter name="contextPrefix" value="prop"/>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="specification"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name="service-data.networks.network[$nidx].network-id" value="`$network-topology-operation-input.network-information.network-id`"/>
+ <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`"/>
+ <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`"/>
+ <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`"/>
+ <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`"/>
+ <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`"/>
+ <parameter name="service-data.networks.network_length" value="`$nidx+1`"/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FC"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ <for index="idx" start="0" end="`$nidx`">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="specification"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="nidx" value="`$idx`"/>
+ <parameter name="isExist" value="true"/>
+ </set>
+ <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="input_param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <for index="pidx" start="0" end="`$param_length`">
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+ </set>
+ </for>
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FD"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ <for index="idx" start="0" end="`$nidx`">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="specification"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="nidx" value="`$idx`"/>
+ <parameter name="isExist" value="true"/>
+ </set>
+ <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="input_param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <for index="pidx" start="0" end="`$param_length`">
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+ </set>
+ </for>
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FcPort"/>
+ <outcome value="true">
+ <block atomic="true">
+ <switch test="`$service-data.networks.network_length`">
+ <outcome value="">
+ <set>
+ <parameter name="nidx" value="0"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <set>
+ <parameter name="nidx" value="`$service-data.networks.network_length`"/>
+ <parameter name="isExist" value="false"/>
+ </set>
+ <for index="idx" start="0" end="`$nidx`">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="specification"/>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true">
+ <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="nidx" value="`$idx`"/>
+ <parameter name="isExist" value="true"/>
+ </set>
+ <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+ <outcome value="">
+ <set>
+ <parameter name="input_param_length" value="0"/>
+ </set>
+ </outcome>
+ <outcome value="Other">
+ <set>
+ <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+ </set>
+ </outcome>
+ </switch>
+ <for index="pidx" start="0" end="`$param_length`">
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+ </set>
+ </for>
+ <set>
+ <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/>
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <block></block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml
new file mode 100644
index 0000000..592fb65
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="wan-connection-topology-operation-deactivate" mode="sync">
+ <block atomic="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties"/>
+ <parameter name="contextPrefix" value="prop"/>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace">
+ <parameter name="source" value="`$prop.network-provided-resource`"/>
+ <parameter name="outputPath" value="tmp.services-url"/>
+ <parameter name="target" value="{service-instance-id}"/>
+ <parameter name="replacement" value="`$network-topology-operation-input.service-information.service-id`"/>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$prop.controller.url + $tmp.services-url`"/>
+ <parameter name="restapiUser" value="`$prop.controller.user`"/>
+ <parameter name="restapiPassword" value="`$prop.controller.pwd`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="GET"/>
+ <parameter name="responsePrefix" value="mdsal-psd"/>
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="Other">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Parent service data not available"/>
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="tmp.found-network-input" value="false"/>
+ </set>
+ <for index="pidx" start="0" end="`$mdsal-psd.service-data.networks.network_length`">
+ <switch test="`$mdsal-psd.service-data.networks.network[$pidx].network-id == $network-topology-operation-input.network-information.network-id`">
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.pidx" value="`$pidx`"/>
+ <parameter name="tmp.network." value="`$mdsal-psd.service-data.networks.network[$pidx].`"/>
+ <parameter name="tmp.network-input-parameters" value="`$mdsal-psd.service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`"/>
+ <parameter name="tmp.found-network-input" value="true"/>
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$found-network-input`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Network input parameters not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <block atomic="true">
+ <set>
+ <parameter name="tmp.restapiUrl-found" value="false"/>
+ <parameter name="tmp.restapiUser-found" value="false"/>
+ <parameter name="tmp.restapiPassword-found" value="false"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+ <parameter name="tmp.actualId-found" value="false"/>
+ </set>
+ <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`">
+ <block>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl-deactivate'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiUrl-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUser'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiUser" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiUser-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiPassword'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.restapiPassword" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.restapiPassword-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'actualId'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.actualId" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.actualId-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'`">
+ <outcome value="true">
+ <set>
+ <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>
+ <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`">
+ <outcome value="true">
+ <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync">
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/>
+ </return>
+ </outcome>
+ </call>
+ </outcome>
+ <outcome value="false">
+ <switch test="`$tmp.restapiUrl-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <switch test="`$tmp.restapiUser-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiUser not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <switch test="`$tmp.restapiPassword-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: 3rd party controller restapiPassword not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <switch test="`$tmp.actualId-found == 'true'`">
+ <outcome value="false">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="404"/>
+ <parameter name="error-message" value="Error: Wan Connection actualId not found"/>
+ </return>
+ </outcome>
+ <outcome value="true">
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+ <parameter name="restapiUrl" value="`$tmp.restapiUrl + $tmp.actualId`"/>
+ <parameter name="restapiUser" value="`$tmp.restapiUser`"/>
+ <parameter name="restapiPassword" value="`$tmp.restapiPassword`"/>
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="delete"/>
+ <outcome value="success">
+ <block></block>
+ </outcome>
+ <outcome value="failure">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="ack-final" value="Y"/>
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="`'Error calling ' + $tmp.restapiUrl`"/>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml
new file mode 100644
index 0000000..9c24e52
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" 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}">
+ <method rpc="wan-connection-topology-operation-delete" mode="sync">
+ <block atomic="true">
+ <switch test="`$network-topology-operation-input.network-information.network-id`">
+ <outcome value="">
+ <return status="failure">
+ <parameter name="error-code" value=""/>
+ <parameter name="error-message" value="An error occured while generation allotted resource ID"/>
+ </return>
+ </outcome>
+ <outcome value="Other"></outcome>
+ </switch>
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties">
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties"/>
+ <parameter name="contextPrefix" value="prop"/>
+ </execute>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FC"/>
+ <outcome value="true">
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="wan-connection-topology-operation-delete"/>
+ <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.nidx]." value=""/>
+ </set>
+ <set>
+ <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>
+ <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'` "/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains">
+ <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+ <parameter name="target" value="FD"/>
+ <outcome value="true">
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="wan-connection-topology-operation-delete"/>
+ <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+ <set>
+ <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.networks.network[$tmp.nidx]." value=""/>
+ </set>
+ <set>
+ <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>
+ <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology/'` "/>
+ </set>
+ </block>
+ </outcome>
+ <outcome value="false">
+ <block></block>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
+ <return status="success">
+ <parameter name="ack-final-indicator" value="Y"/>
+ <parameter name="error-code" value="200"/>
+ <parameter name="error-message" value="`$error-message`"/>
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_managed-network-notification.xml b/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_managed-network-notification.xml
new file mode 100644
index 0000000..1654a83
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_managed-network-notification.xml
@@ -0,0 +1,138 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='SUBNET-API' version='${project.version}'>
+ <method rpc='managed-network-notification' mode='sync'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="managed-network-notification"/>
+ <parameter name="field3" value="`$managed-network-notification-input.request-id`"/>
+ <parameter name="field4" value="`$managed-network-notification-input.managed-network-status.status.code`"/>
+ <parameter name="field5" value="`$managed-network-notification-input.managed-network-status.status.description`"/>
+ <parameter name="field6" value="`$managed-network-notification-input.managed-network-status.final-notification-indicator`"/>
+ </record>
+ <switch test="`$managed-network-notification-input.managed-network-status.status.code`">
+ <outcome value="Success">
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">
+ <outcome value="success">
+ <block>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM VPE_POOL where vpe_name = $eipam-ip-block.ptnii-name ;"
+ pfx='tmp.vpe-pool-row'></get-resource>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ACTIVE'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ACTIVE" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="ACTIVE" />
+ </save>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id" pfx="vpe-after">
+ <parameter name="orchestration-status" value="Activated" />
+ <parameter name="prov-status" value="NVTPROV" />
+ </update>
+ <return status="success"></return>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ACTIVATE_ERROR'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="EIPAM_ACTIVATESUBNET_ERROR" />
+ </save>
+ <return status="failure">
+ <parameter name="error-code" value="3000" />
+ <parameter name="error-message" value="ActivateSubnet failure, need to manually activate in EIPAM" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value="Other">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">
+ <outcome value="success">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePool">
+ <outcome value="success">
+ <block>
+ <set>
+ <parameter name="eipam-ip-block.status" value="DELETED" />
+ </set>
+ <return status="failure">
+ <parameter name="error-code" value="2000" />
+ <parameter name="error-message" value="Failure from NCS and deleted pool/subnet in EIPAM"/>
+ </return>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'DEALLOCATED'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="SDN_C_BACKOUT_ERROR" />
+ </save>
+ <return status="failure">
+ <parameter name="error-code" value="1000" />
+ <parameter name="error-message" value="Failure from NCS and deletePool failed in EIPAM, need to manually delete." />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'DEALLOCSUBNET_ERROR'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="SDN_C_BACKOUT_ERROR" />
+ </save>
+ <return status="failure">
+ <parameter name="error-code" value="1000" />
+ <parameter name="error-message" value="Failure from NCS and deletePool failed in EIPAM, need to manually delete." />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_subnet-allocated-notification.xml b/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_subnet-allocated-notification.xml
new file mode 100644
index 0000000..c1ed57c
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/SUBNET-API_subnet-allocated-notification.xml
@@ -0,0 +1,626 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='SUBNET-API' version='${project.version}'>
+ <method rpc='subnet-allocated-notification' mode='sync'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="subnet-allocated-notification"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="`$tmp.key-value`"/>
+ </record>
+ <!--Need to know which ipv version to get the plan name from the network-model.-->
+ <switch test="`$eipam-ip-block.ptnii-name`">
+ <!--If there's ptnii-name, then it's Gamma service-->
+ <outcome value='Other'>
+ <block>
+ <configure adaptor="com.att.sdnctl.sli.adaptor.ncs.ncsAdaptor" key="SNIIR" activate="true">
+ <parameter name="input.request-id" value="`$eipam-ip-block.request-id`" />
+ <parameter name="input.source" value="SDNC" />
+ <parameter name="input.ptnii-name" value="`$eipam-ip-block.ptnii-name`" />
+ <parameter name="input.ip-address" value="`$eipam-ip-block.ip-address`" />
+ <parameter name="input.mask" value="`$eipam-ip-block.prefix-length`" />
+ <outcome value="success">
+ <block>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'PENDING-ACTIVE'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="PENDING-ACTIVE" />
+ </set>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="PENDING-ACTIVE" />
+ </save>
+ <return status="success"></return>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePool">
+ <outcome value="success">
+ <block>
+ <set>
+ <parameter name="eipam-ip-block.status" value="DELETED" />
+ </set>
+ <return status="failure">
+ <parameter name="error-code" value="1000" />
+ <parameter name="error-message" value="IpBlockInstall failure and deletePool deleted in EIPAM" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value="Other">
+ <block>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET
+ status = 'ERROR',
+ dealloc_failure = 'deletePool failed in response to NCS_IP_SUBNET_INSTALL_ERROR'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'></save>
+ <set>
+ <parameter name="eipam-ip-block.status" value="NCS_IP_SUBNET_INSTALL_ERROR" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $tmp.vpe-pool.vpe-id" pfx="vpe-after">
+ <parameter name="operational-status" value="NCS_IP_SUBNET_INSTALL_ERROR" />
+ <parameter name="summary-status" value="`$aai-summary-status-message`" />
+ <parameter name="prov-status" value="PREPROV" />
+ </update>
+ <return status="failure">
+ <parameter name="error-code" value="1000" />
+ <parameter name="error-message" value="IpBlockInstall failure and deletePool failed in EIPAM, need to manually delete" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </configure>
+ </block>
+ </outcome>
+ <!--If no ptnii-name, check if VIPR or SRIOV-->
+ <outcome value=''>
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >
+ <parameter name="source" value="`toUpperCase($eipam-ip-block.plan-name)`" />
+ <parameter name="target" value="AIC_" />
+ <outcome value='false'>
+ <return status="failure">
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unknown Address Plan - not supported!" />
+ </return>
+ </outcome>
+ <outcome value='true'>
+ <block atomic='true'>
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $eipam-ip-block.plan-name and level = 2 and key_value = $tmp.level2-key-value ;"
+ pfx='tmp.eipam-pool-row'>
+ <outcome value='failure'>
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="subnet-allocated-notification"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="Failed to find this record in DB!"/>
+ </record>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unknown EIPAM pool - not found in DB!" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value="not-found">
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="subnet-allocated-notification"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="This record is not found in DB!"/>
+ </record>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Unknown EIPAM pool - not found in DB!" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <!--initial subnet should exists-->
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value and s.address_family = $tmp.version ; "
+ pfx='pfx.eipam-initial-subnet'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Initial subnet not found, cannot auto extend." />
+ </return>
+ </outcome>
+ </get-resource>
+ <!--check if new subnet already exists, possibly from previous attempt.-->
+ <get-resource
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="SELECT * from EIPAM_IP_SUBNETS s WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = $eipam-ip-block.entity-id and s.ip_address = $eipam-ip-block.ip-address ; "
+ pfx='pfx.eipam-subnet-with-same-ip'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value="not-found"></outcome>
+ </get-resource>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="l3-network"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id"
+ local-only="false"
+ pfx="aai.l3-network">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'Not found in AnAI'" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'from AnAI'" />
+ </return>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ </set>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNETS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ service_type = $pfx.eipam-initial-subnet.service-type ,
+ ip_address = $eipam-ip-block.ip-prefix ,
+ prefix_length = $eipam-ip-block.mask ,
+ plan_name = $eipam-ip-block.plan-name ,
+ status = 'PENDING_ACTIVE' ,
+ pool_id = $pfx.eipam-initial-subnet.pool-id ,
+ address_family = $pfx.eipam-initial-subnet.address-family ,
+ network_id = $pfx.eipam-initial-subnet.network-id ; "
+ force='true'
+ pfx='pfx.eipam-new-subnet'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNETS failed." />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level1-key-name ,
+ key_value = $tmp.level1-key-value ,
+ level = 1 ; "
+ force='true'
+ pfx='pfx.eipam-subnet-level1'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNET_KEYS failed." />
+ </return>
+ </outcome>
+ </save>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="INSERT EIPAM_IP_SUBNET_KEYS
+ SET
+ entity_id = $eipam-ip-block.entity-id ,
+ key_name = $tmp.level2-key-name ,
+ key_value = $tmp.level2-key-value ,
+ level = 2 ; "
+ force='true'
+ pfx='pfx.eipam-subnet-level2'>
+ <outcome value='success'></outcome>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNET_KEYS failed." />
+ </return>
+ </outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Added an entry for subnet-allocated-notification in EIPAM_IP_SUBNETS and EIPAM_IP_SUBNET_KEYS"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="`$tmp.key-value`"/>
+ </record>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id"
+ local-only="false"
+ pfx="tmp.aai-initial-subnet">
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' is Not found in AnAI'" />
+ </return>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' from AnAI'" />
+ </return>
+ </outcome>
+ </get-resource>
+ <switch test='`$aai.l3-network.subnets.subnet_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="'No subnets found in AAI for network-id=' + $pfx.eipam-initial-subnet.network-id" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='tmp.l3-network.subnet.subnet-name' value="`$aai.l3-network.network-name + '_S' + $aai.l3-network.subnets.subnet_length`" />
+ </set>
+ </outcome>
+ </switch>
+ <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">
+ <parameter name="ipAddress" value="`$eipam-ip-block.ip-prefix`" />
+ <parameter name="ipVersion" value="`tmp.version`" />
+ <parameter name="subnet" value="`$eipam-ip-block.prefix-length`" />
+ <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />
+ <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />
+ <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Failed to generate gateway addresses using IpAddressTools" />
+ </return>
+ </outcome>
+ </execute>
+ <switch test='`$tmp.aai-initial-subnet.dhcp-enabled`'>
+ <outcome value='Y'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet.dhcp-enabled' value='true' />
+ <parameter name='tmp.l3-network.subnet.dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />
+ <parameter name='tmp.l3-network.subnet.dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='N'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.l3-network.subnet.dhcp-enabled' value='false' />
+ <parameter name='tmp.l3-network.subnet.dhcp-start' value='' />
+ <parameter name='tmp.l3-network.subnet.dhcp-end' value='' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+ <!-- Create l3-network object -->
+ <parameter name="network-id" value="`$pfx.eipam-initial-subnet.network-id`" />
+ <parameter name="subnet-id" value="`$eipam-ip-block.entity-id`" />
+ <parameter name="subnet-name" value="`$tmp.l3-network.subnet.subnet-name`" />
+ <parameter name="gateway-address" value="`$tmp.return.generate.gateway-address`" />
+ <parameter name="network-start-address" value="`$eipam-ip-block.ip-prefix`" />
+ <parameter name="cidr-mask" value="`$eipam-ip-block.prefix-length`" />
+ <parameter name="ip-version" value="`$tmp.version`" />
+ <parameter name="dhcp-start" value="`$tmp.l3-network.subnet.dhcp-start`" />
+ <parameter name="dhcp-end" value="`$tmp.l3-network.subnet.dhcp-end`" />
+ <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet.dhcp-enabled`" />
+ <parameter name="orchestration-status" value="PendingCreate" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Cannot save subnet with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' in AnAI'" />
+ </return>
+ </outcome>
+ <outcome value='not-found'></outcome>
+ </save>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Added a subnetin AAI"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="`$tmp.key-value`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='subnet' />
+ <parameter name='api-action' value='add' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />
+ <parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <parameter name='ip-prefix-len' value='`$eipam-ip-block.prefix-length`' />
+ <parameter name='dns-server-address' value='0.0.0.0' />
+ <parameter name='enable-dhcp' value='`$tmp.l3-network.subnet.dhcp-enabled`' />
+ <parameter name='default-gateway' value='`$tmp.return.generate.gateway-address`' />
+ <parameter name='subnet-name' value='`$tmp.l3-network.subnet.subnet-name`' />
+ <parameter name='start' value='`$tmp.l3-network.subnet.dhcp-start`' />
+ <parameter name='end' value='`$tmp.l3-network.subnet.dhcp-end`' />
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </set>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ERROR'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+ </return>
+ </outcome>
+ </save>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id"></delete>
+ <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </save>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to create subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Added a subnet in Contrail"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="`$tmp.key-value`"/>
+ </record>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+ <parameter name="orchestration-status" value="Created" />
+ <outcome value='not-found'></outcome>
+ <outcome value='failure'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Update status to Created failed in AAI"/>
+ <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+ <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+ <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+ <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+ <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+ <parameter name="field8" value="`$eipam-ip-block.status`"/>
+ <parameter name="field9" value="`$tmp.key-value`"/>
+ </record>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ERROR'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+ </return>
+ </outcome>
+ </save>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id"></delete>
+ <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+ <parameter name='api-name' value='subnet' />
+ <parameter name='api-action' value='delete' />
+ <parameter name='resp-prefix' value='contrailResp' />
+ <parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />
+ <parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Failed to delete subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name="eipam-ip-block.status" value="ERROR" />
+ </set>
+ <return status='failure'>
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="'Cannot save subnet status to Created with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' in AnAI'" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'CREATED'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to CREATED in mysql." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to CREATED in mysql." />
+ </return>
+ </outcome>
+ </save>
+ <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while activating subnet in EIPAM." />
+ </return>
+ </outcome>
+ </execute>
+ <save
+ plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+ resource='SQL'
+ key="UPDATE EIPAM_IP_SUBNETS
+ SET status = 'ACTIVE'
+ WHERE entity_id = $eipam-ip-block.entity-id ; "
+ force='true'
+ pfx='pfx.eipam-subnet-row'>
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+ </return>
+ </outcome>
+ <outcome value='success'></outcome>
+ </save>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="subnet"
+ key="l3-network.network-id = $aai.l3-network.network-id
+ AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+ <parameter name="orchestration-status" value="Created" />
+ <outcome value='failure'>
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+ </return>
+ </outcome>
+ <outcome value="not-found">
+ <return status="failure">
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet. Subnet not found." />
+ </return>
+ </outcome>
+ </update>
+ <return status="success">
+ <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/svclogic/graph.versions b/ms/gra/gra-app/src/test/resources/svclogic/graph.versions
new file mode 100644
index 0000000..efe46f0
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/svclogic/graph.versions
@@ -0,0 +1,221 @@
+GENERIC-RESOURCE-API aai-get-aic-zone ${project.version} sync
+GENERIC-RESOURCE-API aai-get-network-instance-group ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API assign-vlan-tags ${project.version} sync
+GENERIC-RESOURCE-API auto-ip-assignment ${project.version} sync
+GENERIC-RESOURCE-API bbs-access-connectivity-network-topology-operation-create-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-access-connectivity-network-topology-operation-delete-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-access-connectivity-vnf-topology-operation-create-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-access-connectivity-vnf-topology-operation-delete-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-network-topology-operation-change-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-network-topology-operation-common-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-network-topology-operation-create-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-network-topology-operation-delete-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-vnf-topology-operation-change-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-vnf-topology-operation-common-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-vnf-topology-operation-create-huawei ${project.version} sync
+GENERIC-RESOURCE-API bbs-internet-profile-vnf-topology-operation-delete-huawei ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API connection-attachment-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API create-l3-subnet ${project.version} sync
+GENERIC-RESOURCE-API create-route-target-and-vpn-binding ${project.version} sync
+GENERIC-RESOURCE-API dci-connects-network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API dci-connects-network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API eipam-allocate-generic-subnet ${project.version} sync
+GENERIC-RESOURCE-API eipam-allocate-network-role-subnet ${project.version} sync
+GENERIC-RESOURCE-API eipam-create-generic-pool ${project.version} sync
+GENERIC-RESOURCE-API eipam-create-network-role-pool ${project.version} sync
+GENERIC-RESOURCE-API generate-FQPN ${project.version} sync
+GENERIC-RESOURCE-API generate-allottedresource-id ${project.version} sync
+GENERIC-RESOURCE-API generate-host-routes-host-route-id ${project.version} sync
+GENERIC-RESOURCE-API generate-l3network-network-id ${project.version} sync
+GENERIC-RESOURCE-API generate-panorama-name ${project.version} sync
+GENERIC-RESOURCE-API generate-subnets-subnet-id ${project.version} sync
+GENERIC-RESOURCE-API generate-unique-name ${project.version} sync
+GENERIC-RESOURCE-API generate-vpn-binding-id ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-activate ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-assign ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-deactivate ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-unassign ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API get-complex-resource-service-model ${project.version} sync
+GENERIC-RESOURCE-API get-data-from-policy ${project.version} sync
+GENERIC-RESOURCE-API get-tunnelxconn-ar ${project.version} sync
+GENERIC-RESOURCE-API get-vnf-api-parent-instance ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-composite-match-pair ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-create-composite-path ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-create-simple-path ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-populate-from-grapi ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-populate-from-vnfapi ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-simple-match-pair ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API gw-vfmodule-update ${project.version} sync
+GENERIC-RESOURCE-API manage-ipaddr-assignment ${project.version} sync
+GENERIC-RESOURCE-API manage-vni-assignment ${project.version} sync
+GENERIC-RESOURCE-API naming-policy-generate-name ${project.version} sync
+GENERIC-RESOURCE-API naming-policy-generate-unique-name ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign-automated ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign-from-preload aai-disabled sync
+GENERIC-RESOURCE-API network-topology-operation-assign-vlantagging-instancegroup ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign aai-disabled sync
+GENERIC-RESOURCE-API network-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-unassign aai-disabled sync
+GENERIC-RESOURCE-API network-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API policy-manager-create-policy ${project.version} sync
+GENERIC-RESOURCE-API policy-manager-delete-policy ${project.version} sync
+GENERIC-RESOURCE-API policy-update-notify-operation ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-get-policy ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-rollback-capacity-db ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-activate-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-activate-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-assign-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-assign-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-create-vnfcs ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-deactivate-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-deactivate-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-disable ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-enable ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-mapping-pprobe ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-mapping-vprobe ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-validation ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API preload-network-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API preload-vf-module-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API process-eipam-pools ${project.version} sync
+GENERIC-RESOURCE-API process-generic-eipam-pools ${project.version} sync
+GENERIC-RESOURCE-API query-aai-l3-network-by-network-role ${project.version} sync
+GENERIC-RESOURCE-API rollback-eipam-ip-assignment ${project.version} sync
+GENERIC-RESOURCE-API rollback-generated-names ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API self-serve-aai-pnf-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-aai-vf-module-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-aai-vnf-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-capability-param-resolution ${project.version} sync
+GENERIC-RESOURCE-API self-serve-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-mS-mac-address-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-mS-vlan-tag-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-netbox-ip-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-unassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-process-vfmodule-mapping-ra-response ${project.version} sync
+GENERIC-RESOURCE-API self-serve-process-vfmodule-template-ra-response ${project.version} sync
+GENERIC-RESOURCE-API self-serve-process-vnf-mapping-ra-response ${project.version} sync
+GENERIC-RESOURCE-API self-serve-process-vnf-template-ra-response ${project.version} sync
+GENERIC-RESOURCE-API self-serve-unresolved-composite-data ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-forking-logic ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-mdsal-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-unassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vfmodule-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vfmodule-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-forking-logic ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-mdsal-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-unassign ${project.version} sync
+GENERIC-RESOURCE-API send-so-response ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-assign aai-disabled sync
+GENERIC-RESOURCE-API service-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API validate-api-contrail-route-input ${project.version} sync
+GENERIC-RESOURCE-API validate-bbs-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-bbs-vnf-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-brg-input ${project.version} sync
+GENERIC-RESOURCE-API validate-connection-attachment-input ${project.version} sync
+GENERIC-RESOURCE-API validate-contrail-route-input ${project.version} sync
+GENERIC-RESOURCE-API validate-generic-configuration-input ${project.version} sync
+GENERIC-RESOURCE-API validate-getpathsegment-input ${project.version} sync
+GENERIC-RESOURCE-API validate-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-network-input ${project.version} sync
+GENERIC-RESOURCE-API validate-overlay-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-pnf-input ${project.version} sync
+GENERIC-RESOURCE-API validate-security-zone-input ${project.version} sync
+GENERIC-RESOURCE-API validate-service-input ${project.version} sync
+GENERIC-RESOURCE-API validate-tunnelxconn-input ${project.version} sync
+GENERIC-RESOURCE-API validate-vf-module-input ${project.version} sync
+GENERIC-RESOURCE-API validate-vnf-input ${project.version} sync
+GENERIC-RESOURCE-API vf-module-generate-heat-parameters ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-assign-rollback ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-activate aai-disabled sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-async ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-no-preload ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-preload ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-sync aai-disabled sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-deactivate aai-disabled sync
+GENERIC-RESOURCE-API vf-module-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-activate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-assign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-deactivate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-ip-addresses ${project.version} sync
+GENERIC-RESOURCE-API vnf-get-resource-request ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-activate aai-disabled sync
+GENERIC-RESOURCE-API vnf-topology-operation-assign-async ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-assign-sync aai-disabled sync
+GENERIC-RESOURCE-API vnf-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-delete ${project.version} sync
+SUBNET-API managed-network-notification ${project.version} sync
+SUBNET-API subnet-allocated-notification ${project.version} sync
diff --git a/ms/gra/gra-app/src/test/resources/testing.http b/ms/gra/gra-app/src/test/resources/testing.http
new file mode 100644
index 0000000..ae17c53
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/testing.http
@@ -0,0 +1,215 @@
+@baseUrl = http://localhost:8080
+@CONFIG_PRELOAD_URL = /config/GENERIC-RESOURCE-API:preload-information/
+@CONFIG_PRELOAD_LIST_URL = /config/GENERIC-RESOURCE-API:preload-information/GENERIC-RESOURCE-API:preload-list/
+
+### GET top level no content-type : bad-media-type
+
+GET {{baseUrl}}/restconf{{CONFIG_PRELOAD_URL}} HTTP/1.1
+Accept: application/json
+### GET top level json format
+
+GET {{baseUrl}}/restconf{{CONFIG_PRELOAD_URL}} HTTP/1.1
+Content-Type: application/json
+Accept: application/json
+
+### GET top level xmlformat : 500 error
+
+GET {{baseUrl}}/restconf{{CONFIG_PRELOAD_URL}} HTTP/1.1
+Content-Type: application/xml
+Accept: application/xml
+
+### just one entry
+
+GET {{baseUrl}}/restconf{{CONFIG_PRELOAD_LIST_URL}}/preload1/network/ HTTP/1.1
+content-type: application/json
+Accept: application/json
+
+### request XML format : 500 error
+
+GET {{baseUrl}}/restconf{{CONFIG_PRELOAD_LIST_URL}}/preload1/network/ HTTP/1.1
+Content-Type: application/xml
+Accept: application/xml
+
+
+### delete all info
+
+DELETE {{baseUrl}}/restconf{{CONFIG_PRELOAD_URL}} HTTP/1.1
+content-type: application/json
+
+### delete specific entry : 500 error
+
+DELETE {{baseUrl}}/restconf{{CONFIG_PRELOAD_LIST_URL}}/preload1/network/ HTTP/1.1
+content-type: application/json
+
+
+### add a new record preload1/network
+
+POST {{baseUrl}}/restconf{{CONFIG_PRELOAD_LIST_URL}}/preload1/network/ HTTP/1.1
+content-type: application/json
+
+{
+ "preload-id": "preload1",
+ "preload-type": "network",
+ "preload-data": {
+ "preload-network-topology-information": {
+ "host-routes": [
+ {
+ "next-hop": "10.1.12.1",
+ "route-prefix": "12"
+ }
+ ],
+ "is-external-network": false,
+ "is-provider-network": false,
+ "is-shared-network": false,
+ "network-policy": [
+ {
+ "network-policy-fqdn": "policy-sdnc.onap.org",
+ "network-policy-id": "123"
+ }
+ ],
+ "network-topology-identifier-structure": {
+ "eipam-v4-address-plan": "plan9",
+ "eipam-v6-address-plan": "plan9v6",
+ "is-trunked": true,
+ "network-id": "preload1",
+ "network-instance-group-id": "abc123",
+ "network-name": "syfy",
+ "network-role": "secret",
+ "network-technology": "soupcan",
+ "network-type": "fake",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "skynet",
+ "network-role": "master",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "le0"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "seg1"
+ },
+ "physical-network-name": "skynet",
+ "route-table-reference": [
+ {
+ "route-table-reference-fqdn": "sky.net",
+ "route-table-reference-id": "ref1"
+ }
+ ],
+ "subnets": [
+ {
+ "addr-from-start": "Y",
+ "cidr-mask": "255.255.0.0",
+ "dhcp-enabled": "Y",
+ "dhcp-end-address": "10.1.2.254",
+ "dhcp-start-address": "10.1.2.1",
+ "gateway-address": "10.1.2.255",
+ "ip-version": "ipv4",
+ "start-address": "10.1.2.1",
+ "subnet-name": "subnet1",
+ "subnet-role": "puppies",
+ "subnet-sequence": 0
+ }
+ ],
+ "vpn-bindings": [
+ {
+ "aic-zone": "zone1",
+ "global-route-target": "string",
+ "route-target-role": "string",
+ "vpn-binding-id": "string",
+ "vpn-name": "string"
+ }
+ ]
+ }
+ }
+}
+
+###
+POST http://localhost:8080/restconf/config/GENERIC-RESOURCE-API:preload-information/GENERIC-RESOURCE-API:preload-list/preload1/network/
+content-type: application/xml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<preload-list>
+ <preload-data>
+ <preload-network-topology-information>
+ <host-routes>
+ <element>
+ <next-hop>10.1.12.1</next-hop>
+ <route-prefix>12</route-prefix>
+ </element>
+ </host-routes>
+ <is-external-network>false</is-external-network>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>false</is-shared-network>
+ <network-policy>
+ <element>
+ <network-policy-fqdn>policy-sdnc.onap.org</network-policy-fqdn>
+ <network-policy-id>123</network-policy-id>
+ </element>
+ </network-policy>
+ <network-topology-identifier-structure>
+ <eipam-v4-address-plan>plan9</eipam-v4-address-plan>
+ <eipam-v6-address-plan>plan9v6</eipam-v6-address-plan>
+ <is-trunked>true</is-trunked>
+ <network-id>preload1</network-id>
+ <network-instance-group-id>abc123</network-instance-group-id>
+ <network-name>syfy</network-name>
+ <network-role>secret</network-role>
+ <network-technology>soupcan</network-technology>
+ <network-type>fake</network-type>
+ <related-networks>
+ <related-network>
+ <element>
+ <network-id>skynet</network-id>
+ <network-role>master</network-role>
+ <vlan-tags>
+ <is-private>true</is-private>
+ <lower-tag-id>0</lower-tag-id>
+ <upper-tag-id>0</upper-tag-id>
+ <vlan-interface>le0</vlan-interface>
+ </vlan-tags>
+ </element>
+ </related-network>
+ </related-networks>
+ <segmentation-id>seg1</segmentation-id>
+ </network-topology-identifier-structure>
+ <physical-network-name>skynet</physical-network-name>
+ <route-table-reference>
+ <element>
+ <route-table-reference-fqdn>sky.net</route-table-reference-fqdn>
+ <route-table-reference-id>ref1</route-table-reference-id>
+ </element>
+ </route-table-reference>
+ <subnets>
+ <element>
+ <addr-from-start>Y</addr-from-start>
+ <cidr-mask>255.255.0.0</cidr-mask>
+ <dhcp-enabled>Y</dhcp-enabled>
+ <dhcp-end-address>10.1.2.254</dhcp-end-address>
+ <dhcp-start-address>10.1.2.1</dhcp-start-address>
+ <gateway-address>10.1.2.255</gateway-address>
+ <ip-version>ipv4</ip-version>
+ <start-address>10.1.2.1</start-address>
+ <subnet-name>subnet1</subnet-name>
+ <subnet-role>puppies</subnet-role>
+ <subnet-sequence>0</subnet-sequence>
+ </element>
+ </subnets>
+ <vpn-bindings>
+ <element>
+ <aic-zone>zone1</aic-zone>
+ <global-route-target>string</global-route-target>
+ <route-target-role>string</route-target-role>
+ <vpn-binding-id>string</vpn-binding-id>
+ <vpn-name>string</vpn-name>
+ </element>
+ </vpn-bindings>
+ </preload-network-topology-information>
+ </preload-data>
+ <preload-id>preload1</preload-id>
+ <preload-type>network</preload-type>
+</preload-list> \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vf-module-assign-rpc.json b/ms/gra/gra-app/src/test/resources/vf-module-assign-rpc.json
new file mode 100644
index 0000000..11def71
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vf-module-assign-rpc.json
@@ -0,0 +1,56 @@
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVfModuleInstance",
+ "source" : "MSO",
+ "request-id" : "fa988b60-ebd5-4d0b-9b7c-3073c365a9ed"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "767f2d08-e022-4000-97c2-61c002ebc740",
+ "svc-action" : "assign"
+ },
+ "service-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578-SVC",
+ "model-version" : "3.0",
+ "model-uuid" : "20b35ef0-956f-4e1b-bf75-f51a2e7c53db",
+ "model-invariant-uuid" : "5c905067-7b5a-457a-9f25-7a83a04b2a6d"
+ },
+ "subscription-service-type" : "Mobility",
+ "service-id" : "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id" : "cust123",
+ "service-instance-id" : "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "0e6a57c1-abd7-436b-963f-1ad051cb3c40",
+ "model-uuid" : "795f1014-7fe5-4c4f-a0ca-dc6ebd2185ab",
+ "model-invariant-uuid" : "6265446b-58a6-4689-860f-78bada0faf2c"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "zrdm61asmsf01_base",
+ "vf-module-input-parameters" : { }
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578",
+ "model-version" : "3.0",
+ "model-customization-uuid" : "0f229dd7-36ba-44ff-b7fb-327721dcb8d2",
+ "model-uuid" : "7b44be32-b39f-4a3b-8650-ece4e75fd094",
+ "model-invariant-uuid" : "0017cd47-7f1b-49fb-874d-6add86ececb1"
+ },
+ "vnf-id" : "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name" : "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "vnf-type" : "service-nginx-ingress-1/nginx-ingress-1 0"
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vf-module-unassign-rpc.json b/ms/gra/gra-app/src/test/resources/vf-module-unassign-rpc.json
new file mode 100644
index 0000000..4d1695d
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vf-module-unassign-rpc.json
@@ -0,0 +1,56 @@
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "DeleteVfModuleInstance",
+ "source" : "MSO",
+ "request-id" : "fa988b60-ebd5-4d0b-9b7c-3073c365a9ed"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "767f2d08-e022-4000-97c2-61c002ebc740",
+ "svc-action" : "unassign"
+ },
+ "service-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578-SVC",
+ "model-version" : "3.0",
+ "model-uuid" : "20b35ef0-956f-4e1b-bf75-f51a2e7c53db",
+ "model-invariant-uuid" : "5c905067-7b5a-457a-9f25-7a83a04b2a6d"
+ },
+ "subscription-service-type" : "Mobility",
+ "service-id" : "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id" : "cust123",
+ "service-instance-id" : "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "79198077-e742-4d9f-8ef5-4bdc10c90def",
+ "model-uuid" : "795f1014-7fe5-4c4f-a0ca-dc6ebd2185ab",
+ "model-invariant-uuid" : "6265446b-58a6-4689-860f-78bada0faf2c"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "zrdm61asmsf01_base",
+ "vf-module-input-parameters" : { }
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578",
+ "model-version" : "3.0",
+ "model-customization-uuid" : "0f229dd7-36ba-44ff-b7fb-327721dcb8d2",
+ "model-uuid" : "7b44be32-b39f-4a3b-8650-ece4e75fd094",
+ "model-invariant-uuid" : "0017cd47-7f1b-49fb-874d-6add86ececb1"
+ },
+ "vnf-id" : "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name" : "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "vnf-type" : "service-nginx-ingress-1/nginx-ingress-1 0"
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-assign-rpc.json b/ms/gra/gra-app/src/test/resources/vnf-assign-rpc.json
new file mode 100644
index 0000000..b0f6817
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-assign-rpc.json
@@ -0,0 +1,85 @@
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateVnfInstance",
+ "request-id": "req123",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "svcreq123"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-name": "vcpesvc_vbng_0412a",
+ "model-version": "3.0",
+ "model-uuid": "12eb33fa-b221-4d87-939c-d808b5799a7c",
+ "model-invariant-uuid": "ead151e2-e18a-44fc-b6ac-3ae3d819dcd6"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "vcpevsp_vgmux_0412 ",
+ "model-version" : "1.0",
+ "model-customization-uuid" : "5724fcc8-2ae2-45ce-8d44-795092b85dee",
+ "model-uuid" : "ba3b8981-9a9c-4945-92aa-486234ec321f",
+ "model-invariant-uuid" : "b3dc6465-942c-42af-8464-2bf85b6e504b"
+ },
+ "vnf-id" : "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name" : "myVnf",
+ "vnf-type" : "router"
+ },
+ "vnf-request-input" : {
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "cloud-owner": "k8sCloudOwner",
+ "tenant" : "k8s_tenant_1",
+ "vnf-input-parameters": {
+ "param": [
+ {
+ "name": "test-param",
+ "resource-resolution-data": {
+ "capability-name": "myCapability",
+ "payload": "myPayload",
+ "resource-key": [
+ {
+ "name": "resource1",
+ "value": "hello_world"
+ }
+ ],
+ "status": "Pending"
+ },
+ "value": "HiThere"
+ }
+ ]
+ },
+ "vnf-name" : "myVnf",
+ "vnf-network-instance-group-ids": [
+ {
+ "vnf-network-instance-group-id" : "netgrp123"
+ }
+ ],
+ "vnf-networks" : {
+ "vnf-network" : [
+ {
+ "contrail-network-fqdn" : "contrail.onap",
+ "is-trunked" : "true",
+ "network-id" : "net123",
+ "network-name" : "myNetwork",
+ "network-role" : "lan",
+ "neutron-id" : "neutron1234",
+ "segmentation-id" : "seg123"
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/ms/gra/gra-app/src/test/resources/vnf-data.json b/ms/gra/gra-app/src/test/resources/vnf-data.json
new file mode 100644
index 0000000..1250ade
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-data.json
@@ -0,0 +1,601 @@
+{
+ "vnf-data": {
+ "request-information": {
+ "notification-url": "https://dev.null",
+ "order-number": "Order-123",
+ "order-version": "Order-v22",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "a44e8401-2c62-47df-98be-9a09f6cbd996",
+ "source": "unit-test"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "https://dev.null",
+ "svc-request-id": "9c06a7c6-be3a-4530-bdd8-c65b58f123a5"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "unit-test",
+ "subscription-service-type": "unit-test"
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-data": {
+ "request-information": {
+ "order-number": "Order-123",
+ "order-version": "Order-v22",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "a44e8401-2c62-47df-98be-9a09f6cbd996",
+ "source": "unit-test"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "9c06a7c6-be3a-4530-bdd8-c65b58f123a5"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "service-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "service-instance-id": "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "subscriber-name": "unit-test",
+ "subscription-service-type": "unit-test"
+ },
+ "vf-module-information": {
+ "from-preload": true,
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d",
+ "vf-module-type": "some-vf-module-type"
+ },
+ "vf-module-level-oper-status": {
+ "create-timestamp": "string",
+ "last-action": "CreateNetworkInstance",
+ "last-order-status": "Active",
+ "last-rpc-action": "assign",
+ "last-svc-request-id": "9c06a7c6-be3a-4530-bdd8-c65b58f123a5",
+ "modify-timestamp": "string",
+ "order-status": "Active"
+ },
+ "vf-module-request-input": {
+ "aic-clli": "string",
+ "aic-cloud-region": "test-region",
+ "cloud-owner": "unit-test",
+ "request-version": "string",
+ "tenant": "string",
+ "vf-module-input-parameters": {
+ "param": [
+ {
+ "name": "string",
+ "resource-resolution-data": {
+ "capability-name": "string",
+ "payload": "string",
+ "resource-key": [
+ {
+ "name": "string",
+ "value": "string"
+ }
+ ],
+ "status": "string"
+ },
+ "value": "string"
+ }
+ ]
+ },
+ "vf-module-name": "string"
+ },
+ "vf-module-topology": {
+ "aic-clli": "string",
+ "aic-cloud-region": "test-region",
+ "cloud-owner": "unit-test",
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "string",
+ "vf-module-assignments": {
+ "dhcp-subnet-assignments": {
+ "dhcp-subnet-assignment": [
+ {
+ "ip-version": "string",
+ "network-role": "test-network-role",
+ "neutron-subnet-id": "string"
+ }
+ ]
+ },
+ "vf-module-status": "string",
+ "vlan-vnfc-instance-groups": {
+ "vlan-vnfc-instance-group": [
+ {
+ "instance-group-function": "string",
+ "instance-group-id": "string",
+ "vnf-id": "2a3bfc93-cd4c-4845-8919-434b2d999ada",
+ "vnfcs": {
+ "vnfc": [
+ {
+ "vnfc-name": "string",
+ "vnic-groups": {
+ "vnic-group": [
+ {
+ "network-instance-group-function": "string",
+ "vlan-assignment-policy-name": "string",
+ "vlan-common-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "string",
+ "ipv6-address": "string",
+ "vipv4-address": "string",
+ "vipv6-address": "string"
+ }
+ },
+ "vlan-tag-index-next": 0,
+ "vlan-vnics": {
+ "vlan-vnic": [
+ {
+ "vnic-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "test-network-role",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnic-interface-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vms": {
+ "vm": [
+ {
+ "nfc-naming-code": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "vm-count": 0,
+ "vm-names": {
+ "vm-name": [
+ "string"
+ ],
+ "vnfc-names": [
+ {
+ "vnfc-name": "string",
+ "vnfc-networks": {
+ "vnfc-network-data": [
+ {
+ "connection-point": {
+ "connection-point-id": "string",
+ "port-id": "string",
+ "vlan-data": [
+ {
+ "vlan-role": "string",
+ "vlan-tag-description": "string",
+ "vlan-tag-id": "string",
+ "vlan-uuid": "string"
+ }
+ ]
+ },
+ "vnfc-network-role": "string",
+ "vnfc-ports": {
+ "vnfc-port": [
+ {
+ "common-sub-interface-role": "string",
+ "vnfc-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "test-network-role",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnfc-subnet": [
+ {
+ "vnfc-ip-assignments": [
+ {
+ "vnfc-address-family": "ipv4",
+ "vnfc-subnet-dhcp": "Y",
+ "vnfc-subnet-ip": [
+ {
+ "ip-type": "FIXED",
+ "vnfc-client-key": "string",
+ "vnfc-ip-address": "string"
+ }
+ ],
+ "vnfc-subnet-ip-count": 0
+ }
+ ],
+ "vnfc-subnet-role": "string"
+ }
+ ],
+ "vnfc-type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vm-networks": {
+ "vm-network": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "interface-route-prefixes": {
+ "interface-route-prefix": [
+ "string"
+ ]
+ },
+ "is-trunked": true,
+ "mac-addresses": {
+ "mac-address": [
+ "string"
+ ]
+ },
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-role": "test-network-role",
+ "network-role-tag": "string",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-role": "test-network-role",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "sriov-parameters": {
+ "application-tags": {
+ "c-tags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "ctags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "s-tags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ },
+ "stags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ }
+ },
+ "heat-vlan-filters": {
+ "heat-vlan-filter": [
+ "string"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "vm-type": "string",
+ "vm-type-tag": "string"
+ }
+ ]
+ }
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "string",
+ "resource-resolution-data": {
+ "capability-name": "string",
+ "payload": "string",
+ "resource-key": [
+ {
+ "name": "string",
+ "value": "string"
+ }
+ ],
+ "status": "string"
+ },
+ "value": "string"
+ }
+ ]
+ },
+ "vf-module-topology-identifier": {
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d",
+ "vf-module-name": "some-vf-module-name",
+ "vf-module-type": "some-vf-module-type"
+ }
+ },
+ "vnf-information": {
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name": "mytestvnf",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ }
+ },
+ "vf-module-id": "45841173-3729-4a1d-a811-a3bde399e22d"
+ }
+ ]
+ },
+ "vnf-information": {
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name": "mytestvnf",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ },
+ "vnf-level-oper-status": {
+ "create-timestamp": "string",
+ "last-action": "CreateNetworkInstance",
+ "last-order-status": "Active",
+ "last-rpc-action": "assign",
+ "last-svc-request-id": "9c06a7c6-be3a-4530-bdd8-c65b58f123a5",
+ "modify-timestamp": "string",
+ "order-status": "Active"
+ },
+ "vnf-request-input": {
+ "aic-clli": "string",
+ "aic-cloud-region": "test-region",
+ "cloud-owner": "unit-test",
+ "request-version": "string",
+ "tenant": "string",
+ "vnf-name": "mytestvnf",
+ "vnf-networks": {
+ "vnf-network": [
+ {
+ "contrail-network-fqdn": "string",
+ "is-trunked": true,
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-name": "test-network-name",
+ "network-role": "test-network-role",
+ "neutron-id": "812562dd-9d91-4ba6-9c3e-e52bf1cd4cc6",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-role": "test-network-role",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "subnets-data": {
+ "subnet-data": [
+ {
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "network-start-address": "string",
+ "sdnc-subnet-id": "string",
+ "subnet-id": "string",
+ "subnet-name": "string",
+ "subnet-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "vnf-topology": {
+ "aic-clli": "string",
+ "aic-cloud-region": "test-region",
+ "cloud-owner": "unit-test",
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "string",
+ "vnf-resource-assignments": {
+ "availability-zones": {
+ "availability-zone": [
+ "string"
+ ],
+ "max-count": 0
+ },
+ "vnf-networks": {
+ "vnf-network": [
+ {
+ "contrail-network-fqdn": "string",
+ "is-trunked": true,
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-name": "test-network-name",
+ "network-role": "test-network-role",
+ "neutron-id": "812562dd-9d91-4ba6-9c3e-e52bf1cd4cc6",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-role": "test-network-role",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "subnets-data": {
+ "subnet-data": [
+ {
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "network-start-address": "string",
+ "sdnc-subnet-id": "string",
+ "subnet-id": "string",
+ "subnet-name": "string",
+ "subnet-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnf-status": "string"
+ },
+ "vnf-topology-identifier-structure": {
+ "nf-code": "string",
+ "nf-function": "string",
+ "nf-role": "string",
+ "nf-type": "string",
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name": "mytestvnf",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ }
+ }
+ },
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4"
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-expected.json b/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-expected.json
new file mode 100644
index 0000000..719c4dc
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-expected.json
@@ -0,0 +1 @@
+{"output":{"vnf-get-resource-response-information":{"service-instance-id":"service9","service-instance-name":"service-name-9","vnf":[{"param":[{"name":"vnf_param_1","resource-resolution-data":{"capability-name":"param-capability","status":"SUCCESS"},"value":"vnf_value_1"},{"name":"vnf_param_2","resource-resolution-data":{"capability-name":"","status":""},"value":"vnf_value_2"}],"vnf-id":"vnf-9","vf-module":[{"param":[{"name":"param1","resource-resolution-data":{},"value":"param_value_1"},{"name":"param2","resource-resolution-data":{"resource-key":[{"name":"key1","value":"key_value_1"},{"name":"key2","value":"key_value_2"}]},"value":"param_value_2"},{"name":"param3","resource-resolution-data":{},"value":"param_value3"},{"name":"mob1_names","resource-resolution-data":{},"value":""},{"name":"mob1_role1_public_vlans","resource-resolution-data":{},"value":"4000"}],"vf-module-id":"vf-module-9"}],"vnf-name":""}]}}} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-rpc.json b/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-rpc.json
new file mode 100644
index 0000000..7438deb
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-get-resource-request-rpc.json
@@ -0,0 +1,15 @@
+{
+ "input": {
+ "sdnc-request-header": {
+ "svc-request-id": "id-0002",
+ "svc-action": "assign"
+ },
+ "request-information": {
+ "request-id": "id-2006-2",
+ "source": "local-vm"
+ },
+ "service-information": {
+ "service-instance-id": "service9"
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-level-oper-status.json b/ms/gra/gra-app/src/test/resources/vnf-level-oper-status.json
new file mode 100644
index 0000000..1778cab
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-level-oper-status.json
@@ -0,0 +1,11 @@
+{
+ "vnf-level-oper-status": {
+ "create-timestamp": "string",
+ "last-action": "CreateNetworkInstance",
+ "last-order-status": "Active",
+ "last-rpc-action": "assign",
+ "last-svc-request-id": "9c06a7c6-be3a-4530-bdd8-c65b58f123a5",
+ "modify-timestamp": "string",
+ "order-status": "Active"
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-onap-model-info.json b/ms/gra/gra-app/src/test/resources/vnf-onap-model-info.json
new file mode 100644
index 0000000..d44dc49
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-onap-model-info.json
@@ -0,0 +1,9 @@
+{
+ "onap-model-information": {
+ "model-customization-uuid": "602c6bcc-6cfa-41cb-a8a7-968b38d5935f",
+ "model-invariant-uuid": "bdb4f943-c9be-4742-b976-a34607f3687e",
+ "model-name": "SMSF-NC2-578",
+ "model-uuid": "86c76b5d-fa8d-4034-b79a-1cc4326021a9",
+ "model-version": "3.0"
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-vnf-networks-network-role.json b/ms/gra/gra-app/src/test/resources/vnf-vnf-networks-network-role.json
new file mode 100644
index 0000000..d435c4a
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-vnf-networks-network-role.json
@@ -0,0 +1,34 @@
+{
+ "contrail-network-fqdn": "string",
+ "is-trunked": true,
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-name": "test-network-name",
+ "network-role": "test-network-role",
+ "neutron-id": "812562dd-9d91-4ba6-9c3e-e52bf1cd4cc6",
+ "related-networks": {
+ "related-network": [{
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-role": "test-network-role",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }]
+ },
+ "segmentation-id": "string",
+ "subnets-data": {
+ "subnet-data": [{
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "network-start-address": "string",
+ "sdnc-subnet-id": "string",
+ "subnet-id": "string",
+ "subnet-name": "string",
+ "subnet-role": "string"
+ }]
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-app/src/test/resources/vnf-vnf-networks.json b/ms/gra/gra-app/src/test/resources/vnf-vnf-networks.json
new file mode 100644
index 0000000..3f73cba
--- /dev/null
+++ b/ms/gra/gra-app/src/test/resources/vnf-vnf-networks.json
@@ -0,0 +1,38 @@
+{
+ "vnf-networks": {
+ "vnf-network": [{
+ "contrail-network-fqdn": "string",
+ "is-trunked": true,
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-name": "test-network-name",
+ "network-role": "test-network-role",
+ "neutron-id": "812562dd-9d91-4ba6-9c3e-e52bf1cd4cc6",
+ "related-networks": {
+ "related-network": [{
+ "network-id": "69f09279-8af1-4475-83cf-7e357c579dbf",
+ "network-role": "test-network-role",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }]
+ },
+ "segmentation-id": "string",
+ "subnets-data": {
+ "subnet-data": [{
+ "cidr-mask": "string",
+ "dhcp-enabled": "Y",
+ "gateway-address": "string",
+ "ip-version": "string",
+ "network-start-address": "string",
+ "sdnc-subnet-id": "string",
+ "subnet-id": "string",
+ "subnet-name": "string",
+ "subnet-role": "string"
+ }]
+ }
+ }]
+ }
+} \ No newline at end of file
diff --git a/ms/gra/gra-docker/pom.xml b/ms/gra/gra-docker/pom.xml
new file mode 100644
index 0000000..af9b80c
--- /dev/null
+++ b/ms/gra/gra-docker/pom.xml
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.sdnc.apps</groupId>
+ <artifactId>gra</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.onap.sdnc.apps</groupId>
+ <artifactId>gra-docker</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <name>sdnc-apps :: ms :: gra :: ${project.artifactId}</name>
+ <description>Generic Resource API docker creation</description>
+ <url>http://wiki.onap.org</url>
+
+ <properties>
+ <base.image.name>onap/ccsdk-alpine-j11-image</base.image.name>
+ <image.name>onap/sdnc-gra-image</image.name>
+ <ccsdk.project.version>${project.version}</ccsdk.project.version>
+ <ccsdk.build.timestamp>${maven.build.timestamp}</ccsdk.build.timestamp>
+ <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+ <sdnc.gra.jar>gra-app-${project.version}.jar</sdnc.gra.jar>
+ <onap.truststore>truststoreONAPall.jks</onap.truststore>
+ <docker.push.phase>deploy</docker.push.phase>
+ <docker.autoCreateCustomNetworks>true</docker.autoCreateCustomNetworks>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>gra-app</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.groovy.maven</groupId>
+ <artifactId>gmaven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${basedir}/../../../TagVersion.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.10</version>
+
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <phase>process-resources</phase>
+ <configuration>
+ <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>${project.build.directory}/docker-stage/opt/onap/sdnc/lib</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <useRepositoryLayout>false</useRepositoryLayout>
+ <addParentPoms>false</addParentPoms>
+ <copyPom>false</copyPom>
+ </configuration>
+ </execution>
+ <execution>
+ <id>unpack dgs</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc</outputDirectory>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.onap.sdnc.oam</groupId>
+ <artifactId>platform-logic-installer</artifactId>
+ <version>${sdnc.oam.version}</version>
+ <type>zip</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <id>copy-dockerfile</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals> <!-- here the phase you need -->
+ <phase>initialize</phase>
+ <configuration>
+ <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/docker</directory>
+ <includes>
+ <include>Dockerfile</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-config</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals> <!-- here the phase you need -->
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/config</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>*.properties</include>
+ <include>*.props</include>
+ <include>*.sql</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-jks</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals> <!-- here the phase you need -->
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/config</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>*.jks</include>
+ </includes>
+ <filtering>false</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-script</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals> <!-- here the phase you need -->
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/bin</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>*.sh</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <skipITs>false</skipITs>
+ <environmentVariables>
+ <GRA_PORT>${gra.port}</GRA_PORT>
+ </environmentVariables>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>0.28.0</version>
+ <inherited>false</inherited>
+ <configuration>
+ <images>
+ <image>
+ <name>${image.name}</name>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+ <dockerFile>Dockerfile</dockerFile>
+ <tags>
+ <tag>${project.docker.latestminortag.version}</tag>
+ <tag>${project.docker.latestfulltag.version}</tag>
+ <tag>${project.docker.latesttagtimestamp.version}</tag>
+ </tags>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <executions>
+ <execution>
+ <id>generate-images</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>start-it-instance</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>start</goal>
+ </goals>
+ <configuration>
+ <images>
+ <image>
+ <name>mariadb:10.5</name>
+ <alias>gradb</alias>
+ <run>
+ <env>
+ <MYSQL_ROOT_PASSWORD>${gratest.mysql.root.password}</MYSQL_ROOT_PASSWORD>
+ <MYSQL_USER>${gratest.mysql.user}</MYSQL_USER>
+ <MYSQL_PASSWORD>${gratest.mysql.password}</MYSQL_PASSWORD>
+ <MYSQL_DATABASE>${gratest.mysql.database}</MYSQL_DATABASE>
+ </env>
+ <network>
+ <mode>custom</mode>
+ <name>gra</name>
+ <alias>dbhost</alias>
+ </network>
+ <ports>
+ <port>gradb.port:3306</port>
+ </ports>
+ <log>
+ <enabled>true</enabled>
+ </log>
+ </run>
+ </image>
+ <image>
+ <name>${image.name}:${project.docker.latesttagtimestamp.version}</name>
+ <alias>gra-container</alias>
+ <run>
+ <env>
+ <MYSQL_ROOT_PASSWORD>${gratest.mysql.root.password}</MYSQL_ROOT_PASSWORD>
+ <MYSQL_DB_HOST>dbhost</MYSQL_DB_HOST>
+ <MYSQL_USER>${gratest.mysql.user}</MYSQL_USER>
+ <MYSQL_PASSWORD>${gratest.mysql.password}</MYSQL_PASSWORD>
+ <MYSQL_DATABASE>${gratest.mysql.database}</MYSQL_DATABASE>
+ <LOG_LEVEL>INFO</LOG_LEVEL>
+ <SDNC_CONFIG_DIR>/opt/onap/sdnc/config</SDNC_CONFIG_DIR>
+ </env>
+ <dependsOn>
+ <container>gradb</container>
+ </dependsOn>
+ <network>
+ <mode>custom</mode>
+ <name>gra</name>
+ <alias>gra</alias>
+ </network>
+ <ports>
+ <port>gra.port:8080</port>
+ </ports>
+ <wait>
+ <log>Started GenericResourceMsApp</log>
+ <time>240000</time>
+ </wait>
+ <log>
+ <enabled>true</enabled>
+ </log>
+ </run>
+ </image>
+ </images>
+ </configuration>
+ </execution>
+ <execution>
+ <id>stop-it-instance</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>stop</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>push-images</id>
+ <phase>${docker.push.phase}</phase>
+ <goals>
+ <goal>build</goal>
+ <goal>push</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/ms/gra/gra-docker/src/main/dc/docker-compose.yaml b/ms/gra/gra-docker/src/main/dc/docker-compose.yaml
new file mode 100644
index 0000000..37a5807
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/dc/docker-compose.yaml
@@ -0,0 +1,80 @@
+version: '2.1'
+
+services:
+ db:
+ image: mariadb:10.5
+ container_name: gra_db
+ ports:
+ - "13306:3306"
+ environment:
+ - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
+ - MYSQL_ROOT_HOST=%
+ - MYSQL_USER=${MYSQL_USER}
+ - MYSQL_PASSWORD=${MYSQL_PASSWORD}
+ - MYSQL_DATABASE=${MYSQL_DATABASE}
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+
+
+ gra:
+ image: onap/sdnc-gra-image:latest
+ depends_on:
+ - db
+ container_name: gra_controller
+ ports:
+ - "8181:8080"
+ - "8443:8443"
+ links:
+ - db:dbhost
+ environment:
+ - MYSQL_DB_HOST=dbhost
+ - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
+ - MYSQL_USER=${MYSQL_USER}
+ - MYSQL_PASSWORD=${MYSQL_PASSWORD}
+ - MYSQL_DATABASE=${MYSQL_DATABASE}
+ - SDNC_CONFIG_DIR=/opt/onap/sdnc/config
+ - LOG_LEVEL=INFO
+ - TRUSTSTORE_PASSWORD=changeit
+ - CACERT_PASSWORD=changeit
+ - SDNC_CERT_DIR=/opt/onap/sdnc/config
+ - JAVA_SECURITY_DIR=/usr/lib/jvm/default-jvm/jre/lib/security
+ - TRUSTSTORE=truststoreONAPall.jks
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
+ extra_hosts:
+ aaf-onap-test.osaaf.org: 10.12.5.145
+
+ dgbuilder:
+ image: onap/ccsdk-dgbuilder-image:latest
+ depends_on:
+ - db
+ container_name: gra_dgbuilder
+ entrypoint:
+ - "/bin/bash"
+ - "-c"
+ - "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"
+ ports:
+ - "3200:3100"
+ volumes:
+ - ${HOME}/gerrit/sdnc/oam/platform-logic:/opt/onap/ccsdk/platform-logic
+ links:
+ - db:dbhost
+ - db:sdnctldb01
+ - db:sdnctldb02
+ environment:
+ - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
+ - SDNC_CONFIG_DIR=/opt/onap/ccsdk/data/properties
+ - MYSQL_USER=${MYSQL_USER}
+ - MYSQL_PASSWORD=${MYSQL_PASSWORD}
+ - MYSQL_DATABASE=${MYSQL_DATABASE}
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "30m"
+ max-file: "5"
diff --git a/ms/gra/gra-docker/src/main/docker/Dockerfile b/ms/gra/gra-docker/src/main/docker/Dockerfile
new file mode 100644
index 0000000..37c2ee6
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/docker/Dockerfile
@@ -0,0 +1,52 @@
+# Prepare stage for multistage image build
+## START OF STAGE0 ##
+FROM @base.image.name@:@ccsdk.docker.version@ AS stage0
+
+ENV LOG_PATH /var/log/onap/sdnc
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/config
+ENV TRUSTSTORE @onap.truststore@
+ENV JAVA_SECURITY_DIR /opt/java/openjdk/lib/security
+USER root
+
+# copy deliverables to opt
+COPY opt /opt
+
+# Install ONAP certificates
+RUN keytool -importkeystore -srckeystore ${SDNC_CONFIG_DIR}/${TRUSTSTORE} -srcstorepass changeit -destkeystore ${JAVA_SECURITY_DIR}/cacerts -deststorepass changeit -noprompt
+
+## END OF STAGE0 ##
+
+
+FROM @base.image.name@:@ccsdk.docker.version@
+
+MAINTAINER SDNC Team (onap-sdnc@lists.onap.org)
+
+ENV PROJECT_VERSION @project.version@
+ENV SDNC_HOME /opt/onap/sdnc
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/config
+ENV GRA_JAR @sdnc.gra.jar@
+ENV SVCLOGIC_PROPERTIES /opt/onap/sdnc/config/svclogic.properties
+ENV SVCLOGIC_DIR /opt/onap/sdnc/svclogic/graphs
+ENV LOG_PATH /var/log/onap/sdnc
+
+USER root
+
+# Install sudo and IP utilities
+RUN apk update && apk --no-cache add sudo iputils openssl
+
+# Enable wheel group
+RUN sed -e 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' -i /etc/sudoers
+
+# Create sdnc user
+RUN addgroup -S sdnc && adduser -S sdnc -G sdnc
+RUN addgroup sdnc wheel
+
+COPY --from=stage0 --chown=sdnc:sdnc /opt /opt
+RUN mkdir -p ${LOG_PATH} && chown sdnc:sdnc ${LOG_PATH}
+RUN chmod +x ${SDNC_HOME}/bin/*.sh
+
+
+USER sdnc
+WORKDIR ${SDNC_HOME}
+ENTRYPOINT /opt/onap/sdnc/bin/startGra.sh
+EXPOSE 8443 8080
diff --git a/ms/gra/gra-docker/src/main/resources/application.properties b/ms/gra/gra-docker/src/main/resources/application.properties
new file mode 100644
index 0000000..2be250b
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/application.properties
@@ -0,0 +1,24 @@
+
+springfox.documentation.swagger.v2.path=/api-docs
+server.servlet.context-path=/restconf
+server.port=8080
+spring.jackson.date-format=org.onap.sdnc.apps.ms.gra.swagger.RFC3339DateFormat
+spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
+logging.level.com.att=${LOG_LEVEL}
+logging.level.org.onap=${LOG_LEVEL}
+spring.datasource.url=jdbc:mariadb://${MYSQL_DB_HOST}:3306/${MYSQL_DATABASE}
+spring.datasource.hikari.data-source-properties.useUnicode=true
+spring.datasource.hikari.data-source-properties.characterEncoding=UTF-8
+spring.datasource.username=${MYSQL_USER}
+spring.datasource.password=${MYSQL_PASSWORD}
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.datasource.platform=mysql
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.default_schema=${MYSQL_DATABASE}
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+# spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+
+spring.jpa.database=mysql
diff --git a/ms/gra/gra-docker/src/main/resources/data-demo.sql b/ms/gra/gra-docker/src/main/resources/data-demo.sql
new file mode 100644
index 0000000..763d0cb
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/data-demo.sql
@@ -0,0 +1,1396 @@
+-- MySQL dump 10.13 Distrib 5.6.50, for Linux (x86_64)
+--
+-- Host: localhost Database: sdnctl
+-- ------------------------------------------------------
+-- Server version 5.6.50
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping data for table `ALLOTTED_RESOURCE_MODEL`
+--
+
+LOCK TABLES `ALLOTTED_RESOURCE_MODEL` WRITE;
+/*!40000 ALTER TABLE `ALLOTTED_RESOURCE_MODEL` DISABLE KEYS */;
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('0ac79616-4f69-4936-8f31-5ce982282be2','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0',NULL,NULL,NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('1b8908b1-0af7-4fa2-980d-a43bc85ef8f5','null','176f26ba-9bf8-46b6-b54d-53cd0c14183d','d848e8a2-5360-445a-b98d-6f3d2a787dc5','1.0',NULL,'Y',NULL,'TunnelXConn','TunnelXConn',NULL,NULL);
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('1e7a8782-7bf6-4726-a26e-a5e4eca6cba1','null','5255679f-0d50-49e3-82f1-e51bca8cf6d1','f6d6767d-c015-4924-9052-97659f8a16e3','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('28978eea-6b39-497a-9ee8-ce2f92159235','null','19c5417a-fead-41f2-a29e-c1bd7593601f','5cd256a5-64a5-46cf-bc8f-4131533cc8e2','1.0',NULL,'Y',NULL,'BRG','BRG',NULL,NULL);
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('8892322d-8797-4ecd-a4b1-bf0cdc426541','null','176f26ba-9bf8-46b6-b54d-53cd0c14183d','d848e8a2-5360-445a-b98d-6f3d2a787dc5','1.0',NULL,'Y',NULL,'TunnelXConn','TunnelXConn',NULL,NULL);
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('9f8dbc4f-d7f6-421b-a2fe-3c09b1068622','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('acc15553-e8fa-41f1-a260-e4588290dd9d','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('ad07a460-4224-4b55-8aab-cbd3d3c3310b','null','b5bbf19a-9fed-4fc0-a61e-e44d246f37b8','f59db7f5-74fb-4dbd-94aa-90b2ce4ac627','3.0',NULL,'Y',NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('bb50f135-22d2-4b64-98ab-e6aed28608e8','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0',NULL,NULL,NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect');
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('cc1e0245-fd9c-407a-9199-bcfa247d7718','null','19c5417a-fead-41f2-a29e-c1bd7593601f','5cd256a5-64a5-46cf-bc8f-4131533cc8e2','1.0',NULL,'Y',NULL,'BRG','BRG',NULL,NULL);
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('f66a5a6a-30f4-40ef-a3b6-ba779a522fd0','null','5d623af7-1ae4-4e7d-933b-b09bd4407f40','dac644a3-2b2c-4586-862d-9a9a4b1eb5e1','1.0',NULL,NULL,NULL,NULL,'Allotted Resource',NULL,'Allotted Resource');
+/*!40000 ALTER TABLE `ALLOTTED_RESOURCE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `NETWORK_MODEL`
+--
+
+LOCK TABLES `NETWORK_MODEL` WRITE;
+/*!40000 ALTER TABLE `NETWORK_MODEL` DISABLE KEYS */;
+INSERT INTO `NETWORK_MODEL` VALUES ('367a8ba9-057a-4506-b106-fbae818597c6','6794ec22-95ff-4b00-8846-b1148e90df54','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- Service_Admin: {file: resource-ServiceAdmin-template.yml}\n- IP_MUX_Demux: {file: resource-IpMuxDemux-template.yml}\n- Tunnel_Xconn: {file: resource-TunnelXconn-template.yml}\n- vHNF for DHV Test: {file: resource-VhnfForDhvTest-template.yml}\nmetadata: {invariantUUID: 7b0fafc1-83df-4590-9460-b5a8d9f9f277, UUID: 6794ec22-95ff-4b00-8846-b1148e90df54,\n name: SD-WAN, description: \'Standard Wan connector, redoing this for sdnc again\n as they got already deployed.\', type: Service, category: Network L1-3, serviceEcompNaming: false,\n serviceHoming: false}\ntopology_template:\n node_templates:\n Pri_IP_MUX_Demux 1:\n type: com.att.d2.resource.vf.IpMuxDemux\n metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n customizationUUID: 211bcbd5-de25-41bb-a758-edd32220461d, version: \'1.0\', name: IP_MUX_Demux,\n description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Pri_Service_Admin 5:\n type: com.att.d2.resource.vf.ServiceAdmin\n metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n customizationUUID: 22b1ed87-2ca5-42f5-9e2e-20ad5bfb097e, version: \'1.0\', name: Service_Admin,\n description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_IP_MUX_Demux 3:\n type: com.att.d2.resource.vf.IpMuxDemux\n metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n customizationUUID: 96e090a4-93dd-43a2-9d87-a746ee7e53cd, version: \'1.0\', name: IP_MUX_Demux,\n description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Pri_Tunnel_Xconn 9:\n type: com.att.d2.resource.vf.TunnelXconn\n metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n customizationUUID: 5b9bee43-f537-4fb3-9e8b-4de9f714d28a, version: \'1.0\', name: Tunnel_Xconn,\n description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_Service_Admin 7:\n type: com.att.d2.resource.vf.ServiceAdmin\n metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n customizationUUID: 5431e571-3df5-423a-99bc-0b020ecac97b, version: \'1.0\', name: Service_Admin,\n description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_Tunnel_Xconn 11:\n type: com.att.d2.resource.vf.TunnelXconn\n metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n customizationUUID: 367a8ba9-057a-4506-b106-fbae818597c6, version: \'1.0\', name: Tunnel_Xconn,\n description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n vHNF for DHV Test 17:\n type: com.att.d2.resource.vf.VhnfForDhvTest\n metadata: {invariantUUID: 6ea0b528-e303-4686-aa77-aa2fcbdccb96, UUID: 619c7cd3-76a9-46a8-b01b-c1f236b14d68,\n customizationUUID: 2eb202d1-b36b-4c63-821f-4a163abaed42, version: \'1.0\', name: vHNF for DHV Test,\n description: \'vHNF for DHV testing 1_19_17. \', type: VF, category: Network L2-3,\n subcategory: Infrastructure}\n groups:\n vhnffordhvtest17..VhnfForDhvTest..base_TEST..module-0:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: VhnfForDhvTest..base_TEST..module-0, vfModuleModelInvariantUUID: f5696ec0-ec71-4916-bf3b-93a654efcba4,\n vfModuleModelUUID: ebc3d18c-3e62-4c24-bcd6-961e98701a0a, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: 63f9560a-4603-4e3b-8fb7-55f8ea06ee21}\n properties: {min_vf_module_instances: 1, vf_module_label: base_TEST, max_vf_module_instances: 1,\n vf_module_type: Base, vf_module_description: null, initial_count: 1, volume_group: false}\n substitution_mappings:\n node_type: com.att.d2.service.SdWan\n capabilities:\n vHNF for DHV Test 17.disk.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Sec_IP_MUX_Demux 3.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory.resident:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance on the physical machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.resident, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Pri_Service_Admin 5.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.attachment:\n type: tosca.capabilities.Attachment\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.host:\n type: tosca.capabilities.Container\n occurrences: [1, UNBOUNDED]\n valid_source_types: [tosca.nodes.SoftwareComponent]\n properties:\n num_cpus: {type: integer, required: false}\n disk_size: {type: scalar-unit.size, required: false}\n cpu_frequency: {type: scalar-unit.frequency, required: false}\n mem_size: {type: scalar-unit.size, required: false}\n vHNF for DHV Test 17.disk.device.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.ephemeral.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of ephemeral disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.ephemeral.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.cpu_util:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average CPU utilization, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: \'%\', description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu_util, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.cpu:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.scalable:\n type: tosca.capabilities.Scalable\n occurrences: [1, UNBOUNDED]\n properties:\n max_instances: {type: integer, default: 1, required: false}\n min_instances: {type: integer, default: 1, required: false}\n default_instances: {type: integer, required: false}\n vHNF for DHV Test 17.cpu.delta:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used since previous datapoint,\n description: Description of the metric, required: false}\n type: {type: string, default: Delta, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu.delta, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.instance:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Existence of instance, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: instance, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: instance, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host per device,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Sec_Service_Admin 7.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.device.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.os:\n type: tosca.capabilities.OperatingSystem\n occurrences: [1, UNBOUNDED]\n properties:\n type: {type: string, required: false}\n distribution: {type: string, required: false}\n version: {type: version, required: false}\n architecture: {type: string, required: false}\n Sec_Tunnel_Xconn 11.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.binding:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n vHNF for DHV Test 17.disk.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n Pri_Tunnel_Xconn 9.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.vcpus:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of virtual CPUs allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: vcpu, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: vcpus, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outpoing.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outpoing.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance from the amount of its allocated memory,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.endpoint:\n type: tosca.capabilities.Endpoint.Admin\n occurrences: [1, UNBOUNDED]\n properties:\n port_name: {type: string, required: false}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n secure: {type: boolean, default: true, required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Pri_IP_MUX_Demux 1.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.root.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of root disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.root.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n requirements:\n Sec_IP_MUX_Demux 3.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_Tunnel_Xconn 9.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Pri_IP_MUX_Demux 1.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_Service_Admin 5.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_IP_MUX_Demux 1.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Pri_Service_Admin 5.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Sec_IP_MUX_Demux 3.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n vHNF for DHV Test 17.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n vHNF for DHV Test 17.local_storage:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: tosca.nodes.BlockStorage\n relationship: tosca.relationships.AttachesTo\n vHNF for DHV Test 17.link:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n relationship: tosca.relationships.network.LinksTo\n Pri_Tunnel_Xconn 9.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Tunnel_Xconn 11.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Sec_Service_Admin 7.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Tunnel_Xconn 11.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Service_Admin 7.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\ntosca_definitions_version: tosca_simple_yaml_1_0\n','b7a1b78e-6b6b-4b36-9698-8c9530da14af','a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `NETWORK_MODEL` VALUES ('4138175b-d013-4b8a-a0d4-c94ec2657205','f0d19319-a926-4f5c-bf63-06d417c8f3ab','null','206d5e6c-4cba-4c14-b942-5d946c881869','9b7c1cbe-ddcd-458c-8792-d76391419b72','NEUTRON','VcpesvcInfra0412a.cpe_public','NEUTRON',NULL,NULL,NULL,'Y',NULL,'N',NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1.0');
+INSERT INTO `NETWORK_MODEL` VALUES ('61daffc9-c35d-4c04-b0c7-e9b460d6ae5a','f0d19319-a926-4f5c-bf63-06d417c8f3ab','null','206d5e6c-4cba-4c14-b942-5d946c881869','9b7c1cbe-ddcd-458c-8792-d76391419b72','NEUTRON','VcpesvcInfra0412a.cpe_signal','NEUTRON',NULL,NULL,NULL,'Y',NULL,'N',NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1.0');
+INSERT INTO `NETWORK_MODEL` VALUES ('b0cf3385-a390-488c-b6a0-d879fb4a4825','12eb33fa-b221-4d87-939c-d808b5799a7c','null','206d5e6c-4cba-4c14-b942-5d946c881869','9b7c1cbe-ddcd-458c-8792-d76391419b72','NEUTRON','VcpesvcVbng0412a.bng_mux','NEUTRON',NULL,NULL,NULL,'Y',NULL,'N',NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1.0');
+INSERT INTO `NETWORK_MODEL` VALUES ('e2d7ba3f-5e86-49ad-a2f3-46f24b046f41','12eb33fa-b221-4d87-939c-d808b5799a7c','null','206d5e6c-4cba-4c14-b942-5d946c881869','9b7c1cbe-ddcd-458c-8792-d76391419b72','NEUTRON','VcpesvcVbng0412a.brg_bng','NEUTRON',NULL,NULL,NULL,'Y',NULL,'N',NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1.0');
+INSERT INTO `NETWORK_MODEL` VALUES ('fe4cdfc8-6415-428f-91f0-c0b34a7f3128','b4c3eac7-9f57-4330-9a05-c7d5595505ea','null','206d5e6c-4cba-4c14-b942-5d946c881869','9b7c1cbe-ddcd-458c-8792-d76391419b72','NEUTRON','VcpesvcVgmux0412a.mux_gw','NEUTRON',NULL,NULL,NULL,'Y',NULL,'N',NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1.0');
+/*!40000 ALTER TABLE `NETWORK_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `SERVICE_MODEL`
+--
+
+LOCK TABLES `SERVICE_MODEL` WRITE;
+/*!40000 ALTER TABLE `SERVICE_MODEL` DISABLE KEYS */;
+INSERT INTO `SERVICE_MODEL` VALUES ('0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('00e50cbd-ef0f-4b28-821e-f2b583752dd3','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- Second try_vbng: {file: resource-SecondTryVbng-template.yml}\nmetadata: {invariantUUID: dbf9288d-18ef-4d28-82cb-29373028f367, UUID: 00e50cbd-ef0f-4b28-821e-f2b583752dd3,\n name: vBNG_0202, description: Virtual, type: Service, category: Network L1-3, serviceEcompNaming: false,\n serviceHoming: false}\ntopology_template:\n node_templates:\n Second try_vbng 1:\n type: com.att.d2.resource.vf.SecondTryVbng\n metadata: {invariantUUID: 57516bfc-35f5-4169-a4ee-66a495a9c645, UUID: f196fdad-9b74-4fcc-9d38-72f4a71aea77,\n customizationUUID: 72a9f413-4d16-4f7b-b0bc-d98f87997f01, version: \'1.0\', name: Second try_vbng,\n description: ntwork, type: VF, category: Generic, subcategory: Network Elements}\n groups:\n secondtry_vbng1..SecondTryVbng..VSR_base_hot..module-0:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: SecondTryVbng..VSR_base_hot..module-0, vfModuleModelInvariantUUID: b73fcd7d-f374-4e7e-a905-f5e58eb8a34a,\n vfModuleModelUUID: 3b3ff306-b493-4b3d-bb3d-baa13c2d82c7, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: d106e920-0188-48b7-9f90-ae7c1ab43b73}\n properties: {min_vf_module_instances: 1, vf_module_label: VSR_base_hot, max_vf_module_instances: 1,\n vf_module_type: Base, vf_module_description: null, volume_group: false, initial_count: 1}\n substitution_mappings:\n node_type: com.att.d2.service.Vbng0202\n capabilities:\n Second try_vbng 1.attachment_iom_ctrl_fabric_0_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.os_CPM:\n type: tosca.capabilities.OperatingSystem\n occurrences: [1, UNBOUNDED]\n properties:\n distribution: {type: string, required: false}\n type: {type: string, required: false}\n version: {type: version, required: false}\n architecture: {type: string, required: false}\n Second try_vbng 1.scalable_CPM:\n type: tosca.capabilities.Scalable\n occurrences: [1, UNBOUNDED]\n properties:\n max_instances: {type: integer, default: 1, required: false}\n min_instances: {type: integer, default: 1, required: false}\n default_instances: {type: integer, required: false}\n Second try_vbng 1.binding_iom_data_0_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.attachment_iom_mgt_0_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.binding_cpm_ctrl_fabric_0_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.scalable_IOM:\n type: tosca.capabilities.Scalable\n occurrences: [1, UNBOUNDED]\n properties:\n max_instances: {type: integer, default: 1, required: false}\n min_instances: {type: integer, default: 1, required: false}\n default_instances: {type: integer, required: false}\n Second try_vbng 1.attachment_iom_data_0_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.host_CPM:\n type: tosca.capabilities.Container\n occurrences: [1, UNBOUNDED]\n valid_source_types: [tosca.nodes.SoftwareComponent]\n properties:\n num_cpus: {type: integer, required: false}\n disk_size: {type: scalar-unit.size, required: false}\n cpu_frequency: {type: scalar-unit.frequency, required: false}\n mem_size: {type: scalar-unit.size, required: false}\n Second try_vbng 1.attachment_cpm_mgt_0_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.binding_iom_data_1_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.attachment_iom_data_3_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.binding_iom_mgt_0_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.attachment_iom_data_2_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.binding_iom_data_2_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.endpoint_CPM:\n type: tosca.capabilities.Endpoint.Admin\n occurrences: [1, UNBOUNDED]\n properties:\n port_name: {type: string, required: false}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n secure: {type: boolean, default: true, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n url_path: {type: string, required: false}\n Second try_vbng 1.binding_cpm_mgt_0_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n Second try_vbng 1.binding_IOM:\n type: tosca.capabilities.network.Bindable\n occurrences: [1, UNBOUNDED]\n Second try_vbng 1.attachment_cpm_ctrl_fabric_0_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.binding_iom_ctrl_fabric_0_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.binding_iom_data_3_port:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n Second try_vbng 1.binding_CPM:\n type: tosca.capabilities.network.Bindable\n occurrences: [1, UNBOUNDED]\n Second try_vbng 1.attachment_iom_data_1_port:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n Second try_vbng 1.host_IOM:\n type: tosca.capabilities.Container\n occurrences: [1, UNBOUNDED]\n valid_source_types: [tosca.nodes.SoftwareComponent]\n properties:\n num_cpus: {type: integer, required: false}\n disk_size: {type: scalar-unit.size, required: false}\n cpu_frequency: {type: scalar-unit.frequency, required: false}\n mem_size: {type: scalar-unit.size, required: false}\n Second try_vbng 1.os_IOM:\n type: tosca.capabilities.OperatingSystem\n occurrences: [1, UNBOUNDED]\n properties:\n distribution: {type: string, required: false}\n type: {type: string, required: false}\n version: {type: version, required: false}\n architecture: {type: string, required: false}\n Second try_vbng 1.endpoint_IOM:\n type: tosca.capabilities.Endpoint.Admin\n occurrences: [1, UNBOUNDED]\n properties:\n port_name: {type: string, required: false}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n secure: {type: boolean, default: true, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n url_path: {type: string, required: false}\n requirements:\n Second try_vbng 1.local_storage_IOM:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: tosca.nodes.BlockStorage\n relationship: tosca.relationships.AttachesTo\n Second try_vbng 1.link_iom_ctrl_fabric_0_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.link_cpm_ctrl_fabric_0_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.link_cpm_mgt_0_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.link_iom_data_3_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.local_storage_CPM:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: tosca.nodes.BlockStorage\n relationship: tosca.relationships.AttachesTo\n Second try_vbng 1.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Second try_vbng 1.link_iom_data_2_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.link_iom_data_0_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.link_iom_mgt_0_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\n Second try_vbng 1.port:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: com.att.d2.resource.cp.nodes.heat.network.neutron.Port\n relationship: com.att.d2.relationships.AttachesTo\n Second try_vbng 1.link_iom_data_1_port:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n node: tosca.nodes.Root\n relationship: tosca.relationships.network.LinksTo\ntosca_definitions_version: tosca_simple_yaml_1_0\n','dbf9288d-18ef-4d28-82cb-29373028f367',NULL,'vBNG_0202','Virtual','Service','Network L1-3','N','Vbng0202','service-Vbng0202-template.yml',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- BK-012317-UUID-VSP: {file: resource-Bk012317UuidVsp-template.yml}\nmetadata: {invariantUUID: 083b57cd-4b76-4924-a64c-610445528063, UUID: 0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7,\n name: BK-012317-UUID-Service, description: BK-012317-UUID-Service, type: Service,\n category: Network L1-3, serviceEcompNaming: false, serviceHoming: false}\ntopology_template:\n inputs:\n bk012317uuidvsp1_oam_protected_net_id: {type: string, description: OAM network id}\n bk012317uuidvsp1_ppd_name_0: {type: string, description: name of the PCRF PD instance}\n node_templates:\n BK-012317-UUID-VSP 1:\n type: com.att.d2.resource.vf.Bk012317UuidVsp\n metadata: {invariantUUID: daeccf0e-d5f0-4b95-98db-0ae23b890d1a, UUID: bd533689-28e0-4601-81d2-545a424a665e,\n customizationUUID: 14a2c39f-e261-4453-8d09-28f1e006dc91, version: \'1.0\', name: BK-012317-UUID-VSP,\n description: BK-012317-UUID-VSP, type: VF, category: Network L2-3, subcategory: Gateway}\n properties:\n ppd_name_0: {get_input: bk012317uuidvsp1_ppd_name_0}\n oam_protected_net_id: {get_input: bk012317uuidvsp1_oam_protected_net_id}\n groups:\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_oam..module-5:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_oam..module-5, vfModuleModelInvariantUUID: 96cf1eea-8bea-40f1-8daf-29b4d9e24139,\n vfModuleModelUUID: 9dd06cea-7cef-4b3d-ba2d-4e84336a5654, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: fd3104b5-c3bf-4080-81dd-78944dc8a263}\n properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_oam, max_vf_module_instances: null,\n vf_module_type: Expansion, vf_module_description: null, volume_group: true,\n initial_count: 0}\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_base_template_v3_0..module-0:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_base_template_v3_0..module-0,\n vfModuleModelInvariantUUID: 85f5f4e4-b5e0-4ece-a3aa-bc5c68287700, vfModuleModelUUID: fa4033e7-9c3f-4140-a374-e80a742f6b2f,\n vfModuleModelVersion: \'1\', vfModuleModelCustomizationUUID: 430443ea-78a2-43f5-8aae-967857ea4466}\n properties: {min_vf_module_instances: 1, vf_module_label: pcrf_base_template_v3_0,\n max_vf_module_instances: 1, vf_module_type: Base, vf_module_description: null,\n volume_group: false, initial_count: 1}\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_pcm..module-4:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_pcm..module-4, vfModuleModelInvariantUUID: d47db54d-8146-4e24-bc88-5ca62ceda22f,\n vfModuleModelUUID: 3fcb381a-860b-43e0-84e7-00774f43a5d8, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: 2a1d55c3-df91-4a3c-afea-683a69fd4d8a}\n properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_pcm, max_vf_module_instances: null,\n vf_module_type: Expansion, vf_module_description: null, initial_count: 0,\n volume_group: true}\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_ppd..module-3:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_ppd..module-3, vfModuleModelInvariantUUID: 72e9eff2-d1c7-4dcb-8ffc-43afedb65e53,\n vfModuleModelUUID: b509d8dc-7cb0-4139-ab85-5d764cd17bb5, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: 9f14ae6b-b156-4b33-ad23-77aa3d9d38ac}\n properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_ppd, max_vf_module_instances: null,\n vf_module_type: Expansion, vf_module_description: null, initial_count: 0,\n volume_group: false}\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_psm..module-1:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_psm..module-1, vfModuleModelInvariantUUID: 07abb9e0-0714-4b9c-b269-b52a405ab4b3,\n vfModuleModelUUID: 2b66c94f-3de3-45be-ad65-109d3c016bb0, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: 357384b3-9085-42a1-b3ba-ec9baf9a9de1}\n properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_psm, max_vf_module_instances: null,\n vf_module_type: Expansion, vf_module_description: null, volume_group: false,\n initial_count: 0}\n bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_pps..module-2:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_pps..module-2, vfModuleModelInvariantUUID: 1d7dbc30-ac35-4120-b5ea-a4fe5b570de3,\n vfModuleModelUUID: 18e1160f-f917-446e-954c-3ed3e8d5b13d, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: f37780a8-e662-4b17-a0e9-ba798667be00}\n properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_pps, max_vf_module_instances: null,\n vf_module_type: Expansion, vf_module_description: null, volume_group: false,\n initial_count: 0}\n substitution_mappings:\n node_type: com.att.d2.service.Bk012317UuidService\n capabilities:\n BK-012317-UUID-VSP 1.disk.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.vcpus:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of virtual CPUs allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: vcpu, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: vcpus, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.scalable:\n type: tosca.capabilities.Scalable\n occurrences: [1, UNBOUNDED]\n properties:\n max_instances: {type: integer, default: 1, required: false}\n min_instances: {type: integer, default: 1, required: false}\n default_instances: {type: integer, required: false}\n BK-012317-UUID-VSP 1.instance:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Existence of instance, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: instance, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: instance, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.memory:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n BK-012317-UUID-VSP 1.disk.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.ephemeral.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of ephemeral disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.ephemeral.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host per device,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.host:\n type: tosca.capabilities.Container\n occurrences: [1, UNBOUNDED]\n valid_source_types: [tosca.nodes.SoftwareComponent]\n properties:\n num_cpus: {type: integer, required: false}\n disk_size: {type: scalar-unit.size, required: false}\n cpu_frequency: {type: scalar-unit.frequency, required: false}\n mem_size: {type: scalar-unit.size, required: false}\n BK-012317-UUID-VSP 1.disk.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.incoming.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.outgoing.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.attachment:\n type: tosca.capabilities.Attachment\n occurrences: [0, UNBOUNDED]\n BK-012317-UUID-VSP 1.network.outgoing.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.incoming.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.memory.resident:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance on the physical machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.resident, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.outgoing.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.cpu:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.outpoing.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outpoing.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.binding:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n BK-012317-UUID-VSP 1.cpu_util:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average CPU utilization, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: \'%\', description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu_util, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.endpoint:\n type: tosca.capabilities.Endpoint.Admin\n occurrences: [1, UNBOUNDED]\n properties:\n port_name: {type: string, required: false}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n secure: {type: boolean, default: true, required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.root.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of root disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.root.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.cpu.delta:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used since previous datapoint,\n description: Description of the metric, required: false}\n type: {type: string, default: Delta, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu.delta, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.read.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.os:\n type: tosca.capabilities.OperatingSystem\n occurrences: [1, UNBOUNDED]\n properties:\n type: {type: string, required: false}\n distribution: {type: string, required: false}\n version: {type: version, required: false}\n architecture: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.incoming.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.memory.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance from the amount of its allocated memory,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.device.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.link:\n type: tosca.capabilities.network.Linkable\n occurrences: [0, UNBOUNDED]\n BK-012317-UUID-VSP 1.disk.device.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.network.incoming.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n BK-012317-UUID-VSP 1.disk.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n requirements:\n BK-012317-UUID-VSP 1.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n BK-012317-UUID-VSP 1.local_storage:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: tosca.nodes.BlockStorage\n relationship: tosca.relationships.AttachesTo\n BK-012317-UUID-VSP 1.link:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n relationship: tosca.relationships.network.LinksTo\n BK-012317-UUID-VSP 1.port:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: com.att.d2.resource.cp.nodes.heat.network.neutron.Port\n relationship: com.att.d2.relationships.AttachesTo\ntosca_definitions_version: tosca_simple_yaml_1_0\n','083b57cd-4b76-4924-a64c-610445528063',NULL,'BK-012317-UUID-Service','BK-012317-UUID-Service','Service','Network L1-3','N','Bk012317UuidService','service-Bk012317UuidService-template.yml',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('0b72b486-91cb-4734-a72d-d2a43f25771c','null','28286960-3f83-4c37-b40b-8915d8582ee3',NULL,'vFW 2018-06-04 16:17:40','catalog service description','Service','Network L1-3','Y','Vfw2018060416:17:40','service-Vfw20180604161740-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('11018d47-e8d8-42f6-8162-a691be055e18','null','e4f07ad9-155e-437b-88d4-b7b8d8a4e078',NULL,'vCPE 2018-06-05 02:53:1','catalog service description','Service','Network L1-3','Y','Vcpe2018060502:53:1','service-Vcpe2018060502531-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('1207105c-c1fc-4b2b-a94d-ac56522b70fb','null','66bbfebb-c97a-4841-b0ff-fbede0e905b4',NULL,'vLB 2018-06-05 02:37:19','catalog service description','Service','Network L1-3','Y','Vlb2018060502:37:19','service-Vlb20180605023719-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('12eb33fa-b221-4d87-939c-d808b5799a7c','null','ead151e2-e18a-44fc-b6ac-3ae3d819dcd6',NULL,'vcpesvc_vbng_0412a','bng','Service','Network L1-3','Y','VcpesvcVbng0412a','service-VcpesvcVbng0412a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('16b0f456-4ddd-4b0e-ad4f-7783224043dc','null','620b7ab3-423b-4a39-8c98-e78fba42d178',NULL,'vFW 2018-06-05 02:43:09','catalog service description','Service','Network L1-3','Y','Vfw2018060502:43:09','service-Vfw20180605024309-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('1794adc8-2481-4ca7-9d5d-b3d3be9c686e','null','bc690cb9-8fec-4eef-a98e-580bdfed1ed6',NULL,'vcpesvc_rescust_0529a','vcpe res cust','Service','Network L1-3','Y','VcpesvcRescust0529a','service-VcpesvcRescust0529a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('1af22bad-a297-448b-9f5c-ce6ca843f8ee','null','750ac797-4f08-4334-8d34-100ae2b59907',NULL,'vFW 2018-06-04 16:43:30','catalog service description','Service','Network L1-3','Y','Vfw2018060416:43:30','service-Vfw20180604164330-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('20040dc7-65ec-414b-a77a-f7c1f935b5ae','null','5351da04-b415-4a6e-877a-3e879ec01178',NULL,'vVG 2018-05-31 20:36:27','catalog service description','Service','Network L1-3','Y','Vvg2018053120:36:27','service-Vvg20180531203627-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('27a090ca-7a20-46c4-9698-eb1dae25bddb','null','d0bd924e-6d96-4ac8-a036-a6354f7d7e34',NULL,'vFW 2018-06-04 21:54:41','catalog service description','Service','Network L1-3','Y','Vfw2018060421:54:41','service-Vfw20180604215441-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('28681887-d259-46b1-8259-152b86dd1252','null','7cb9ddad-9597-4165-8dd1-04421368ffcf',NULL,'vVG 2018-06-05 02:48:17','catalog service description','Service','Network L1-3','Y','Vvg2018060502:48:17','service-Vvg20180605024817-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('2a6ee979-d07b-4ace-89d3-eda308283a12','null','b173f7ba-e618-44d9-b179-962b0e33578e',NULL,'vFWCL 2018-06-01 16:30:','catalog service description','Service','Network L1-3','Y','Vfwcl2018060116:30:','service-Vfwcl201806011630-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('3cd128f5-75c1-497f-97cd-fbc8f0c2e711','null','c811b5ef-8512-4cd6-b8ab-90e31e73c833',NULL,'vIMSService20180608a','143124','Service','VoIP Call Control','Y','Vimsservice20180608a','service-Vimsservice20180608a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('52174fb4-be73-4f23-b706-a574d48022a8','null','40be5e3d-1185-4bed-b8ea-26cd65a461aa',NULL,'vIMSService20180607','dafdasfsa','Service','VoIP Call Control','Y','Vimsservice20180607','service-Vimsservice20180607-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('6b586613-4e3f-4bc7-b0b5-2a7408d9d6a6','null','5afd7dd4-d2e5-4fb3-a8c0-75cce1a225ab',NULL,'vcpesb7','hello','Service','Network L1-3','Y','Vcpesb7','service-Vcpesb7-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('6f691fb7-e38c-4256-81d2-bf5c8c1e3ba5','null','7a43a399-2134-45b3-b610-a9bfcc136c32',NULL,'vIMSService20180608','11111','Service','Network L4+','Y','Vimsservice20180608','service-Vimsservice20180608-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('8686e9e2-6790-464a-a746-efd37b809c17','null','056a5391-2f6b-4c0f-b4ee-593641a52a9e',NULL,'vFWCL 2018-06-01 18:23:','catalog service description','Service','Network L1-3','Y','Vfwcl2018060118:23:','service-Vfwcl201806011823-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('87665c89-2b6d-4d35-ba74-d477c0cafbeb','null','c12550e2-8a33-4924-a612-7fac61778a42',NULL,'vLB 2018-06-01 16:15:38','catalog service description','Service','Network L1-3','Y','Vlb2018060116:15:38','service-Vlb20180601161538-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('87fba18b-c8dc-4a3f-b578-dd79354eb9f1','null','90dbea8d-3a8c-4135-8d24-e054d5f5da05',NULL,'vFW 2018-06-05 02:33:36','catalog service description','Service','Network L1-3','Y','Vfw2018060502:33:36','service-Vfw20180605023336-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('8cf77de9-06a2-429b-b7db-cf3f4d122a46','null','3f7c1350-5233-48e0-a2aa-00c1038469f5',NULL,'vcpeservice','hello','Service','Network L1-3','Y','Vcpeservice','service-Vcpeservice-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('8d6335d8-3883-483d-9e45-fdcd9e11c351','null','93008484-8d5e-41b2-9e29-6c86ac2d0b36',NULL,'vcpe7service','hello','Service','Network L1-3','Y','Vcpe7service','service-Vcpe7service-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('8dde7703-773d-4e2f-9f15-896ddac78be0','null','6011136e-597f-4f7a-8d43-f9827383d146',NULL,'vFW 2018-06-05 02:25:46','catalog service description','Service','Network L1-3','Y','Vfw2018060502:25:46','service-Vfw20180605022546-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('8f8e5a56-eec8-4a16-b866-0c934323a006','null','86e96538-cb4d-4975-8af3-ed075d3f52fa',NULL,'vLoadBalancerMS','vLBMS','Service','Network L4+','Y','Vloadbalancerms','service-Vloadbalancerms-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('a64f918a-7028-4760-a0dc-521c66ae56fa','null','057961dd-b436-41d2-86e1-ded5e4c335e8',NULL,'vLB 2018-05-31 20:26:41','catalog service description','Service','Network L1-3','Y','Vlb2018053120:26:41','service-Vlb20180531202641-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('aa8812f9-06bd-4c26-8099-9a98d0229f19','null','670c4959-3cfa-43c6-b8b7-5998fa20d116',NULL,'vcpesvc_vbrg_0412a','vbrg','Service','Network L1-3','Y','VcpesvcVbrg0412a','service-VcpesvcVbrg0412a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('abd7a199-c445-4324-b57c-3b2af348273c','null','ce6cc49e-ea8d-4b90-9cc3-444c7f8d5550',NULL,'vFirewall','vFW','Service','Network L4+','Y','Vfirewall','service-Vfirewall-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('adcbcc7a-6685-4b78-9b4c-61e49e15bf45','null','963bda29-af3f-4f2c-8650-3ee4a39606e0',NULL,'vVG 2018-05-31 20:19:12','catalog service description','Service','Network L1-3','Y','Vvg2018053120:19:12','service-Vvg20180531201912-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('afdb3920-b9be-4626-910b-f5c1a2ab5eb4','null','54a49baf-c7f6-4838-a3a4-9c25a96be2fc',NULL,'vFWCL 2018-05-31 20:22:','catalog service description','Service','Network L1-3','Y','Vfwcl2018053120:22:','service-Vfwcl201805312022-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('b1cc4717-cfdb-428c-a93b-a7d8c746e706','null','fb17d0c1-2189-471a-aabb-75380361daff',NULL,'vVG 2018-06-01 14:05:20','catalog service description','Service','Network L1-3','Y','Vvg2018060114:05:20','service-Vvg20180601140520-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('b241ec41-d98d-4a03-a54c-b52791a9c3cb','null','a3ebfaf2-3dea-43b0-bb8e-566f95735230',NULL,'vcpesvc_rescust_0412a','rescust service','Service','Network L1-3','Y','VcpesvcRescust0412a','service-VcpesvcRescust0412a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('b321ed9e-1bd5-4271-a8f0-ee663b820cfc','null','dd97264b-4115-480d-ac76-a9e15fe19936',NULL,'vIMSServcie20180608b','dafdsaf','Service','VoIP Call Control','Y','Vimsservcie20180608b','service-Vimsservcie20180608b-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('b47f8de0-860f-4202-bfdc-5cf3659092b7','null','9793a762-266f-4a79-87ca-df9f720ecb87',NULL,'firewall3','hello','Service','Network L4+','Y','Firewall3','service-Firewall3-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('b4c3eac7-9f57-4330-9a05-c7d5595505ea','null','655e15b6-1821-46d0-8c56-6b24d9afca31',NULL,'vcpesvc_vgmux_0412a','gmux','Service','Network L1-3','Y','VcpesvcVgmux0412a','service-VcpesvcVgmux0412a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('bc2e2de4-25dc-4dd3-a67d-f96412045492','null','84e95ace-4674-405c-b228-6cd550ff8ac6',NULL,'vcpeservice9','demo','Service','Network L1-3','Y','Vcpeservice9','service-Vcpeservice9-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('c4080e72-8db8-47b1-87ac-479d37062265','null','84c2fcfe-3629-4e64-a80f-1b13135dbe44',NULL,'vLB 2018-06-01 13:55:12','catalog service description','Service','Network L1-3','Y','Vlb2018060113:55:12','service-Vlb20180601135512-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('d891d858-c805-4fc2-b38c-ebda6c1c9a7b','null','af88c762-2776-4164-881d-6cf0f2cd2360',NULL,'vVG 2018-06-01 16:25:09','catalog service description','Service','Network L1-3','Y','Vvg2018060116:25:09','service-Vvg20180601162509-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('dbeed4a7-1536-4110-8e6a-2dc1e57f9c26','null','3b373ae2-b14c-4468-986b-78284ec952bc',NULL,'vFWCL 2018-05-31 20:42:','catalog service description','Service','Network L1-3','Y','Vfwcl2018053120:42:','service-Vfwcl201805312042-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('e4e7ae06-5a32-4278-b0ff-282ac0952910','null','4cadc250-9bda-49b4-9c4e-7baedf9b88d3',NULL,'vcpeservice2','good service','Service','Network L1-3','Y','Vcpeservice2','service-Vcpeservice2-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('e523f567-8bfd-4e7b-b9e4-07d466272166','null','08a5a162-bf25-40a6-b3a2-3537afd83ed0',NULL,'vFW 2018-06-04 17:32:02','catalog service description','Service','Network L1-3','Y','Vfw2018060417:32:02','service-Vfw20180604173202-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('e6e82074-e7c0-4096-82e5-46114f6116de','null','f6fbc972-04ed-4958-a5d2-84c1c5e0b66b',NULL,'vFWCL 2018-06-01 14:11:','catalog service description','Service','Network L1-3','Y','Vfwcl2018060114:11:','service-Vfwcl201806011411-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('f0d19319-a926-4f5c-bf63-06d417c8f3ab','null','dc729baa-c5a1-4ed0-89b9-3af55cf201ff',NULL,'vcpesvc_infra_0412a','infra','Service','Network L1-3','Y','VcpesvcInfra0412a','service-VcpesvcInfra0412a-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('f3bb7dfa-824a-4034-8760-0bc7dc8a9530','null','dec3f43d-ffb1-4367-9827-9183801fdba9',NULL,'vLB 2018-05-31 20:16:23','catalog service description','Service','Network L1-3','Y','Vlb2018053120:16:23','service-Vlb20180531201623-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('f84b3649-6e42-4ff3-8550-4f7dff594ba0','null','1cd28fd6-7b62-4378-8a41-187fc0ea5c6f',NULL,'vcpegoodservice','hello','Service','Network L1-3','Y','Vcpegoodservice','service-Vcpegoodservice-csar.csar',NULL);
+INSERT INTO `SERVICE_MODEL` VALUES ('f943d194-9cba-4d4a-9cb9-8b88737f7cbc','null','03b65058-d396-4ce9-8eda-b0d8875e2394',NULL,'vFW 2018-06-04 16:26:42','catalog service description','Service','Network L1-3','Y','Vfw2018060416:26:42','service-Vfw20180604162642-csar.csar',NULL);
+/*!40000 ALTER TABLE `SERVICE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `VFC_MODEL`
+--
+
+LOCK TABLES `VFC_MODEL` WRITE;
+/*!40000 ALTER TABLE `VFC_MODEL` DISABLE KEYS */;
+INSERT INTO `VFC_MODEL` VALUES ('0062f5d9-eee4-4660-b08b-b1c63500b6ec','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0063a07b-6eb7-4ed0-a0fd-5a2877cf1b11','null','629e5ac3-c75d-475f-8262-f53f6f761c2f','dec80f28-f12d-4ade-be99-d3ebf7635ecd','1.0',NULL,NULL,NULL,'virc_cc','virc_cc','virc_cc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('00b2ed93-e2c8-468b-aa39-bd77a2f3e4ac','null','aa2c90ad-56a3-417e-bfac-a16d52855861','a053db31-b6e6-4268-9d64-f3f26f630671','1.0',NULL,NULL,NULL,'schemamanager','schemamanager','schemamanager',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0137c30b-93c3-49cd-ac2b-eff8eeaae0c9','null','48ecf111-2b9a-491b-9a25-55fb39117ea0','ef7ad35d-0f5f-4016-900a-51ed005ca693','1.0',NULL,NULL,NULL,'cognosccm','cognosccm','cognosccm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0142d2b6-d79d-459e-a414-4a68e18d554c','null','d8e95546-60f7-4d74-9bc3-97326e57f9bf','d003593a-de80-4202-9a80-bc5338c679c4','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'nd.c4r8d0',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('014a9370-210a-491e-badb-2831f7ebc6d1','null','c9b52c32-2e53-47f5-9250-650d5380764f','33befda2-c9fc-4b49-9202-393fb8130277','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('01984773-9b8c-4a9e-ac78-7a6715abea41','null','94a6c3d9-fda8-435a-9e77-4eff0258b7d6','117022fd-d404-4d61-8d33-9fe539702eed','1.0',NULL,NULL,NULL,'nems_be','nems_be','nems_be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('019ee7d6-97f0-41c1-a9c8-ce753223c258','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('01eb2ef8-2331-4a95-bfe1-d3e4dad3cd4f','null','81edb46d-046e-4011-81b4-35abe397885f','cfea6434-95f5-4de2-9823-4615e00f1aba','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('023fcd99-b707-4084-81f2-5bc4c58a62fc','null','481942e9-104e-4def-95f8-6666d7c1ea69','6050698d-2c49-4476-af74-e36f9ba3e436','1.0',NULL,'Y',NULL,'vgw','vgw','vgw','vgw-base-ubuntu-16-04','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('037cd524-4b26-4609-8fd0-3aa61ed1a2e2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('03993dc2-e8ae-4b48-a5d9-33811fe820dc','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('03a5b04e-ebb1-4d2e-bc69-d4f88706086b','null','dd05c4b4-e316-4dfe-8299-e80171bf48b8','9fa396db-273d-4fc2-90f7-05462023c744','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('03ac3cb1-60fc-4ae1-bd5a-68c478bf6a8e','null','3c0d2220-739d-4696-90e3-5ffd283c2b02','3d4e2721-6f89-4bf2-89d7-64ed08942465','1.0',NULL,'Y',NULL,'ellis','ellis','ellis',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('04080672-2d81-4f9d-a58f-78d4380d9a18','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0447d25b-a3e3-4c51-809b-81a55b052bd4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0448c405-43f6-4514-8ce7-57f46ec47f55','null','7d603e14-9f59-4948-964d-df8bbccdc467','04d01856-ae41-487a-9919-b309a95309ae','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0471e477-09c1-43e2-a26a-7839d81475ee','null','1f00292a-0da3-4862-82c2-a606f9e2bf9a','ffa107f2-20ea-4264-8aa0-34a4dcd9e33c','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0533df13-256d-4aa5-8123-3ed4cd067a00','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0540f0aa-408e-414e-a00f-f5fc603edaef','null','9cef0352-fbe0-47df-87d5-62ed44ba5608','d2990b48-bc98-492f-b5cc-963db16b5ee9','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0561ec40-601c-41bb-bce5-04feae250e09','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('05d29ec2-ac26-4b6f-9687-9898c6c18910','null','facde21f-6dfe-47d1-beb5-003fae6a0651','462efc3d-a1ca-4925-a982-1dbd8d3dfbaa','1.0',NULL,'Y',NULL,'msrp_msc_b','msrp_msc_b','msrp_msc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('05d36951-3d07-4255-8058-5bfc65b62d38','null','1ba0abe4-897c-4d22-a039-b6af2fea476b','f00fb687-7cdf-4fe7-aaf9-3836c793ffaa','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('05fda582-6802-4e21-ba32-610c7fb1d1b8','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('063ed102-0d00-4cff-8bff-880ed09ad584','null','5fb94500-7c25-4e41-86e3-87e11738a997','67079eb1-9fe6-4731-955c-e737ac75be56','1.0',NULL,NULL,NULL,'rpmrepository','rpmrepository','rpmrepository',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('069ef0e7-87d0-439e-846f-097c5d64a94d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('06a1d072-4752-48c8-9c52-dfdd4c09c9e1','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('06eb1491-11fb-4e2c-80ed-5f4ad8b83b18','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('06f49ac5-7025-4737-bc0d-880371539b49','null','0a288050-1f71-4ccf-8661-316720483150','8ef01225-7484-4d8c-bd31-b7d45c4c8bec','1.0',NULL,NULL,NULL,'qtracelb','qtracelb','qtracelb',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('071a1959-8203-4e9d-8c2f-d3dd67076353','null','1acc9e6a-8984-4cc5-8d72-3bfb793ed325','83fd2e6e-3c8f-478f-a940-0bf3913d2cf6','1.0',NULL,NULL,NULL,NULL,'vdbe_node','vdbe_node',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('078e0007-2e68-4472-9506-d5910e167fa2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('079379c5-41fa-4acb-b058-dd762213f48c','null','d8ae042a-d48f-4d1c-963f-b928f9c5dded','b4ac350f-d421-4d7e-a45f-44f0b3dde082','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('07be8d64-8e5a-4de6-96e7-41782560df6a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('08372faa-bc18-4211-9fd3-19e3841ddc94','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('08559203-1f1e-4424-ac5f-6ec24bb8bf6d','null','c4930be0-706b-4d8a-b062-6e5b4dd2af84','0b6648c5-027c-4e26-98da-59bb62d30a23','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0863ccbd-cfdf-4f71-b8ef-e37a045aef7b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('08f086e2-a710-42e1-944d-ac8fa4118040','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('08f2b087-4b49-41ff-b4f5-a36c6d2cd92e','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0a2882a0-eb50-4c05-a99b-97b6f4308620','null','6af6139f-fdad-4b92-a60c-1e121b05bcaf','8c85080c-5e9a-44ab-9a50-e2f7347abaec','1.0',NULL,'Y',NULL,'uir','uir','uir',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0a941339-667f-49b7-bf71-58f952cecbb8','null','cfc8c02a-5018-4b58-8216-87dd38c72bfa','edd9bea9-efe1-4c15-a415-f7ddc83d4bd1','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0abe9a8d-2437-4d82-92e5-d8190a8e2240','null','8dd6d443-245e-4836-b008-cffdd1ed7f92','9db9362c-0fbd-4621-ab74-6571903dcd8a','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0b221466-3962-42cd-b241-e08093869999','null','313d829f-d955-4489-8beb-d46dfd8a458d','2f2bac38-753a-46c7-a4e2-6b781a84c3a4','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0b390d3f-7089-45c9-8726-c69bdb7ee963','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0b552ace-2f72-4d78-8adc-3f6e7032dcf2','null','6e0975ad-7f9a-4dfb-b4b9-0bc7f42dc8b2','0f294f57-03d6-4348-83ae-4ede8f9430ec','1.0',NULL,NULL,NULL,'processing','processing','processing',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0bc31a69-5e59-492c-a40b-e954d98b0809','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0bc7260b-0572-4a47-bd84-b7bdb549a64c','null','47efe716-c94d-4d1e-9739-d90a0110f62a','418c85aa-4f64-4cad-a106-c22bcee7316e','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0cd419ed-508f-4dc6-bcd7-a18787161255','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0d5f6296-2725-4ddf-a5f5-4ec2b2bfa2fe','null','6f46fe0c-e467-413f-98c6-45aef5b7e33f','5a0d5695-bd83-423d-b9a2-c241528ecb89','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0d9e290a-d6ad-4211-a11d-18b4792297f9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0dd132b5-f92e-4171-98ab-f22fb7695ba0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0f284f86-fddf-49c3-9a33-bf0ede0a361d','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0f34a065-f043-401f-b0ef-d33dd77eb1e4','null','788edb40-2174-4722-8756-9c61b20484ec','e98433e9-6ca5-436d-aa17-4d7385ed99ec','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0f4ca5e1-0f10-4550-a815-4f1a7ce05c32','null','feb4bb3b-accc-4396-8649-0898f4863d33','203caf20-132f-406b-95b0-ef8a35112dcc','1.0',NULL,NULL,NULL,'pcm','pcm','pcm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0f61f955-e80d-43a4-8ce1-b74193595e95','null','e33903e2-7bc2-4393-b185-87f5907539f2','47157d39-6286-4037-88e5-2f616ff751bf','1.0',NULL,'Y',NULL,'pcm','pcm','pcm','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('0f6f72f5-c86c-4b79-988b-4c0b5f18ce9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','version','policy','Y',NULL,'naming-code-1','vm-type-1','vm-type-tag-1',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('10dc2bc5-8ab4-4477-930c-c6796781efd3','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1139adfd-89e7-4f25-95a3-1c600ff48e59','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('113b3b51-2d7d-4c1c-bffd-cef0a2c56035','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('11955383-eca3-4375-b8ee-07897373db19','null','0a83b10f-8eea-498a-83f3-7df8780a8f68','8a74fa52-ab11-414a-92e2-5908d72f405a','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('119ec191-89dc-492c-a713-fb45f5364cbb','null','99fe50cc-cadf-403f-a959-f481234a167c','2f95d643-f250-422a-9dcc-1b3c3f732525','1.0',NULL,'Y',NULL,'fe','fe','fe',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('11e735ff-de23-4a31-8e8c-c8af0cc37ed9','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('11e7e845-7975-4e03-9eb1-b61c8a37f361','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1203cf96-76de-4325-bb58-0053f1c6ddb1','null','2ec4feac-d67a-4b9f-b95a-f9f65e3ad4e3','b875f1c3-0308-4f32-b87c-856d19293f96','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('12375bce-022c-4842-9321-dfedcf42a359','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('12b65d89-eaf3-4353-9810-d9d0848539e0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('12cee19b-3c7e-4a61-9c3e-123702c6a2f5','null','46ab3cd7-6880-416d-b8e3-a9f3fbf197cb','b246c2ea-905a-4707-b191-29c752b76a5e','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('130faa79-9b52-456c-b21c-ad45c8bb9db4','null','18f47678-e346-4149-96fb-ebe50cda4f04','63cd6a88-45fc-4da0-b118-91641b9a2a9c','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('134626fe-118d-426a-82d3-fb0619fbc475','null','74cb4bec-db68-4888-9c40-5e26776541ef','c1ce217b-343f-4d43-a7b3-95ac392aced0','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('13e3d5d9-dcf2-4a8d-bb66-5a2ea61f79ba','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('13ec94e1-b04c-4fd1-99e6-c982020e453f','null','c4e5fb37-2a68-4687-9f4d-939b6501fea3','acb904f1-c258-4e78-8d27-850c995d9fa3','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('142e0921-694a-473e-b5b6-b974a4b5b0d2','null','39fca8db-3cde-4c23-b61a-508c4d0641fd','23fd690c-ceac-4847-b61d-a4621ea834ad','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('14fdd90f-1dfc-4227-9c88-28e1ed111b34','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('153c72a6-3ad3-410e-b0e9-b2b6a4ffa66f','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('156f559f-0e61-4940-a0d4-d45639833b9d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('157fccbd-2462-4370-bbb4-786c9b2e0815','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('15a549ee-36fa-4775-9d22-e12cafb1cc22','null','936ae33b-9cbc-429f-8517-6c540f884fef','19236636-177c-4ae5-b8bb-fcd5a29fefa5','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('16412ab7-109f-4c1f-beec-8a447255290d','null','f596ba90-dab9-4be9-8002-e8ecd3906d5f','ab087889-fb19-4973-bb9e-2fd1c25be0b1','1.0',NULL,NULL,NULL,'cognos','cognos','cognos',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1669c0c1-40ec-48dd-825e-ec50916968f0','null','2bad24a8-c657-4b83-9418-86f2384b9b8e','dac6007d-c20b-46ed-8d7d-fa8fab319e4e','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('168fe2e1-4cd2-4d4a-b647-2045d10b878b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('16b581a8-30b8-4cf2-a199-70e0b1311c18','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('16b9c577-9176-4df4-8e74-39fce3c4ae92','null','a334ea62-22d3-4b33-8cc0-c84b77344a30','8e01babb-d2c8-4e4d-bd63-e139c3549599','1.0',NULL,'Y',NULL,'ldap','ldap','ldap',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('16e20667-0700-4aa2-882d-cebdbe650ef1','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('16f679a4-35c3-4485-9ede-4042dfe1c201','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1782c476-7f94-4c01-9921-02459a6ce3cb','null','fa8bd3a6-bfc2-4c0f-b8c4-a21fc121e18a','cfe2bb58-8c31-4395-b632-ad82f3f24c3f','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('17bd986c-d4ac-42dd-9618-0073427967a1','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('17d5c405-cfcb-4abc-96e4-a0e6fce100cb','null','f1217a3a-8fcc-46bd-a331-c120e9044260','0016a9b9-436a-4969-a629-78b379bad2c3','1.0',NULL,'Y',NULL,'dns','dns','dns',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('17e57524-24b7-4e8e-8425-3ebe49a04ca8','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('18981d0b-5d2c-4021-b7d3-a81f8beaa830','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('18ca2316-4d64-4295-8797-cc7599c0be17','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('195f76ea-8256-4a07-b525-b40267c37b21','null','1b48a3d5-9f28-4e02-80d9-14fccc9908f3','333d1cc0-954d-40b2-a4ab-a1cc74c3f3c7','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('19f675fc-c648-4a7f-94d9-f24fcb47bdc9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1a4909ab-73ee-4088-8cf6-45a99d076991','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1b8c9fc6-be3c-4570-81da-97e76a7bafbb','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1bf49c1e-80a7-4039-877b-79da95053258','null','473fb54b-ed67-4725-b7e3-674e96c55649','37f1531b-a288-4c49-8c02-3ff17212c89e','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1c0632cf-4a76-4b17-9194-b294dc1ed460','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1d63438f-8683-481d-af5c-8a440ff6c86e','null','2ee82e43-6879-4dbd-b720-4feae04a788c','c1b4c88d-e538-4c18-a712-19832db42ed7','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1dd16655-f74c-4484-ada0-656484588424','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1ddb4d75-211c-418e-a50b-cd7242ecaa19','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1dfcaa44-2b6f-407c-aa6f-89d12c850a13','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1e262dce-063f-464a-87d6-f7d82910a1c7','null','5818d233-caf4-4825-a7bb-144bbd731329','b8c28cad-e97a-4ee8-bc64-119b373cf98f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1e3d921e-1df6-4bfa-9a94-939586fc9843','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1f57716e-b0a0-4e25-bf81-7b8c9c1a2593','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1fc2d7f5-036f-4a77-b840-83277e76f13c','null','6a8ef342-f873-4fa6-87fc-c8315cf1e670','8ff1df7f-8c97-40fa-9f86-a4a40e0b5e3f','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1fc481ad-15cc-4bff-8e32-d4c59bd4e2e6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('1fdb9130-1cf4-4c50-b72c-3379e4cf0efe','null','bfc3b33b-6bac-49ef-8d48-f732937bb75c','3d9006dc-21b9-4ce8-924c-053757611565','1.0',NULL,'Y',NULL,'msrp_msc_a','msrp_msc_a','msrp_msc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','version','policy','Y',NULL,'naming-code-1','vm-type-1','vm-type-tag-1',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('20111295-e578-4039-9adb-5a8443a8a86c','null','8a8a0fb6-8a01-492c-b131-a6894f41cc74','f57ee0f6-6f98-4ec9-8b04-b03fe0bf6f21','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('202e7744-8c3c-4915-b654-15488c602bd9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('20449785-a2f2-4c89-858f-b22a27835136','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('20a556fe-312a-41ab-9a03-374063d23aea','null','89fe5872-8061-42f6-a707-6bb8323e3055','a24dd75f-2b9d-447c-aa9a-76e2c1e9a6fd','1.0',NULL,'Y',NULL,'sprout','sprout','sprout',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('20b7262a-15c4-4644-8ebe-7921d6c18123','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('20bd05dc-f26b-49c7-8738-f4109b1177d4','null','1b9d7f98-60f9-476a-bd30-dc200fa89f93','0318d0e9-d938-4c4a-9157-848e5564f717','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('21352862-eb18-4867-8ea2-d524f2f98647','null','d37e1483-cec0-4311-9601-ada3bf5bedea','2cada292-0bc6-428a-af64-7ec0d28faf02','1.0',NULL,'Y',NULL,'bono','bono','bono',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2153c384-b814-4630-8756-e1477228dcb4','null','779329c0-9056-4e55-a2bc-4512268f462e','cd30fe8f-6a81-4b02-89c9-38f463a58e3d','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('22245ea3-605f-4a9f-94b9-cf39ef7f3c0e','null','2f21b65a-7513-4bf9-895a-6ed159057121','04ada531-a377-4488-b8b2-76da20fee49d','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2262746d-fac4-490f-8866-a540a6058cbf','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2296b1d8-a70c-479e-b8b8-b8a7de9ef44b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('22c63259-70c3-4d19-8f75-47ebef517be4','null','6993657c-6ea7-4554-90ab-9cc4b01fe929','347947f2-eec7-42e5-9b2c-46ae2fa38ccf','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('22d1c351-6d11-4184-81ac-af81d4de101c','null','2b60f774-37ee-4121-b28a-8883b20a0fb8','f028b735-c52b-42a7-ad34-bc51d14037ad','1.0',NULL,NULL,NULL,'d2ice','d2ice','d2ice',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('23b0fda7-3008-41df-a3c0-b25dd54a3f77','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('240d4bc3-8350-4882-abc6-efa6d477fbff','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2435ffd0-cf02-4c82-a6df-655986b2518b','null','25160afc-3d87-461e-9bcb-5c87cdd14858','7434e326-25bd-461f-b5b7-2be901a9dfe7','1.0',NULL,'Y',NULL,'vaaa','vaaa','vaaa','ubuntu-16-04-cloud-amd64','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('244632dd-0eaf-481e-ac16-3c6952434b7b','null','af6d9190-974e-4227-86df-ffd517887f61','f69d1c42-f423-4e8d-90c8-afee2f435651','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2461f70b-edaa-487d-8bab-1646c4f24515','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('25011296-744f-4cf6-80ed-476758829e90','null','5d9c5b7e-bab1-4409-921e-333ecc9f76a1','ad09505d-a09d-47f7-8612-4852046b6ae5','1.0',NULL,'Y',NULL,'vweb','vweb','vweb','ubuntu-16-04-cloud-amd64','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('256c73d2-1aaf-49fb-82a9-c5236f139e9c','null','e2a1695a-4738-45a1-95fb-6b9876d72989','64eb97fe-401b-44b1-94c6-890e017ba2f9','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('25d3be48-fc4b-453f-96de-97e07e6c18f5','null','8a496682-3285-41a1-9a6a-35da76bfeecd','24dae213-c503-495a-8086-0c4377d5ca70','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('25d55f9e-a84c-49d7-89cf-7a8c8eea8bae','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('260143db-a9ff-4415-bfb0-c35a7b7063af','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('262cbb0f-c6d4-4cf0-9281-1f53c8ffdbc3','null','4f452541-6af0-42b1-b297-c8f308475a56','dc573479-521a-4ad5-8b6f-8c13b87fc091','1.0',NULL,NULL,NULL,NULL,'vdbe_node','vdbe_node',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843','null','27606886-b4ec-48c2-8a55-ba7e551b6b4b','2ff33bb7-c53e-4829-a7b9-4c698f2d464c','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('269a1dc1-96f2-4b0b-a8d6-0b322cd1f7b0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('26c479ff-a252-4510-950c-e8ec996e4f0c','null','16646ff5-a6e1-4ffe-b865-0b60d651a858','823ab43d-b194-43f8-8b02-2146f4b6092e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('27bdc15a-5ed4-4529-97ee-0c1960e5528c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('27f4e949-3263-45d3-a592-20eb8492556c','null','8e15b51a-5e4d-48bb-8c09-d7a8949ca333','89678cef-a1b3-4844-beba-4b2c4a34e132','1.0',NULL,NULL,NULL,'qloader','qloader','qloader',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('27fde274-45f9-499d-9d7e-7a9196c680b2','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('281f4841-4a67-40a8-ba1d-c1971f82ffb7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('284c3ef2-99b1-45c8-a5f7-14e33ee08676','null','a8f2f314-d7a8-41f3-9752-a6b22fb15a57','e49cf9e1-a63a-4f9d-9825-06c2661bd33c','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('28ed6793-760d-4b33-bf48-367adcbe26fa','null','51eec557-e371-4af9-b6ab-d09e7ca5d904','13cf44eb-7dae-48e5-bbee-e8b3bf26e9ef','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('28ff8b3e-486a-4f15-bcd8-5bab711d5c33','null','00c0b60a-689d-4840-87d8-4c23ea4656a0','9cf253eb-b103-422c-a432-f1ee3f7538c3','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('299426a1-ece5-4fbe-b449-2cfaa1788c98','null','fd2c7c18-aa25-43c6-940d-f496d8e0d3d8','be447d18-0340-4f9c-937f-d742dc8b961e','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('29f53689-0d3d-431b-99cc-57fc002f5baf','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2a811181-e613-4ec8-95d2-893d4007cbb9','null','1f3512c6-94f4-4609-905e-267e95addf83','4696c1b5-3781-4413-b3b0-14082a51da0b','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2b44c9db-28e1-45aa-b297-a4511d5317fe','null','8d111ea9-21e7-46ed-84cc-8cd1f6f5c0f6','99abdfab-fecf-4332-a080-7889760e3cdc','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2b480094-9d68-4a65-966d-af1d89349143','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d','null','915c8ffc-c334-49b2-938a-0d8a6e85f3b0','da4f670c-9a6e-425a-9d0a-791953e8664b','1.0',NULL,'Y',NULL,'vweb','vweb','vweb','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2ba8635a-b069-4787-910a-9b57043244ab','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2c4cb9db-c093-4c7c-ad3d-fae4ffa17486','null','17ee4aa2-cc4d-48d9-8cf0-4680ce60ee76','f5a2ab55-33a0-4a91-8315-cf3e44aeaf00','1.0',NULL,'Y',NULL,'bono','bono','bono',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2c5c862d-8e31-4559-bf66-4a396e847b2b','null','4363ec32-ac12-46b5-a681-da39c9b937ab','071040aa-79e1-4451-b0f5-582e8e59efda','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2dce2d53-9cd0-40c8-87c7-4318165c4016','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2deb1937-f627-42ea-97d7-ea6df8f525c1','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2e708833-1f3d-4653-a0bc-5328b73bbbf6','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2ea04d4a-84ce-4641-a879-544477584f72','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2ea978ac-2761-424b-af1f-c0707ccdbfb1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2f381c15-0fe9-4c88-99b7-5e2f165a38db','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2f6e792a-63b3-45a4-b9ae-cc38b4301bb2','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('2fc889a4-d5a0-46b9-a502-6411db0c4a1c','null','f2c4a5c4-d809-4d19-9c02-308b34e89794','65d44361-202b-4aeb-bf5d-ba318fc1f34d','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('30145f1d-140a-452b-95c9-0530a5ece13d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3018cfbc-fa08-4dbb-b2a1-195267d79b1e','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('303059e0-a0b5-463d-8e96-5c85ff0cfc46','null','686d2704-0892-41aa-8b79-b7360fe6903e','e4ac3c72-2437-48fd-907b-6418b691f798','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('30969396-fa5a-4faf-9163-db6484e54e59','null','f8248051-b29b-424d-b87d-6df6d1a23ab8','73a85ed6-0b6b-4ae2-be9b-3efc011650e3','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('30c35db4-9682-4f55-92d4-142079dbc5a1','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('30c7d426-fd01-4ab1-9a87-3c53bcd23d88','null','05814c22-d7bb-4d14-93ba-d2079f2666e7','84bb300f-48cd-461d-82a8-f24b0e54cb3f','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('312a26bc-b721-4ed5-a402-be0e502c675b','null','8d5acbcc-77b0-43ee-9775-8f4cd8fdf949','b50b4639-baf7-4472-9acc-fb576bc007e1','1.0',NULL,'Y',NULL,'xsa','xsa','xsa',NULL,'nd.c4r8d0',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('31608b19-4efc-4620-a248-61147f9ec8a9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('31b53e81-28c3-482e-842c-0ebd21053b59','null','84e0b247-cb3e-42d5-abe8-a8b43ba2236b','a75552e8-3868-41ab-bbca-12ed6bbf62e0','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('32365da5-1a59-424d-8397-4fbce1bae4fa','null','dd03d850-e91b-4ed0-bde4-0e721e76d013','1ee5d912-91db-46cc-9735-0b14d9463f7f','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('32b1b5a1-e05d-447d-a5ff-9c247bfdbc72','null','d94bdc77-144f-4b50-a351-aea5cbc9de4f','d81064dc-bf74-44c5-afcc-e17916a915d1','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('32e76c6c-5676-4ce2-96df-e8b8adde7d42','null','daceed99-fb22-4518-b962-f7582a83f899','f2de251f-55cb-44de-ae59-febaf171201f','1.0',NULL,'Y',NULL,'sprout','sprout','sprout',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3303c8ea-2e16-4a3f-96b7-fa98132560e6','null','196c64ee-ec75-445f-990e-08c6c9635298','16da0427-b36f-40ea-bb63-a68bf9a84272','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('332fff76-b67a-4970-82e9-4e6db5fc0e36','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('334add61-2118-4e75-8db3-5674849b5320','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('33d693e1-61cc-4517-9eec-56fb0572c93f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('348e928a-e3d1-4faa-ac35-a1e2d6768fee','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('356e5394-90ca-4dfc-8ade-529077b727e4','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('35726559-7135-405b-9691-47ed50bcbc19','null','55ef56c6-5f0b-420e-a787-64944a746d89','99e3482a-d42a-4ffe-aeb7-9e9ada03c8e7','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('358b84ab-f1af-4c42-8c81-c92801eff167','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('36102a1b-ce2c-46b9-967f-30318db23a32','null','0d54acdb-fefc-4d60-a429-ef351dc2a1f5','a10ddd8c-4366-4394-8854-6bf7b0d0014b','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3665d859-180a-4314-beac-8f1877f2697e','null','9645e0f8-e537-4f9d-b137-8d16251f7138','4ff38825-5106-43de-971b-90b46d2e4e26','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('36eea4ac-8f88-4323-942d-7446fbf9639a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('372ee369-1d49-4aa2-acc0-1ef806a4fc03','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('376d659d-528d-41f7-be51-39ef57834ec8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('377825eb-e83d-49b6-81ce-c99a0d30064e','null','c5e5ae98-7ad9-4a05-ad58-18329ff34ec9','50b3a4f1-928a-4736-95b5-7b040d4a631d','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3794aacd-6535-41c8-af1c-02e300ccf50b','null','9c9a8369-9e89-431b-9e73-9d483b2cf7e4','8d2e734d-882e-4998-9c8b-413e2b9d1241','0.1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('37e7c1c1-d886-47e1-90a8-f907fcb312c3','null','849f2d15-7a03-4a2f-b408-275afe6f890b','ce4c3d39-a19b-4dd1-b7ae-9985cb39fcc4','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3827c05b-6c06-42c8-8725-b95353f97d9d','null','27c16c65-2ecb-4c7f-bda2-96aeb31e5ae0','8e7dcc7d-9aab-4509-b3c9-81ef4cdb2ea5','1.0',NULL,'Y',NULL,'iox','iox','iox','USP_IECF-IO_30.3.3-mcas4.4.6.qcow2','nd.c4r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3850fdff-11a8-40b8-8bc5-f589c42a6702','null','60b620de-1ff3-46d3-9ae9-672b47ef0b27','75b70257-ee09-4481-965c-f3397849623c','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('38f47dc0-dc33-4375-98a9-0a9d37c9ad4c','null','ce213aac-bfac-462f-804e-a33091598aad','d65d9977-6053-4fba-b75f-a2fa315cd9b8','1.0',NULL,'Y',NULL,'mmn','mmn','mmn',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3982125d-dfc4-487f-862f-66e1e7f78d17','null','b3bf2d8e-a28c-43a8-9d68-a08a39502faf','38b82ce2-7b45-4f4b-bb2c-bdaec51fc8a5','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3a05ede5-360a-4f5a-8cad-072560dd4406','null','1451a853-2fc7-4858-b1b4-72fe23395a6b','4a920796-cb97-4bd4-8724-c2e6155a86e4','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3aba87d2-cc84-44fd-bc43-190d750f1e69','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3b08d0cb-3f1c-4178-8dab-bf7b85782f00','null','09f0165f-9d58-461d-a297-fbb3988f47ee','73486661-ca17-4cd1-a1d9-114ad4174341','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3b1b59a6-d272-4ece-9dfb-ca87f0f793cc','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3bb96b94-bc38-47ef-8202-f4c1f4b27beb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3bca6d26-d1c1-4ec1-9bb0-92ac6ec98dc0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3c0ebca7-bfe3-4a8e-8167-93a7878c9bef','null','07e7ca7e-fca2-4131-a73e-51884ac6f4a6','6618af0c-d1e5-4813-ba39-228f2ad99128','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3cdfd81c-3bb5-424a-af61-ae38a0131317','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3ce98db0-0653-4d31-b065-a61a1959ac5f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3ce99b7c-9515-48fe-bb98-62f22f2fb005','null','5ec38b95-96cd-4cb1-b90a-484f4b13bd1a','c1374c40-adeb-4371-9d71-209c0315aef8','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3d1957d7-1eb4-4df6-8469-74bccd0bd11e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3d370a1a-2529-4c8b-be72-e4bf088c8e8a','null','e6645581-0cc6-4e7d-a4dc-42124c8e364c','4b91bd36-feea-4a40-8304-609285032caa','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3d8d3b5d-9c34-415b-8c74-7f0a9c7bda51','null','ced31a1e-b4ad-4fbf-aefc-1a3701f16bc4','b302fc76-1708-4ef9-a217-231620ab4154','1.0',NULL,NULL,NULL,'nems_fe','nems_fe','nems_fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3e3471fb-6ca1-49a2-abe6-40e7a864f767','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3e37923b-b8cb-498c-938f-a19449908f52','null','bb8ff02b-6404-4e81-96e7-33999ed0fff3','62c39097-93b8-4d9b-9fa2-6c3e0d36d729','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3f777214-6a28-459c-962d-8ae02f45da94','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('3fe28b6e-6631-463e-8044-5062f2ab133c','null','39b2008a-1fd8-4af5-90cd-5bf098bd1123','ad7c0ec9-fddf-42d6-8c21-999a83ea0eb5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('40183eae-faec-4e45-bfd2-c16565cbc034','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('40821124-8d95-4f55-91e2-608e72ffe6d6','null','21d87e48-2aa9-4f8d-9daf-268b31363a31','35a3e997-8208-4040-a4b3-0a6d39e198cd','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('40a486a0-8420-4d2e-b2b9-fdd5d757f60c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('41185191-dbed-4382-a9ae-f0e847fec9ff','null','83429bf9-49f1-4187-a5ad-afc329a84e76','ce422e74-7e58-4464-8a54-61e21f3ca7e5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('416b75a7-32ea-458c-95fe-c14854d618ca','null','2cd8a808-e1e6-4d28-b6e4-fc29094f26b1','06223028-84b2-4b8e-b579-9ecffa9d66f0','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('41d27492-bfe6-4588-8f7f-d280636b667e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('41e0211b-d990-4d09-845b-b98c9bed3f07','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('41fb28aa-44f9-48ee-9bb2-d4db999ea4b6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4209ff94-bb09-4a7e-a8cd-ef7691d20faa','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4258c5c9-19f8-4942-a820-db7a646d9310','null','c5eaa410-5dcb-481e-88a4-44434fc9c58c','c3b635e7-4bcb-4537-b1c2-edc9ca45ac3b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('428b0e01-a072-4d21-924e-2f692fec7277','null','7a1a7790-bbcd-4aa3-9c84-345ca1c4b52b','ffcfccb9-8813-4d8a-9f29-a6cb4dd4e754','1.0',NULL,'Y',NULL,'plt','plt','plt','USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2','nd.c2r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('42ab4b8a-5046-4b5b-bfff-8503dc43f257','null','1dde5066-ec47-470d-ac78-f741f61885ec','0ec3151a-dab9-48ae-89e8-f1a88b73fbf6','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('431f242c-8b94-4f4e-873b-6546f1ed60a1','null','f2d2ffde-5ed8-44ae-9471-f8bc0a51a89f','0b882f5f-b364-4603-85b5-e8cc94a11fe0','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('437d3bd7-2fff-4642-8a87-5396aa90128b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4440906c-a7e7-478b-a637-812999219fd1','null','a2a4b5bb-4e1e-4eaa-b5df-ce972afb1566','ab437c3e-7fb6-45e5-b8cd-f1af9fae9ac2','1.0',NULL,'Y',NULL,'vgw','vgw','vgw','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('449e1e81-848e-45f7-a1f0-14aa9bde238b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('457d2c5f-1899-43b0-85b3-caf5866a6065','null','eaba5eb8-c480-47dc-b046-9ac6fc886077','aa524dcd-f38a-4f07-8288-af7cb10569d7','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('466c9e3c-6a64-4ae8-8900-07dd5f2f1473','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4682caca-c19b-4f1e-a8c2-b68ac4fc9c5f','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('46e79c61-9476-43b3-b1ee-7b39c8569531','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('46e86198-aec6-4036-b38e-c1cbd3e7e349','null','223edb5e-cdb3-4a32-97d0-46bb57c99ad7','bf3c23e2-0ee4-4e4a-a7c5-e0e6b6625706','1.0',NULL,NULL,NULL,'pps','pps','pps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4795998e-8cd5-4b8f-ada9-fe9488392da8','null','dce46f0a-e270-4779-90f3-83857c9f8798','3595004d-f5e3-435d-a8f4-5f1cbb5b1aee','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4858ced6-3fe9-4803-91ee-a10a69239496','null','16ecac80-118e-4826-bc18-9bd527126b7e','b3e8dc25-ba0e-4ba6-b301-b66a05043040','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('48687b06-df68-4180-a0b8-bafda155ea4c','null','2e5549f2-9d83-4916-9fd8-fc0acf7c8a33','80b6e3e8-1193-4fee-ba25-c20c01517d63','1.0',NULL,'Y',NULL,'ralf','ralf','ralf',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('48e19b0c-73d4-43c1-8172-a603cc6a0a27','null','d2fea408-a0ac-4074-8ff1-3ca271aa981e','814192e9-ff9a-4d44-914f-b0cc37fca163','1.0',NULL,'Y',NULL,'homestead','homestead','homestead',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('48e45c5d-e7b0-4dfb-9d40-40d122ad1c44','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('49036c1a-217e-405d-bf5e-08c9a46d57d7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('493be6dd-c307-4d84-bee4-2ed50e044f54','null','069f2359-0ddc-4aa5-b240-25ee8ea545c9','d901e0a6-31b7-47d5-8648-e78881c54c48','1.0',NULL,'Y',NULL,'vbrgemu','vbrgemu','vbrgemu','PUT THE IMAGE NAME HERE (Ubuntu 1604 or vbrg-base-ubuntu-16-04 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('49414e75-93e9-4f8f-bc79-49b6655bd4e5','null','230bf8f6-f204-450a-af6d-9cc65fea4f76','7c19492b-dc31-4319-8213-7b9ff791d314','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4aa42ecd-6cb4-4759-8fd3-6c2fae4a2034','null','179a86ce-e6b0-463c-bd4b-03595729976a','f18ee363-2b6f-4408-8a93-1dd8ab5ffb42','1.0','nfc.naming.policy.robin',NULL,NULL,'nfc.naming.code.robin','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4b922450-c9a6-4533-9d24-92f1b1f84160','null','80ebc47e-1f35-4ab8-a36d-2328a4a6985b','d6a00b1f-e12c-4145-9842-0ef6fc4fd69a','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4c0e88fe-b367-46c2-ad07-fe7a8cde6f30','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4c6c958d-b1b4-4aef-a768-0618a5650527','null','583301de-2a2e-40cf-98bb-3018be595871','26eaff4c-c6e0-41ee-b02e-27cc1208ed73','1.0',NULL,NULL,NULL,'configurationrepository','configurationrepository','configurationrepository',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4cedb213-a6ed-443e-8f8e-67cef4c87e47','null','58ce4658-3fcb-4b6d-a04e-43655908f50c','732be459-eaa5-4263-923e-21d46599740b','1.0',NULL,'Y',NULL,'ssc_b','ssc_b','ssc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4dfadd90-d618-4c8d-b47d-60efebf6d01d','null','cb2ab141-3a2b-4ca8-9c5f-d19ff7a6bf5a','ebf0f8cd-8a8c-4348-bfaf-543238315697','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4e09e0f7-6b42-41f5-b197-2ecfd4877987','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4e7f65c4-94aa-4826-b401-c7f75d7a5e97','null','3bcaeab7-d987-4faa-abb6-0ca59f1ac661','4af66211-80b1-44b5-b68c-212c4921295f','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4eb18412-12f7-480f-b232-5a4c4cb2fade','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4f2f5f08-8a0b-4828-be27-5ff1a641ed6a','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('4fa2c6e8-bd95-4440-af00-390e8fffebc5','null','85bb6bc2-cd25-4bb2-98a4-28cc47d270cb','73717171-1684-4aea-acfd-7abc8533fec3','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('50432d50-169b-4592-93c7-7df340829872','null','88404161-33c8-4225-9b11-934b2686b005','f3264aab-8f59-4942-a118-2663e445e055','1.0',NULL,'Y','Dev2DevNfcFunction','pd_server','pd_server','pd_server',NULL,NULL,'Dev2DevHighAvailability','{ecomp_generated_naming=true}',1,10);
+INSERT INTO `VFC_MODEL` VALUES ('5051c268-7bb5-4d56-895f-8f829087025a','null','b95401c8-5c5e-48b7-9839-d581cfca5935','4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('50f47cdf-1c8b-4843-b331-94927f239a6d','null','9c283f37-5516-427f-b230-37fc356852b6','95a81e90-cd52-4adb-a31a-957691fb11dc','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5130f20f-66c2-4ae5-8f93-bdb4ef857585','null','44874be0-cc1d-48de-aed3-d34b8be81ec4','d86fb88f-4dd9-413a-8f09-2c6638fd9b14','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE','PUT THE VM FLAVOR NAME HERE',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5165ea8b-7460-4879-b6da-5a9bfc4380b8','null','be545d42-bfa1-45c3-8c74-2febed777c45','4c5e5e35-19a6-4551-935e-44c6a4468b1e','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r24d25pin.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('518db694-1c7b-458c-abbe-b9676fdd68e0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('51b414f7-8f44-42be-94bd-8e83c7bebb6e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('51d4e18b-ee2b-4f40-8812-4904d310e500','null','4ddeea35-c041-472a-853b-40b8974dd9ca','140b8590-3d21-474c-9cd2-72d71eae93ac','1.0',NULL,'Y',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('521d3ae4-ad2a-4479-8b47-2b8e2f265a8b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('527637d4-3f1b-4453-8a73-63be37d3ff3f','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5418661d-07e1-403a-8caf-03f5442f2308','null','bb073a19-69ce-42cb-9dad-9fd2f10869f9','ff8c866d-e5b7-406e-80fc-3767c4e095c9','1.0',NULL,'Y',NULL,'vaaa','vaaa','vaaa','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('542331c9-6001-4760-a7d6-c2946a68e5aa','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('54325dd2-d646-4f36-bb61-c1657771bbef','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5453e348-8c2a-4ae1-9c78-13861de6ae4f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('547126cc-f04f-458b-906a-ecb8463a058a','null','8d111ea9-21e7-46ed-84cc-8cd1f6f5c0f6','99abdfab-fecf-4332-a080-7889760e3cdc','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('54b6166f-1926-4542-899c-fb4aa0a3254b','null','8a33e6d3-ba02-4004-a057-d8deefc6a217','1941965b-d36f-493c-90d9-cfe1085ac402','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('54d33de8-a3a3-48d4-9616-7976d894162a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('54e94ecb-84f1-45d1-88a3-235e6a229ad3','null','55dc46be-b1e3-453b-acf8-2e104f92d5c0','f9bd14f0-a4eb-411f-b3d9-6599336dca01','1.0',NULL,'Y',NULL,'ellis','ellis','ellis',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('54e98abe-743a-400d-809c-095644d92dd9','null','e2a3b48a-a1a7-4993-b606-ce90436c2453','1da48e1e-d2d9-42cb-8aee-20761d3cb257','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5543defe-8d08-4cde-badb-fc68eade5100','null','e113d30a-8a62-492a-837f-735a4eb88db9','eb45f98e-31d1-4c8b-afca-7412defa9056','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('56079609-0b08-4307-8f61-2bb1545aed00','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('565090e4-6b5f-4690-8743-19cb7716fa8c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('565a8a1c-4ccc-49cb-a3dc-5f8f8ce72c51','null','6b67203e-d718-4b4d-8fa5-3308b9d6d909','07ec6c1d-5336-403a-a41c-950cb68956f5','1.0',NULL,NULL,NULL,'prx','prx','prx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('56f74777-a946-46d2-8ceb-c7f0d124894c','null','c5f1a3b8-fd2a-4938-8ff3-734f6049d0b1','d522e5ca-5bb6-4e51-8ca6-99b59fd789ae','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5790fb74-2ac3-4340-b69a-08bf3f3d126b','null','1c2ec7cc-2558-40a9-a5de-23ccca42f2ed','2717a36a-1b5e-421b-8794-65c7a92763a1','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('57ce1650-9b4d-4a45-bee1-b4e841fadfbb','null','dec68ab1-24f5-4d83-a37b-80c716bb4c31','bf2cab5b-a968-48bd-b4bc-65914bba461d','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('582e18c1-689b-4516-9855-7fab1a489b18','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('58cf0015-fdca-4c3f-98bb-53c863716fd4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('59330f0e-f45f-4111-bf21-a4bed5d4b30d','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('59698c21-7013-4e48-9f7c-bc6f9ea2562a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('59817abe-bbed-4aeb-a1c1-5cb60b043543','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('59b22558-fa49-4c10-af6f-a38ba93fbc5c','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('59cc25b6-e415-489e-aeab-e5edde982605','null','d1167766-829f-4022-8592-2b0edfb6069e','184c9f75-7577-4996-afbc-1ccc5419e015','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5a119889-9974-4a98-92d5-96a715f7c24a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5a661196-c961-4286-9198-564347fea738','null','0d87f028-90dd-4b2d-8f76-87a4b4b55b64','d9d2dace-1ec5-496a-88f7-63dc218e1d99','1.0',NULL,NULL,NULL,'itc','itc','itc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5a6c9ad0-e611-4ef7-92db-b40e420b1cb7','null','a181d0ff-11f8-4818-b98a-e14690db64cd','9baf379a-2c58-4788-9dcf-4a769dcd28a5','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5a81616f-3b85-47f9-b3a6-43ddc9d705d1','null','2b39f3e1-0dce-4786-9d9b-ec9613ce350c','96f733e6-9ed1-47e1-a77b-f1cabbecd142','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5a953500-41c9-43a1-bdab-48321b482c79','null','c117b652-dc84-43b7-b30c-12b21891f47a','95d3013e-11b2-4bdf-97ba-6e4a5a7c4227','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5aefee46-a414-488f-b648-cd02afaa7b02','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5b3263c1-71f0-4dcc-815c-9ebdfcb40a7f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5b453243-b3cc-4177-a218-c722216fa867','null','8cf7115b-cc5d-4143-b53b-96135982c0be','3aa0e405-eacf-4a54-b254-f95dd19a305b','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5ce95a94-dbbc-4648-a7c3-deea7e7997aa','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5d160958-74af-4327-96d6-d4bebe5e0465','null','23bfbe35-8d8e-469e-8da5-9d17dddef5a9','27daf0ce-39f6-4e3a-ae3c-d92bb253aa45','1.0',NULL,'Y',NULL,'sbc_a','sbc_a','sbc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5d2ec4aa-6e7f-4841-b67e-7b31a4e1858c','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5d9f98ca-8553-4dd0-98e8-a6fe6de2ec94','null','744574d4-1102-4955-8e71-9ac4ab301bbf','08c98244-6d94-4c3a-852f-b3d05e371df1','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5dc18cc5-64ee-4f43-ba4d-cc24a6305425','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5df465c0-9806-4790-8602-43ee2ffbf546','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5e482da4-33c4-4601-bae7-d4b05436e58a','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5e910229-fbc5-4347-910c-e293d63934f7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5eb99594-a29e-4943-8820-fd63de08170d','null','10df99f3-77ae-4e5f-b80e-f7f151a62d0e','a3c9b528-7bcf-41b9-aecc-6c77073cbd99','1.0',NULL,'Y',NULL,'ralf','ralf','ralf',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5f309a70-35f3-4b2b-9f06-71c70b39f3a2','null','cdb897e2-b3e0-4365-91d9-a603527fb52c','50148aff-51a7-4251-879d-54dd039086ae','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5f6f8dd5-f078-4a8a-a596-8b18c81d4370','null','8d7b528f-ff3c-49d1-b56e-51ff3a826de5','94989b71-b412-4f3e-8823-27e9f9fb8ea9','1.0',NULL,'Y',NULL,'bono','bono','bono',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5f859628-9f96-48a4-a2d7-a97c1148990f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5fd8bde5-aa4a-4e3e-a9e3-f874eddc00f0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('5fdc1d98-154f-4d04-9d09-5fcb40b8c0e3','null','86093520-4a0a-4427-b1b7-1432a8ec0716','a8f3626b-bc8a-48fd-8c24-859943feed1c','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6006ec20-3a36-4b3f-ab75-a1fcfd5147ea','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('605ae21e-0b6d-4cd0-93cb-393313b4bbd4','null','c7d8fb73-f7c9-4dca-8c23-ddf11c84b8cb','ea5877e8-c188-4908-bc35-225bb4d4fb6c','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('60636dd9-1339-4711-b1bd-2c7de1e7791e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('612f98b5-39cc-4cba-8424-d889d44c68cb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6163e3b4-ad26-4b16-a3cd-d0f3a3c66214','null','a43132b6-23a3-457a-ad2b-0c2059ce06c0','e424e686-9ac7-4e68-b68c-ca7e546e427d','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6167622f-b602-416a-9bed-c38b157726f8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('61a24df6-cde4-4d83-ae28-ed1f60e85381','null','4a31d00f-a377-4273-b4a0-e862cb2ef56f','a36bb94e-b4b4-4ee1-a890-8a95d3c75f50','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('61ac4ca1-9516-43c8-ab0e-d869e3d5d011','null','6a7dd5e5-40d7-4d13-a761-e1ef754456dc','704735f4-3289-437b-9d87-2b2ea1a06a1b','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('61c7a13d-8dbf-4ed8-b00b-728f48ffa8b7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('625434ec-f721-4a37-a8cb-e0e901de4103','null','7ff1b44a-41d3-469f-baf2-7f102d47feba','1d4f0506-bace-4fa5-b38b-3c31ae5e857c','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('62d977c1-b230-49b3-8be1-4b5872f5e3df','null','629e5ac3-c75d-475f-8262-f53f6f761c2f','dec80f28-f12d-4ade-be99-d3ebf7635ecd','1.0',NULL,NULL,NULL,'virc_cc','virc_cc','virc_cc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('63227786-48c6-4e70-a229-64a4dd79d8c4','null','e3bd0944-6f66-4b36-9baf-2e3492e4d1e1','4f473ee3-5ec3-4b9c-a615-6a942c4729d5','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('634b1226-63e1-4a84-b9a1-e68a1403efa9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6383c740-0dc8-4937-8c0f-70d77fe2ee17','null','fd3d83d9-e375-4d27-ad44-99c84b5a5c26','eadafe4a-071c-4279-a898-d00d3dbda63d','1.0',NULL,'Y',NULL,'mts','mts','mts',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('63e225bc-c72e-42d0-95b4-9f9f77139c18','null','00db22fa-171a-42b1-8292-c6029717cdac','42d0b694-64d5-4846-8ee0-c7a1d1531d50','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('64088775-2a93-41a5-bb53-3206f9c36afd','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('64508b50-a134-41d4-a957-ba40718dc250','null','46ab3cd7-6880-416d-b8e3-a9f3fbf197cb','b246c2ea-905a-4707-b191-29c752b76a5e','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('64fd6f6d-aa6d-40bd-a883-5b8960e0f64d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('652259eb-1b57-4f6e-8d22-6420a8261938','null','8816c6b0-7b78-4485-b986-23b66b5bb73e','24c53a82-f4d7-40a7-a0a8-105be2bdd393','1.0',NULL,'Y',NULL,'vdhcp','vdhcp','vdhcp','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6522a054-632b-419c-b88d-e56a1b5236ed','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('65794907-4255-48fa-b710-86a806e23e99','null','b051c80d-d816-4c2d-a208-61410c68f6e2','81905a04-15f8-4f7a-8a24-3848cf419ee0','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('65ade596-5f15-4115-a3a3-e214cc95a129','null','93b69c42-b5e8-44c6-a9ac-10ce60054dda','4659e19b-dec9-4ff7-a322-78ba480f1767','1.0',NULL,'Y',NULL,'ppd','ppd','ppd','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('660e35c0-74cf-4c71-bc28-7bf9a769b5b9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('661515a7-71eb-4b65-9a67-4c3fe8915404','null','d273feaf-7e39-45ab-8572-bf19f546b06b','f7001d42-6a1e-4ca6-a82c-b075f6981d93','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('66518250-5925-45ac-bcf4-086bb8656b66','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('667b77ee-a50b-4889-9c7d-46d8cb934a63','null','16646ff5-a6e1-4ffe-b865-0b60d651a858','823ab43d-b194-43f8-8b02-2146f4b6092e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('66bc8dbf-26c6-4b12-9b87-c29b14cb1bac','null','989690d2-4811-44c0-8e0a-67d1a5097cba','2a23c13e-632d-49c3-8a0a-958e3d7dbe9a','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('67194296-d115-467b-99c2-bfd50d9e175f','null','d2c2c2ac-fbea-4a36-a8e6-96ec4906036e','d97a6a1c-7887-44ee-8188-aaa3a839462f','1.0',NULL,'Y',NULL,'homer','homer','homer',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6738c484-287c-4ecf-8095-0e38f0691482','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('677cf9d5-c18b-4fc5-a36c-4324dbcf3852','null','59f360ec-d2ba-4b27-aeb0-d35618afcb76','890f9c2c-828e-49e2-9c20-b2a77355149e','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6784843b-6ee2-4ea9-9245-2a9400ab9288','null','c9945dc9-208e-48d3-a482-96925abe89e9','f2f35403-065e-489b-8b9a-c5c46dd76825','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('67a8fd2d-c4fc-4982-8680-7cceaad13cf6','null','f2051395-8c0c-4879-8256-955cba5e96ad','50c05360-95f8-40bb-bd10-d495f7d6dba5','1.0',NULL,'Y',NULL,'bono','bono','bono',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6835d254-f980-4d84-b997-f2437090fd3d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('68386bcb-a633-4732-9777-7b997a448e5e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('686bdd0b-788e-4744-9e7f-32869db281ce','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6873c4ae-14a8-4ecd-9c04-24e20eb2542c','null','117e6aac-885f-4ff8-891b-8e2696ce4964','1de8217a-db29-45e5-9f43-2edc6c9d85d2','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('68d5f2b0-5ad7-488e-9803-43aeeab09759','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('694b2e6d-83ba-43e2-b405-d947e94dda5e','null','c3ecc32f-38c9-4583-a513-4a8b65b21a83','dca61bcd-2102-4003-b433-9b7a9d01dd90','1.0',NULL,NULL,NULL,'pps','pps','pps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('69a32834-078e-48c3-8bd9-3125da2489b0','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('69d27369-08ed-4765-a489-968e1fafadd7','null','c91280dd-70e8-4ba6-a477-810629137b3a','f338dc0b-5575-4c38-b7e1-a9d40010de27','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6a44b6b2-f7fb-4e2e-b8a1-e1342275b86a','null','5b7dd098-162f-4424-952e-cd0a0cd39447','87cc7625-fc88-4fb5-98c4-be288c1cc25a','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6a6754c1-9f43-4cf1-92f3-044b6147ddac','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6ac5b9e8-f995-4d12-bbcf-d76ba61ae8b3','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6aee8f5d-b063-4564-813a-8b671a3c5f97','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6b1675cf-f93e-428f-80e3-5ec838c73324','null','554d02b7-0922-42f1-b0ad-1acc91f1380d','920984a2-1ac6-4e29-b566-5a10a72c51d9','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6b8f77a4-c715-4a2d-92d7-d8a96bddeea8','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6b9dff87-0c04-4a10-a918-9b627e9ae0b1','null','2972ce9f-526f-471f-aabf-df99168287c4','f2609a4e-8bc3-4659-bef6-bf77667b37ca','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6bbd2dc5-5272-4012-a92f-f51387e1bed4','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6be7deec-f93d-48ab-a6c4-ea844da22d0f','null','0fb32d3d-d264-4bc6-95ab-77933bcf65b6','a77c9408-2cf0-4881-806b-bc2fd223018c','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6c227dc7-acf3-41e3-9d0a-7aded6164c33','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6cb2be72-7210-492e-9f4c-4647b54d6613','null','b0444e96-4474-47b8-947f-65bc6d95e9e4','b7e37bdf-728a-4411-9fae-d1f789de3004','1.0',NULL,NULL,NULL,'vth','vth','vth',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6cf1a3b9-ef74-49e3-b682-34e57f79e22a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6cfdeef0-8962-4d62-83a1-b11020d72aeb','null','11aa3eb9-b80e-42d9-b2f9-378e4da35112','ef6656e8-3029-4125-8d06-747429518439','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6d810590-688b-4419-aa25-04f0127a8286','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6e3b40fc-e28b-4158-ae96-fcdb901cb7f4','null','5bc33647-ba84-4ae5-8b0d-d310c512193b','3dced1eb-8c2b-49b8-9136-e7d912815e2c','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6e5b8879-0cba-4804-b80c-85004fb8c3ef','null','cb6c8aef-d755-4d35-b1f5-c5d07aefdbd3','8005d90d-acd1-42f4-b7e5-f2c25324d3d0','1.0',NULL,NULL,NULL,'timesten','timesten','timesten',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6e5cb98b-a24e-4b1d-9504-ef472ba3b16c','null','ddb9b833-5751-4672-8b25-bcc78eb0d447','9f1aca89-2f9a-4043-9118-fcff91c4593d','1.0',NULL,NULL,NULL,'ppd','ppd','ppd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6f39ab69-27f8-4def-b53d-906d272130b3','null','5d5282b2-1126-4a8a-aa21-f5b949d07ca0','89eacbb2-ccaf-4120-b1d3-0291917bbf71','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6f644aed-ee1d-4a4d-b2ed-a9c09a30aa7b','null','e22db314-cbc4-4855-9e9c-9fb503a376bb','de35db61-91fd-46b7-b123-02f528e055fc','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('6fc2dc9a-1667-4035-b472-9fcbb22e42b2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('702036e1-6270-4e3d-b2a2-8d6218dd325d','null','70fb6c69-f9bf-4a60-8104-b5d097578c4f','c6ac5abd-3f77-4c87-9a14-86c959a35dbd','1.0',NULL,'Y',NULL,'dns','dns','dns',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7040e1ad-9d82-42ac-a024-9ec2a454d8a7','null','176d464b-2c2a-4cd0-9c2c-9421c6636631','02302049-3007-4fda-9e34-1302757b65a0','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7047a19f-6e58-420e-b83a-fc5c5ca371a6','null','5de3f65a-9a57-463b-8f57-42307d9b27f8','900b6e33-ce13-46e8-b9e9-56d21e4a4668','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('70575d9f-6067-447f-81f5-ea0f08ffdb1e','null','b53cb5a0-ed82-440d-b202-d827469c1b5b','15082ced-72ff-4a76-9b75-20f103e50ca5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('708364f6-83e5-40dd-a3cd-1903cda658f5','null','e77e0faa-786a-40dc-aa43-4f303fef11ee','f50a5360-1a26-4258-a1e7-99fe806e1dc6','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7098128e-a6d9-4225-90ab-beac14b82ac5','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('70bf02d6-28ae-4bbb-9c37-0057017a15c9','null','bf3d2003-d439-423c-9389-09e2021f116c','dd83104b-5f15-41c2-8738-6d0bfecf8b71','1.0',NULL,'Y',NULL,'ellis','ellis','ellis',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('70e9a7f0-ce7f-446d-9606-2396e83503f2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('71c83b70-fd19-4961-910d-0715abe8cd7c','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('722602f7-f147-41fe-b72b-511af9552933','null','d5697262-b1cf-4b31-ac95-94fb30481b33','978dd3f1-84f1-458f-963a-52be9d81a3a8','1.0',NULL,NULL,NULL,'prx','prx','prx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('722b2624-586a-421f-9f11-97e442dd5806','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('725798c9-f501-4a90-9bc9-baba93016b34','null','ec1d2810-17b8-43a6-bf78-dacc26dd89a0','c726cf5a-f50b-42d8-89a6-3c55a21c1109','1.0',NULL,NULL,NULL,'par','par','par',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('726dd182-74f2-47a0-bfcd-fb1cea8d089f','null','faf71359-153f-4159-bc4e-290a85807d00','ade4b591-aabd-415a-84bb-e986d6ae635d','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('72c1a9fc-804d-4316-b6b3-bcec6e1cdcdd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('730589ed-f654-4727-805f-d845fae5ac9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('73909ae0-5388-4994-9eb1-47b334f23d4a','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('73c626ff-5b74-4f4f-a13a-a0998fa197e5','null','b2a5cfc0-a21e-47b6-95b1-d303f0b834a1','698a7342-8f09-446d-8115-a511d2b77dc7','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('73ea2af6-ada6-44a5-b9dd-921a65c3e3e0','null','7083fedb-430a-41bf-bb94-0eaf8b33fb30','39ff5503-11dd-4c6d-bf5d-1e1621cbf563','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('740d504a-2e21-430a-8354-11304c0cb493','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('743a580c-a23c-4a21-a578-905d5c32d263','null','ae4b9316-37fa-469a-b39e-951b1e0684d8','43c4a39a-5f99-4cd3-80e1-288de3cf7be7','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1);
+INSERT INTO `VFC_MODEL` VALUES ('74a491fb-98e5-4988-aab4-173d018a29c8','null','44add117-31e7-4e66-8088-d338f2a25dd5','55f758dd-7bde-44a1-969c-82953fc9623d','1.0',NULL,'Y',NULL,'ralf','ralf','ralf',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('74c7e2a4-6625-4fc8-8a60-02c0e72e0955','null','1636f12d-c286-43d3-9473-b9723d5795e8','0531806f-4fed-4888-8f9e-bee67ab71ed0','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('74e26dce-9df9-41bd-a224-37ee65fb2884','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('74efb08c-7d76-4955-abe2-131f26c7c35b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('75019b6a-8890-4a7d-87ec-35b64d18a34c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('75192ff4-b321-4ac2-a3d6-d734fc8a7d56','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('752db263-360a-481f-8613-5205e3755d17','null','9793e8ae-82fb-4225-8cc8-ad0fa8d0532d','03996460-8c0d-42f0-abd9-96f2fb388fb2','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('754b4842-29a4-4559-9695-21269097b1ae','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('75855b5d-2b59-4763-905d-da64b66f4867','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('75999c1c-01ee-471c-905a-e4b895b01026','null','4c65d534-a3d8-4e43-97b8-9220a27ef727','54e5eda7-baba-485d-9979-1cff464f4881','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('75fabac4-56d8-4976-899f-0119543fd2b8','null','e3f1a8aa-c1ac-4d38-9be5-d234d5c93d23','d35dbfd1-1c84-430e-ab65-252e47668116','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('76040bc3-a498-468f-978f-6d4e7b9281ee','null','29a93f90-907b-48ec-a34c-b9aa916f748a','fa90882f-9b77-49fd-8f59-46d15df379a2','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('767a2fb6-d382-4aac-bfac-b47c69cf8409','null','01071060-a604-4bd6-a228-2b3aebab1eb2','9b00b55f-c016-438f-9195-00a2d000a0df','1.0',NULL,NULL,NULL,'scheduledservices','scheduledservices','scheduledservices',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('76800448-f19b-4834-a0ce-65df373e6433','null','65f27cb4-bb17-48a1-96da-1317a1a97214','280e581e-35ef-45c5-ad23-9f9db4bfadf1','1.0',NULL,'Y',NULL,'homer','homer','homer',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('76b1cb79-11b3-4ade-867a-287368c711b0','null','c8935a10-d331-4cc3-8a16-3193dd459224','189760d4-5b9e-4287-b306-d27fc9cd083f','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7764f563-3f27-42ac-8cdb-481f64969cbe','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7775a765-9048-446f-b876-e0bdf8c4989c','null','81d23e7f-8cc6-49f1-b736-96eccad8103a','3b4e6f89-966e-4cb0-85ef-e8eee34b37dc','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('77812b13-4db0-4d86-abf6-a53f04bcdcfc','null','1c59c549-70fe-4a9d-ab0d-b65f29d6065c','dccf95fa-281b-43f9-a0ed-cc4bef6df649','1.0',NULL,'Y',NULL,'sbc_b','sbc_b','sbc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7876ab13-7ce1-4f13-b63a-366e7499c74e','null','76f85d22-025c-4d9e-89b1-0711f5cb09c5','abf7707d-0ed7-492f-8edf-436cd01f10cd','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('79aa3ba0-0a65-4580-a6f7-e6670578458d','null','4df3b2bc-23aa-4f2e-8a66-19b86f4d248b','057c1236-b166-4ac8-8067-c18901bf4e0c','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('79b7c82d-4cf7-489b-a75c-0d55d1f2cc7b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('79ce1cd6-854f-4c93-b3b0-1d0372d4a03c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7a105b19-b89f-42e5-be0c-cf27b891f97f','null','a8c5d8d9-7115-44f5-a3a2-6482bbbc8906','2a228b84-405d-4c59-bb1c-351893a473b6','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7b276e5c-e8fe-4057-9422-91eb3def50b3','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7d1c65c2-059e-4883-b28f-799f5dae4329','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7d3af2a5-4d58-4f65-80c5-e9f56d68e374','null','57b11c42-ecd8-46d2-95f8-8157f4eec30d','c7e7d4d9-8674-424d-856e-3ae81adfb9c5','1.0',NULL,'Y',NULL,'homestead','homestead','homestead',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7d90d5f1-df81-4a1f-b6d0-ec1237ec0ecc','null','559e09d4-8cd8-477e-ade1-56d12cc7ec89','16e20c1a-fc9a-48b8-afa5-bfa59dbacc05','1.0',NULL,NULL,NULL,'vvig','vvig','vvig',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7dd7e5c9-4337-4ce0-8fb2-ff26f0a3ca52','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7e59838f-0274-458f-a34f-9b91d79c3e1c','null','671e38f2-c1f1-4112-bcb2-e2300efc794d','c1075235-d9c2-4a8b-8215-7e3ccb168ac5','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7e943e8a-c651-47be-9e27-630b9efa5940','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('7eff938c-6dd7-4bb5-a39c-b7935329ee2d','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('80322740-def3-4b97-bc68-74735d1ac282','null','6eb9f47d-23c5-4f36-a5be-49be4c168623','6be1b41b-c7b5-4d18-bdbb-ab1784f2392c','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('805be1fb-285d-4487-a9a2-223e995df5a4','null','7609a0fe-38fe-478c-b46a-62ac6d7861aa','76a8998f-41e7-4699-b31e-1dc3e052989a','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','ubuntu-16-04-cloud-amd64','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('80a6176c-fcb5-42ca-a738-3fa40ea2660a','null','1bcebed2-1f21-4264-b163-931211b1bf26','883a1cb8-43ca-4a52-b6b3-225255514bcb','1.0',NULL,NULL,NULL,'cognoscgw','cognoscgw','cognoscgw',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('80ca15af-4b70-4ee7-be37-0b1de73051a1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('811e1edf-aa75-4d07-b98d-f47ccfa3ae35','null','078b52a2-53d1-4d1b-8465-05beb27dd991','cd8a79b8-4384-4018-b8f2-0be19981c206','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8127a732-3cba-4644-b86f-98327b512373','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('81d694d8-7253-400b-8310-a2d6489a523e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('81f47a35-0ed3-4df8-ae79-70dffcda63c3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8297192b-fb85-4459-aa83-15f19d3140b1','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('829fee2b-5317-4793-8c4f-2ac8de1b73c3','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('83c21766-f7b0-4c8c-a3e7-143c5469019e','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('83ce6e22-8cec-477c-b750-a37a14ae5450','null','ca5310cc-a0df-4f90-9775-d0a8741a1587','a417848b-ff41-4399-9d70-cc64a27fa576','1.0',NULL,'Y',NULL,'mon','mon','mon',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8439b3d0-35bc-48ab-8e13-6c08022a5a9d','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('859d4704-b610-4a2b-b112-000e403e823b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('85fdd64a-9f2d-4f27-a4ab-78f1a3a15200','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('86238ad4-5842-4d03-af1c-2f2ac40a6123','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8767130c-3c4a-41df-b78d-16d674949746','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('87715b73-66ea-4e22-8b92-d6130a757d96','null','ef8e9f97-1c75-47a0-a3f3-f2e932a44b40','5b9af18a-e42d-436f-b61e-08d55d6f3050','1.0',NULL,NULL,NULL,'apigw','apigw','apigw',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('877a120e-1d41-4f74-865c-8a9d32b7f00c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('87c8ce73-2771-4ac1-b592-1d0fdb0806f6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('890593d3-885d-4919-89da-838fa12b4790','null','7afbfe3b-a909-4682-80d3-f5a1a57713ac','83458031-84c2-4d06-b977-53fe9b5d8100','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('891c94d3-bcff-4d5f-8a92-f1ef951fd9c4','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('895bba6a-2e3d-48f9-9e93-7a3de18b703f','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8ab47c0f-a4c5-43c3-9ebb-6dba37f4c576','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8ac0cb3a-dfb9-478b-96ab-c5ff0abb9609','null','00648ac2-2381-4235-843e-882d30c6f7b2','7982cd91-807d-48cd-a3f2-0c40777b3df4','1.0',NULL,'Y',NULL,'oam','oam','oam','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c12r48d100',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8b3798b4-65d1-4032-a2b9-83b3708945bf','null','6685b9d7-ae66-490a-8967-520549f7d6e5','f4c18fb7-ea8b-4e89-82e7-26525c528079','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8b84aeae-51cf-48c2-8bb1-50c7aa444a16','null','84dfff0d-74df-4782-afc9-8a902db20c89','621eac8e-ade1-4d21-86a4-1a66caf964db','1.0',NULL,'Y',NULL,'vgmux','vgmux','vgmux','vgmux2-base-ubuntu-16-04','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8be6b1e3-cfbb-4f62-8820-067bc784585d','null','55dd4bcb-e217-4253-9412-46c3db9b87fe','52f53983-82ba-4069-9dbe-30a18514a879','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8ca7da2f-1cd5-4493-ab82-805f48d8bd71','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8da61575-f78e-4170-9b19-ebb14fb6c211','null','686e6906-6dad-42e4-836d-b01dfd8dcd3b','050dd517-57da-45ad-86c8-d6c2d9cf742b','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e4a567c-3a73-49c2-95a9-2b092032ab10','null','801f48a5-eb2c-49a2-a03c-4a3175bacbc3','4fddcad8-91f9-48cb-902b-b05fcd1fb98b','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e5d1a2d-9cf9-4988-961a-2e95772656d0','null','b95401c8-5c5e-48b7-9839-d581cfca5935','4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e666420-f2c8-47ab-b593-ab4bd748460c','null','fd0b5273-f01b-4129-8a20-447567d7c370','94bcc5fb-18c9-47f3-9bc1-db73fba3c210','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e7289ce-c299-4ab5-8be7-245ef7b410db','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e80f851-fe0b-4363-81b8-f7bd0e59016b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8e8a56fd-db66-462b-9e06-81e507a74a36','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('8ec1d032-e5eb-462a-b96c-40bed1028f51','null','efcc4117-0c1d-43fa-b80b-1f34712021bd','cc772cf5-fc52-4cbb-8b6b-a58da7e40abd','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9066cc10-a5a1-4f0d-9498-7ea314e836ba','null','767cf039-9261-4efb-b63b-1f48a3391e74','ed19a0e7-2486-4c67-bbbb-01514efb4dac','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9112fca1-6b0f-4f7a-9d1c-ed930ca86ffe','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9166ff2f-23cb-4028-97e5-dc591fcfef3c','null','e3f1a8aa-c1ac-4d38-9be5-d234d5c93d23','d35dbfd1-1c84-430e-ab65-252e47668116','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('919ae940-5485-4270-9bb2-980213db6b95','null','851441dc-e28f-47d0-b36b-11fc3729d20e','90eb0836-f116-43b8-ba3a-83ca89ca84bb','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('91c98964-347d-48e9-851d-57e22c4dddea','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('91e52c46-6dc8-4535-b1db-f1477ecfcaee','null','f61424d4-acc4-42ae-8a41-03a0bc098132','c2039665-e5f5-4114-a94d-74804cac2ea0','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('922a84a0-d9ce-4ff7-b6bb-7d1ebcaa0c1c','null','c7efdf88-8a09-41d3-908e-d1e513b3c745','a2d5099b-4254-4f7e-8d3d-ceb280571ee1','1.0',NULL,'Y',NULL,'plt','plt','plt','USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2','nd.c2r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('92f5bbb1-3215-4a80-95fe-aba44d79fb69','null','1efb8470-f0d6-4e69-97eb-7dbec527dc6d','eed80211-44a5-4f21-bb1e-83b82635bb3b','1.0',NULL,NULL,NULL,'pcm','pcm','pcm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('934d8e29-ab23-489e-910f-3e16db969d81','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('94738c09-9e9a-47e4-a444-c262328e1741','null','00629390-ad5c-4a52-a04e-1efa3b2c9dc2','ea761b8a-e27f-470b-ba8a-a89e9b61b467','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9519bd6e-527c-4f7a-a013-dd478fad64bd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('953f220f-a3f1-4191-a7eb-722f841f2c0c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('95b5cde3-d489-4329-9b75-2aa01db6e6a1','null','720c36a7-9380-4c11-a8ce-acb2ad5c2d7f','07285e73-89c2-4330-b09d-65f568c976de','1.0',NULL,'Y',NULL,'vdbe','vdbe','vdbe','SRX_DBE_15.1X49-D50.qcow2','nd.c2r6d20',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('95bdd202-1f6a-4812-ae1f-c8df2ed8ce9c','null','324ba26b-468f-467b-9b49-021f76720277','ebffbeff-3b15-4ce9-abe7-654f0bd8615f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('964808cb-2199-44fc-9390-004b8fa8d538','null','dd0137f5-c6fd-4990-a217-8e3c41838bd3','14c13c2e-dccd-48af-b46a-5526f6640a63','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('967653fc-d781-4f65-b513-7a111d854ffa','null','f0d528fa-8ae2-4548-9e59-71bdf5b16b2b','d18b5d59-c65e-420d-ae28-8181e87520b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('970657f6-a90a-4758-ba4f-512da3aa07e4','null','47e50720-58ad-41d5-a89d-a290833d5170','3ec89b15-8ef3-466b-8b6f-f8e658793601','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('97dafb56-c3df-4922-970d-b514118b1196','null','f0d528fa-8ae2-4548-9e59-71bdf5b16b2b','d18b5d59-c65e-420d-ae28-8181e87520b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9842c47b-f484-4de6-864f-ca4fdaea3cad','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('98608c67-9b1a-4160-849c-060171c0ae16','null','88fea698-4f2e-4b8d-bdaf-d60a8d9f921e','f62868c7-2afb-4ad8-a940-8b9db7b4e71c','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('98f311f9-39e0-4b96-be75-548fe6953247','null','c46d1478-41bc-48d9-863b-0ac70a2e6972','138dab0f-355c-4e32-82d1-66838992a8fa','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99699375-0397-405b-89c7-32fc9f714e0a','null','27f6423d-ab25-484a-86c7-038925e4cf30','10078587-93b2-4ec3-be27-c9172716e3bf','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99781b3e-7c91-432c-af97-dccdf0e31281','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99a274bf-c3fd-4d63-a4b1-1c7b4d9312d6','null','05c097e1-9d0b-484d-9d3f-b4c4ecf6938b','f61c31cb-5ffc-47a4-b423-4aabc4afb2d7','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99bd7230-87c4-4dc5-aba2-4a63ad55954c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99cab556-8786-4fdc-8ff6-284aa7d47fa8','null','cb26bc79-f5c2-4d70-96e5-8ef2ec5cb2f8','2354ae73-a126-4797-8136-56d5320c4efd','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('99f10ccf-e4d0-4c1a-87fc-9d4403f9bb57','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9b5fd226-047a-4702-ac8b-d84a4e12bcb1','null','544f081b-41eb-41ed-aea3-82a53f8406b7','fd49fdc5-aa89-4528-88ad-7ab74497826e','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9b68a223-ae32-495b-9dbf-706d17f4edca','null','fd0b5273-f01b-4129-8a20-447567d7c370','94bcc5fb-18c9-47f3-9bc1-db73fba3c210','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9bc3396f-861c-4bb7-b11c-e40ed9fc785b','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9cb550ff-94a8-46df-b216-8d8d79a4430c','null','3021e249-ce61-4921-97d3-c620fee735d8','f5d1a9de-02c5-408f-9a58-f3f7dc40e91d','1.0',NULL,NULL,NULL,'converter','converter','converter',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9d25a319-184f-41d8-b361-b3c34780815b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9da1a65e-107f-4c2f-b3aa-5741f9ec4246','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9e0bae98-f88e-4afa-987e-44d6bf49d222','null','4dbb5f94-045d-4daa-8cc0-6b67b14733e8','e41c812e-482a-4831-8a61-90ca514afc64','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9e9a03db-5e18-4080-9a99-3befee79d106','null','8cf09ba8-a266-426d-b10e-77f8bfb0fa2f','e628f731-8879-41c3-b391-482b2d255f7d','1.0',NULL,'Y',NULL,'rtp_msc_a','rtp_msc_a','rtp_msc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9ead1a85-5592-4784-879c-147a94bea966','null','b2d3805f-a918-4f95-b4fa-f6c5b8dab1ca','2e090e82-864f-4d48-9c74-dd8a812c2396','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9eb9415d-9c3a-499e-9889-d97647df8b41','null','fdb7b451-b225-464e-92da-fe01b24215e6','12b488c0-ff81-4840-930d-94020426b7da','1.0',NULL,'Y',NULL,'adm','adm','adm',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9eba7181-1630-49c1-8698-a94dd8ca95b2','null','2e0cd406-2bdb-48dc-b262-c7e45f1216b5','4f3990bc-bedc-4308-a3ac-6900eb684e9b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','null','c5dfffac-1a54-4f68-8620-f98209e6a99a','f9c80fce-dff8-469e-ba9e-e8e6cf1842e4','1.0',NULL,'Y',NULL,'vbng','vbng','vbng','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9f0d1717-e20d-4c2e-9c64-f7ce4b9b13d4','null','c30e7d17-563f-41fc-99dc-6390c831ee08','367294b2-ef14-49bc-8b01-d7cfdccaf0c1','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9f240ab4-117b-4bd4-aeac-432607eaeb6d','null','5c92f734-aee4-4431-bffd-4b1613b40eed','d39c7ac8-25d3-47b0-a10a-7474dad90e21','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9f4130d6-6e88-4759-a635-ff24c6c7814c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9f46cf9c-6b2c-41b8-a4b6-27b5e6373538','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('9fad30e6-3822-48a6-ad15-caa62566abe6','null','3ab414a7-b8b9-49ca-96c5-8e0bec348412','52e44eae-1f79-43ec-ac74-cf6501fb6e26','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a00628bd-e870-4679-80ed-0423caad18df','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a0083208-228e-42d8-82db-ff463b8704b8','null','1dff89b9-f323-482b-b7a7-e049f9ad7635','0ce097c2-4121-449f-9f98-63532a8bff55','1.0',NULL,NULL,NULL,'vertica','vertica','vertica',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a0154f8d-ac4d-4af1-abd0-e660f7562d35','null','4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7','2b6676c6-90b2-4d39-be19-b1ffbd23f558','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a0ec6cac-6fc9-4429-8387-93593d2072df','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a116fc55-74a0-4d69-b034-34170799ac3c','null','cb8841a3-5eb5-4c72-844b-16dcb0d3b7e4','c4342af1-f173-4d83-bbcb-0c9fdd7b9567','1.0',NULL,NULL,NULL,'d2ice','d2ice','d2ice',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a1b72bd2-0d25-4031-973a-c9600dab5f78','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a1cd762a-7c3c-4839-a2eb-e77bb374eca3','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a1e0d30a-598b-43cf-b1ef-62158ffc70eb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a26fdde2-478b-4b1b-ba35-af8b6f3da856','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a27d8879-67a2-4537-b326-2c072e31f68c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a27f0fb5-4744-4b99-af5b-1dd1d59c8725','null','c6f03037-253c-473b-a538-73246b291185','cb19a064-c90f-4d71-b01b-a0bca8ed5e4b','1.0',NULL,NULL,NULL,'itm','itm','itm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a2a8f05f-7d29-417a-af2a-00c3ec229246','null','ce2aa7f5-6fa8-46c1-9790-8ae7b49a6306','e395e992-e359-4635-a463-ab9b9fb027bc','1.0',NULL,'Y',NULL,'mda','mda','mda','{}','{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a3dd0b00-859a-4567-afd5-08efb92072e7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a52999b1-dab9-42cf-9853-1d831eb0d318','null','b173ab2a-9b2b-433d-883e-3c153f39c331','464f4ed6-75d9-4a48-bb9c-9a49b4da172f','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a54fdfd0-33da-462b-883f-f7ddc2d86e1c','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a5653b1c-6e73-4ee6-a5e0-5f1bcb1ea959','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a5ece57f-58c7-4e9f-80f4-6a2d0a4bec38','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a5f25e31-5059-4d50-97ef-26735df799ed','null','9e4e3726-d8a8-4a40-8fae-f4bb46135d3f','08253508-dd15-4202-bfaa-c105f0a8c19f','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a60c2994-8089-42ff-90ce-656c6aeeac42','null','7513c82e-63de-47f8-94b6-83ea61446fc1','82104fb7-3f0f-4c6b-97a2-adce8c48a7b2','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a682c9ab-b50c-429f-a605-2469a4efb829','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a698af7d-6797-4807-907f-f9e60593d082','null','90177c20-11a9-4a85-bac6-067f4c88403b','cbae819f-fe79-4031-8a06-79026c8eb1fe','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a6d1fe14-e363-4c05-9c68-a23e3ff4e816','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a727ca3c-cccb-45fd-a3dc-1b030b1fca71','null','c12a93bb-bb70-4f40-8823-155980ad078f','cef11b73-aa73-4f88-8b6c-34d21d55b8cf','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a72f75fc-126f-4a3b-a125-a33e89fb3ca6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a7fad07d-f91c-44fd-98f9-4952f35f3875','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a808430e-4931-417a-b6d8-183a719d1803','null','83429bf9-49f1-4187-a5ad-afc329a84e76','ce422e74-7e58-4464-8a54-61e21f3ca7e5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a8bb4868-11f8-4eaf-a411-007f6691ef99','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a9139e95-84ea-42d7-a4bb-a72b29a40970','null','d6972850-e417-4146-8a3f-c645769f6d1d','49956ca0-99bd-4ad7-877d-ec831af96a10','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE','PUT THE VM FLAVOR NAME HERE',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a91bc7ee-82ae-46b4-9eb4-4a92fef3f00c','null','9e68d141-f3ab-4436-a1a6-52f83a2908ba','7d33eb47-6050-4ef6-aea5-0485360ff4e8','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('a99c320c-64d0-44ac-8edb-16d781dde678','null','3ea59343-7575-410b-81d5-0dcc7023c3ef','ef0a6627-dd24-4d26-8e42-3e4981322a68','1.0',NULL,'Y',NULL,'ellis','ellis','ellis',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('aa008846-3e9f-462e-867d-653358cd6d8d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('aa8a4494-cd9e-444f-a174-9f2590bbc692','null','178dcae6-892b-4fd8-9da9-bdf30da013ae','50d30dc2-fe59-46be-92e1-2844868bf1ab','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('aa999b75-51fd-451a-8556-c59e13cb3cd6','null','260bcfcf-53b4-4f7e-b387-d962b411a90a','0cc735dd-8c55-4de1-829f-b307806ddbd5','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('aaad4b91-f2bd-4157-b386-fb7955b1dfc9','null','9b3265aa-64a8-498a-aa68-2d6a65c34ac2','d3351d9a-5b8c-423f-b63d-bdba0716b04f','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ab26b6c2-af90-4f66-bc2b-f500a3ca1a5c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ac0cd98d-35ee-438c-a45e-9a2447c603a4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ac377ae1-fd6b-41e4-9aff-a6b2b038d484','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ac496aaf-ecff-4db3-acb7-cd9989db2b21','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('aca91a09-aa6f-4701-bce6-2ded800ac69a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ad6791e1-eefe-49b4-bce3-3e5b76555fb9','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ada34b73-f715-41eb-a6ad-c9d868e86728','null','c35a90e5-6c43-4c54-8953-18053879258a','ce4bf871-1817-475d-ade9-39e7095f12b6','1.0',NULL,'Y',NULL,'dns','dns','dns',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('adcc1687-2e29-4b48-81cf-d671aaff5cef','null','d2c6e47e-7320-4559-876c-65f21e71be94','71db90f8-ae2e-44a2-b57d-e96de3f89b66','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ae6938ed-7d85-4d1c-b08b-683eaeeb8861','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('af36dd7e-6e79-4b5b-b031-d1a7ff2876b1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('afc8dd7b-f829-4d44-a52f-ee0665d770b7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b04d88cc-cf85-4968-82c8-c950f4487d0c','null','143fc587-69af-4c05-b624-d5d0cf0d2b44','4b5305d2-022c-47ab-8f47-7f795a6a64a0','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b09c467f-048d-42e9-a127-79c8bf3b090d','null','5818d233-caf4-4825-a7bb-144bbd731329','b8c28cad-e97a-4ee8-bc64-119b373cf98f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b0f2b86e-1b9a-4d3b-9dd8-ace1ee07976f','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b14c2a09-89e7-487f-95ec-1b5bbc3399e4','null','ea6ed17e-b52c-4a66-8bb3-8e5f6f3fef39','c14a722e-7f86-4577-9583-ba9397a2a54d','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b1ff5519-4c6c-4378-99ab-df79b2802406','null','64607264-f245-419c-b490-5b40cdc6c8d1','23aee13f-2ba4-4f62-8739-60655b38e537','1.0',NULL,'Y',NULL,'ssc_a','ssc_a','ssc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b2f1e772-dc8d-4048-b984-441ad81f3955','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b328a3fe-e2c5-4fc0-800f-f3a64ca779d4','null','231e7f44-fdbc-40a0-b836-c3302421004d','e66f3e27-27f7-450c-b3b7-cdaf43d262b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b36490f4-abe6-4951-8f46-72889c614c4a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b3a64b54-ea13-43c7-af8f-3b69a538c213','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b4100792-9341-4078-bac7-404b684f211c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b4100ed9-507a-4be4-a456-0e49482a58ac','null','0f130462-8f4e-4670-869b-37eb02b04577','db498075-2ff5-4947-92a6-10745aef5589','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b4483cf2-b435-4ed2-b45c-93a2f2bcda66','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b6444afc-7bf1-4170-83f7-8c932d5a55c9','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b6d5b572-0a9d-4de7-ba44-bd02bdf95626','null','5e6be389-4ca1-4344-b497-d40e7d76de5b','280afa6d-83d3-4ecf-9cdf-47a2e4b0431e','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b6e7344e-5dc6-4b71-9735-fc047e5b999a','null','49c1424b-5e2d-4e16-b1f3-1f20fd529925','651bfb5d-d5cd-4ef0-bb26-0eb3bbbe71b8','1.0',NULL,NULL,NULL,'psm','psm','psm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b6ff6a80-ee73-415d-b4d8-9e97cd788e1d','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b773d671-6888-48ca-8ba8-609371bfccb6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b7cf537e-9b62-40e8-9f1d-278ff0b7986e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b858d606-617d-4b29-b749-e51e70c52e5c','null','80501dcd-d0a6-4101-92b2-6a2249258d4f','e2eb1e3f-ca9a-406c-bcfe-d53b87e0fa27','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b87c7274-78d0-4549-ba63-9fdbdefe239d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b8935925-e0bb-4103-b64b-14e24237599b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b8cddb4a-babb-49e0-a369-4ba04908d4f7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3','null','0fe506c3-fa0f-4811-b3d9-9a5e1d316cbb','305592e2-01e7-49f5-baa9-207e47b4eb76','1.0',NULL,'Y',NULL,'vbrgemu','vbrgemu','vbrgemu','vbrg-base-ubuntu-16-04','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b8e49d1b-e5ee-4e25-8d20-61e5588f5f87','null','a17323d7-1f15-459a-93a1-2523b2dcc909','78a657d7-74d1-44bf-939c-73d748dc4ebc','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b95b06d3-f566-4d75-a43b-fbf94d9f9645','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('b9b64e3f-7b45-4293-b742-21b5bd63fac2','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ba3c401d-def7-4085-bd8b-5cfad9cb94a9','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bb0cd22b-bb81-4fbe-b756-94cd3b94255b','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bb4916f2-6ce6-42df-a1db-ebebd2ae420a','null','ae4b9316-37fa-469a-b39e-951b1e0684d8','43c4a39a-5f99-4cd3-80e1-288de3cf7be7','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1);
+INSERT INTO `VFC_MODEL` VALUES ('bb69f2d4-be8a-400f-9d6d-6e9500664dbc','null','df3f9aab-9c2f-42ef-bfe9-6eeb4102b650','1cd4cc4b-58e2-48c5-b2dc-69779071f8cc','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bb6da603-e8ec-435e-b84f-27e3985a1f91','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bbadc8e6-b898-46ef-8204-06e125a690d6','null','44c2244b-b8c1-4788-886b-28addae150ec','76408aa4-80ce-4974-aed7-77336f6fecb0','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bc5ce901-76a8-4516-b65d-26cec4ba463c','null','0de693f7-e09a-461d-b9d1-cfd6919b8f0c','49954541-0f93-489c-a9cb-cf9fc8e986aa','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE','PUT THE VM FLAVOR NAME HERE',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bcbc6708-3697-430c-a8e8-6250939ecf5c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bcdd7c03-4140-4378-b00a-3775089ae232','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bd18c89f-92d2-4cc9-ae09-dac57219db9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bd800b26-228f-40db-bd98-dd4afade8ee4','null','a768414c-507d-4120-a1a4-ed2c1ec3f4ad','8d8fcea8-4352-48a2-8e39-10b3b8862743','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('be1a6293-fa3b-4a2f-afd6-480f2e70a5d2','null','bfc9b3ec-9c4f-4caa-9489-4c3e6c99a4ce','9fe7109f-e328-4ae1-aa27-1ea33b72613a','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('be65d2ae-31cc-479c-9156-e7f1d6b6a4b4','null','f30f9166-702e-47b8-8f0a-d5523f86b7d6','73aaf1fa-265c-4f13-a171-ca8dc4c908ff','1.0',NULL,NULL,NULL,'qtrace','qtrace','qtrace',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('be96e427-e84c-4a57-b169-5490bc2bde4c','null','fc60c10b-f1ba-4e3d-9c41-e4eff820162e','c05c500e-e9c8-4edf-9e94-6af1779e62c0','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bf11ea87-eca7-4bfe-a958-a6395c14c11a','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bf4cfefa-3bf4-43a9-a7b4-d091f92586e3','null','484fc852-b184-4321-ac3a-0a95d254fa6c','31be2acb-c53a-4a8c-a3ed-ff6d2db67255','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bf9a909c-17ef-4a69-ac1f-56d05c53c528','null','9313568b-b485-40df-8e3a-2e541a8ca32c','a3f4879b-b668-49f1-b57e-372271b0cdaf','1.0',NULL,'Y',NULL,'vgmux','vgmux','vgmux','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bfbbab1c-b257-4ea9-81e0-416755b28df7','null','3ecec5d9-7517-4970-9977-242b02f6cc92','eccdf6a2-4ad6-456b-892e-7b4109308445','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bfd5e865-92a4-45a1-888d-ba7c2497ad50','null','87675787-232a-4648-affd-fa4522faffac','557bd559-76ce-412f-9b4a-c1fb37039c97','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('bffb18fa-e09f-4d2e-9a56-6f032e03ac19','null','03d45358-a5e6-4584-a9b7-fb5e9333726d','3a32e5f8-744c-4c90-9dce-42b67c21b1af','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c0228379-2c35-4d53-bffd-b22f70e5b131','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c0269cef-1de3-4b79-8c45-790e56540ac9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c05551e2-d5f7-4fba-bd08-c76085bc0bd7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c0a21a31-56f6-4ed0-9647-f2c9cfb22737','null','482d5ad8-7f48-444d-8b45-2817b8309075','2c1d7d2a-0122-4a1c-8be6-ce19cd9c3592','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c0e635b4-e210-4c0a-ade3-943aab8ee3e3','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710','null','2b39f3e1-0dce-4786-9d9b-ec9613ce350c','96f733e6-9ed1-47e1-a77b-f1cabbecd142','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c1cba325-dce0-418b-9ec1-61bf6ecac873','null','e2d673cd-88da-46ea-a591-5f2b7c835639','279ac5e4-a5d9-48ab-82ab-9d336c0f96d3','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c231d966-7c33-475b-b1da-6d8183a14f36','null','56717920-49da-473a-a453-efb044590ca1','a097e7bc-fb30-41cc-99b3-fc82f9fc701d','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c23ac2f2-56ff-4ecc-b65d-65dd8f82a0cc','null','629adabe-cc44-4989-8f2a-75b55f7737e4','e82cdbcc-5bbf-4dcb-9a0f-17c6e4766801','1.0',NULL,NULL,NULL,'daemon','daemon','daemon',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c2655316-7724-4fe0-9ace-cad170838ed0','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c2bc34f3-ec20-4f40-a6ff-c0913ac9b180','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c3afd8d5-cc77-43e9-baaf-7caf60146b15','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c3ec6c74-294e-4eec-825e-3071b55a08c0','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c43aef22-8dd1-4e8c-8169-f88da3ef2160','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c4753b00-af1d-4b49-bcfa-475effeaa3ca','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c4c23e62-b07d-4856-ad5b-af6a3980fae2','null','e1158f69-c65d-4b6b-8332-46ef339ffc81','9a2de0f9-0535-4bf1-8e5c-47cfd7affe43','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c4d1cc21-49d5-4f45-a6ac-539165918edb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c504575d-ec87-4c75-b3cf-26b561c77c8c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','null','c71badb8-3578-43e7-ba36-eec3fc1e4f83','12ae7ede-f3d8-40f9-a8b1-44d5d4f09126','1.0',NULL,'Y',NULL,'vbng','vbng','vbng','vbng-base-ubuntu-16-04','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c5d7d223-39d1-401c-98eb-0680733d2872','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c5eb0c33-6a51-400b-8186-d7fc1f0bee13','null','e996f365-b29f-471b-8b32-baf93152eb81','c3f2985e-1999-419a-bcf7-91560cca1a1f','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c6e0a9c3-babd-4517-988c-5f0c90877b1c','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c788c709-f8a6-453e-ad1e-8dfa63492dbb','null','8a895561-a663-4b64-b421-7416bf9d4a8b','795d516f-34ca-4a0e-a74b-c4746eae4300','1.0',NULL,NULL,NULL,'code1','tag1','tag1',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c7b54e8e-8121-4102-b5d0-b25181920fec','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c7d68a7a-7496-46de-adef-dd7b82f2e742','null','00f8e942-ae52-4da5-b459-8fb54eee2adc','b1b37903-9386-4912-8a60-ed692a03b52c','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c8033d10-afbb-4310-b90b-abd4140c191f','null','54f59033-8deb-403d-8cba-2d4b5dbf0b2f','0fabe22d-e7e3-4380-a520-1c9e433a1405','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c859e495-1df4-4613-8193-357defa1ec51','null','088d65a7-f6fb-4214-b5fb-f5fa6948a7d1','92f3786d-9aa7-413b-b751-e7a8595c7c22','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c873746f-0a6e-422b-9efd-44aae71283a7','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c877c31e-896a-4f07-9c25-e5a447462ff5','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c8ab7283-5834-4c61-a165-c1e292711a59','null','1572dff4-d406-40ad-afd4-9828e66347a1','3da37bf6-87b4-4b98-a9a5-d2c18a7ab8ab','1.0',NULL,'Y',NULL,'vmt','vmt','vmt',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c935fb51-b144-4f95-804f-8c21e8ab3769','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c9527801-36a0-4fb3-a6ce-3c3e685283ab','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('c9f6627a-41c8-4805-8d30-74d755e3bd94','null','899ccf77-9926-47c5-9e96-7f32c7535455','5d660f11-702c-4875-b446-efaa631488c9','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cb0fa12b-221c-41d3-b900-786711f5deba','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cb751f30-9cd7-4c7f-999e-73c2691da482','null','945c23ea-ff66-45ef-937b-3847c69b45b0','7a4181d1-15e3-4a26-8b61-1881e18eb91a','1.0',NULL,'Y',NULL,'ralf','ralf','ralf',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cc1fb9ba-e8d8-4544-b893-19784421da07','null','e55ea388-7c7a-4624-98d0-530b1cf12353','a6df5997-cae3-47bc-b11f-a8ae9ea15755','1.0',NULL,NULL,NULL,'microservices','microservices','microservices',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cc2f9ba3-0a21-47cc-8e5c-d40b0b36b786','null','46359680-71dd-4c95-954d-70e1286003bc','b62b2cb6-cedb-4aa5-8501-d733dbad7546','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cca81022-c403-46e3-a617-cf9d001532a1','null','c6a26e4e-4ba9-4abb-80c0-99af10e3e045','a7cf9a89-0b67-4247-bbfb-8fd671d0c13a','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cd5501b1-1490-4b85-b954-8c3dcc641bf5','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cdd0c29a-5067-4549-ac36-f437c64b79ed','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cebe69d9-1c8e-45c0-9ab4-a0506c636d92','null','1172e0ac-8e56-4fdf-8454-18e2964e97de','440ce9b8-e1ba-4b63-918c-b433afb97d11','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cf16c622-b9e4-4712-924b-8008f47d84ef','null','b4df734b-f327-4552-adbd-51a844e6de90','8bbd2b3d-4b89-4270-b55f-4111fd14142d','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cf3e09d9-0a4c-4e54-9925-df317d9ac3ef','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cf60de5e-1332-43fc-8640-a94b5013dea7','null','977529d3-aa9d-421c-aadd-fd0249d1a347','85c354fa-04bf-4ba7-8678-fad5d31d7a23','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('cfa061e6-f6b5-4f2e-b605-f4cccf69a1ff','null','e53b0aae-f8b0-4776-bb40-837c5d48e289','87425303-683f-414d-a84e-1ce7534688d5','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d014e9dd-284b-4baf-acaf-6caae88eaec1','null','5014d933-aa2f-4ea9-87f1-70729f080747','331d6f77-d90a-4c83-a11f-176ca9c901ab','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d01bd75c-4c1c-415d-9a8b-a48d50589089','null','0e2da292-c026-499e-978d-8a9912b8f3c3','50dd9a89-6184-40f1-8d61-3586369f647e','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d057afa2-edab-4be3-93cb-89854e40c298','null','3b7a9ec3-7759-41fc-990e-e757dc4ccbbb','f89bd726-10f9-491c-a13f-7422933182dc','1.0',NULL,'Y',NULL,'vfw','vfw','vfw','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d05e773f-2d6c-4a8c-9ed9-e29eaaab7a10','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d0d264c5-eb08-416d-9e2f-d78649e3eb07','null','51e3f3de-b2c9-4cdb-9ed1-7d689d1df408','9e4c8069-d199-43ea-8eb3-ca1b5bb433d5','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d160bb89-8331-4f8f-b323-aadeaf6ad719','null','b35721e9-19aa-41db-bee4-0402887e5559','7e1199d9-34db-42a2-ada6-0bb45625b6fc','1.0',NULL,'Y',NULL,'dns','dns','dns',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d18761e1-1c7e-45b5-92d3-bf057164629b','null','87cb315b-4c0a-4c65-81a6-8221562f6a8e','0312fa13-5678-4ff7-b5ab-d2eb370cd44c','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d1942b6f-5cfb-4167-a158-4a556d32d6fd','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d1c09e21-5074-4c80-9864-8bcdd3ef9d07','null','4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7','2b6676c6-90b2-4d39-be19-b1ffbd23f558','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d2283908-05ea-4f6e-9e6a-c891f2df406f','null','039aeb04-d31a-48bd-9459-29539639d6ec','2bec9788-7039-4c59-aec1-35aae3903c19','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d23cab29-da46-4aeb-b04d-3895f5ec3a76','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d2547357-4c45-4462-bc6b-46d640a4c1b8','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d25e12e3-8cf3-4fce-8fd2-bf21f0f0e795','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d2931a86-1b18-414c-a6f2-edd5cc1a26e9','null','1b9d7f98-60f9-476a-bd30-dc200fa89f93','0318d0e9-d938-4c4a-9157-848e5564f717','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d2e1e04b-0622-4624-868a-ff6a71b5adf3','null','c5993503-367f-4d34-901f-95fb562591fd','6ab10218-fb57-4423-b838-48efcec339a7','1.0',NULL,NULL,NULL,'conductor','conductor','conductor',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d330374c-aa93-4dfc-b4f4-a3dc4411b9aa','null','a3f9c583-bbfa-44a2-bc51-03f77a2bc8a7','8d63b561-50b8-44c9-a899-627687b6c930','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d38f40ad-a4bd-4736-b324-486373898759','null','1e7d318b-f33b-4b90-9d75-6da7922361ed','35e68c56-72ff-43fc-892d-96164bd1f244','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d3afb81a-50f1-4e04-86de-7498741fcb62','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d44562b3-5960-474d-bfd3-e38bb638948c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d48099b0-2b0a-4c5c-a2bd-aaf4727bb13d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d486859c-c045-4216-a4a1-32901540ed1f','null','0ad0f610-74d9-4ddf-ad83-beca6203c3ce','87b6d27b-185e-419f-acfc-3f8bd659ce9c','2.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server','{}','{}',NULL,NULL,0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d4ceca44-046f-4a8c-bc8f-4e55b39be39a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d4d60fbb-3af9-42f7-9da9-1fd955e5c086','null','83e2f5f6-c7ab-4f9f-be3e-3566dce5ca4a','f2e899b2-50df-4cb3-aa4b-2ffccad39e61','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d4ee269d-563e-4b40-abc0-b9e831167253','null','00df4ead-6147-413b-8658-064bf60b45f4','ce27c3d9-e589-462e-aa30-f7aa0693cbfc','1.0',NULL,'Y',NULL,'iox','iox','iox','USP_IECF-IO_30.3.3-mcas4.4.6.qcow2','nd.c4r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d5a9f7ee-97bc-4f4c-a505-bcd49151fa80','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d5cbf388-721f-4e72-aeed-8eb087b54fdb','null','3c185a74-5a29-476d-a557-31af4c5e3ad6','34756e5d-c023-466f-a330-43c1e01a4491','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d6aeb78d-9a31-494f-ab0e-936748eac20d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d6f25bbc-9478-4885-b899-5cd6739557b3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d7724722-c600-4a34-a813-3583d60a3776','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d77a5564-8dc8-492e-8d9b-2a93f6e6c8a3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d7e69e58-c9b2-4480-8860-748656b693c1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d7ef089b-0fb6-4355-aef4-24bb33ad5d61','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d813efe8-c11f-415f-a7e7-4fbca9e92318','null','4354b220-90ef-4473-9d12-ce784891b4a7','4cdca75a-3f10-4658-ad63-4d30c6fab96c','1.0',NULL,'Y',NULL,'pps','pps','pps','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d89ef92d-7708-473c-9843-151525428a3c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d9023921-639c-4f29-bc39-75574e715492','null','40fa1c65-5db5-435c-8465-2ea98a49bfff','3bb7ef22-bd9f-4818-abb4-19c560e3661b','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c22r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d921d8e0-72ef-4e82-9a5c-f8c524d9db72','null','25dbbc47-5077-4f3d-83d2-1f9900c66b40','c5212e4d-ac57-45a5-8dad-3ea5610a5700','1.0',NULL,'Y',NULL,'sprout','sprout','sprout',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d955ecf3-c37b-4829-a592-ed0c5dfac3db','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d9bb4581-b99a-4810-8bf7-2ddabf069573','null','63b30309-8d17-4a53-8a8e-d5c84dc67971','39962b65-2689-4dca-85d6-af29ac04af02','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('d9ee5ccc-acc3-4658-9068-e2d60942040d','null','d7820662-37e3-4dd5-9eee-ae4996eb9a49','7a5c7331-23ab-4230-bc73-ee12efed6831','1.0',NULL,'Y',NULL,'vdhcp','vdhcp','vdhcp','ubuntu-16-04-cloud-amd64','m1.medium',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('da276e91-0540-41d0-b6b2-f062e9ffea98','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('da32c96d-2f04-4548-8670-39ff222a3af4','null','34f12006-c7b5-4507-ba81-d5db0b0bd183','c630e7bf-4d84-4f2c-90c2-779d4e783bf8','1.0',NULL,'Y',NULL,'homestead','homestead','homestead',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('dac39219-5bbb-466a-8136-f2b3cd715957','null','4ee9e271-2073-4399-9779-0756f838f560','265e608e-9304-4996-91bc-2f2edb888a61','1.0',NULL,NULL,NULL,'ppd','ppd','ppd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('daef9b68-c885-4fd9-905b-81d02287b400','null','7c072a5c-87da-43d6-a240-1bb4f5c48c8d','b158181f-e1da-43f3-89cd-41e8db24852a','1.0',NULL,NULL,NULL,'analyst','analyst','analyst',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('db207678-8018-4829-bec6-4143743b1a29','null','223db1a1-cc8c-4427-8e42-ae4307737c6c','a382c611-0f12-46bc-9316-520f36ffd641','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('db6a3c01-6635-427c-b022-4826a6abcf38','null','fcec5e47-ce59-4541-bcd1-1115037bc77d','f76a36a2-9ffb-459d-8065-e022dbd04c17','1.0',NULL,NULL,NULL,'nems_fe','nems_fe','nems_fe',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('dbdcd5f1-014c-462c-a950-ba17813f9485','null','aafa741c-2d29-4896-8cc3-3a2edafe764b','365a1d85-0dad-4766-a1a0-34c91ce7901e','1.0',NULL,'Y',NULL,'sprout','sprout','sprout',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('dc82a28b-e06c-4362-b9a9-1a8536d11103','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('dcdb832d-6202-4b2d-a5c8-75eef953ebfb','null','4b2c0f45-4236-4219-b063-e2ca9c655af5','c8d403d0-3996-42e0-92b3-e26f3346f7f1','1.0',NULL,NULL,NULL,'psm','psm','psm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('dd6bb792-56c1-401a-957c-1494e42d059c','null','e2824f52-f71f-4dda-9e2d-9dd1c6163123','7495d002-4660-40e3-a834-b7bcaabeb7be','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ddb68a75-d9ac-4179-b00b-e5202eedb221','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('de5dad75-6519-42c9-b6fc-a73958971f26','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('de666e4b-8026-48ca-a753-4c8b6314edcf','null','f9cb9e26-f215-4d92-9686-c01d215c2370','e401c6be-3e29-4f6b-a9ff-dd289e15f3fd','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('df6167af-bf7a-46a0-a39c-b8e4834f2c70','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e011021c-1e17-4357-9390-138924d67df8','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e03f15f3-ecb9-4b34-ac1b-d33bab8cee2f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e077e430-fdf1-4dc3-ae2d-ed02cb0534be','null','50696315-5bde-4a61-91c2-6fb9a47fb333','daf91cde-5b47-42c7-8b85-d18607ffe31f','1.0',NULL,NULL,NULL,'drbd','drbd','drbd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e0894eed-1665-47ea-9bab-01d3d33b8a6a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e0c44b72-4d57-4368-8f37-baa4bc507d53','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e10c30eb-e67f-49bc-a3b9-53ac87f5147c','null','d8e95546-60f7-4d74-9bc3-97326e57f9bf','d003593a-de80-4202-9a80-bc5338c679c4','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'nd.c4r8d0',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e1696594-145c-44aa-b2ff-3a3679ee9daf','null','607b0e02-9797-4251-b4af-7e25023653cd','8b3f7cec-61a7-4299-92c5-a0a0bda4aa7b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e1d9a966-9f3c-48c6-8445-25faf6279e04','null','a2f315f2-5965-496c-aed6-7d3a3e3b9e93','b709e309-c645-4177-bb54-739b2d4c3fe3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e258f6b9-ab1a-4509-a5dd-14af510f39bf','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e2e2fee7-7f1b-4d05-bc71-0623bf4bca83','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e3119061-af71-4b1f-b2a7-6270561f89c4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e319c3d2-4908-47c6-9d34-6167831748d5','null','a9d90156-8109-4a7f-af9e-bab39b0eb5ed','2dd777d8-0fa9-4a16-9d57-367c066398e9','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e3d8f89e-c5ec-46b1-9ed9-e09aee95397e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e400273f-1161-43eb-8c06-e1b5eade4b5f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e472f39e-2371-4dce-8b5e-883094836201','null','b4df734b-f327-4552-adbd-51a844e6de90','8bbd2b3d-4b89-4270-b55f-4111fd14142d','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e479c112-5d01-4a10-af33-74f0f476ba05','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e4bbdb28-c969-4f36-b071-9b2f93eccb78','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e4da2213-136c-4883-8dda-672b92574558','null','0d9310c0-238a-419c-9abf-a10c468f842b','60b3d723-a2af-427f-ae3a-c2626f860930','1.0',NULL,NULL,NULL,'par','par','par',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e53ac4a4-2f1d-4979-abe9-6fdd18024252','null','1ed55cb2-1569-4daa-8156-0c653a9a1bd2','97d74a37-0916-4de2-9f14-8a043228c4e8','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e5fd954f-adcb-4675-b763-cc216bbe68b1','null','7b06461d-8692-40af-82bc-472696b91535','712bb2ce-878e-4758-a111-08db4d64ac30','1.0',NULL,'Y',NULL,'homer','homer','homer',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e63dfc74-a391-4dd1-b498-502deabad064','null','5de3f65a-9a57-463b-8f57-42307d9b27f8','900b6e33-ce13-46e8-b9e9-56d21e4a4668','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e6898721-cbc0-4d92-b356-e0e3c6cdb571','null','f9f13cd4-2c3c-4e4b-99eb-697877a83156','e0dad5f4-47b6-4973-8c3c-978ab29ac010','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e6d3fdb1-8bc3-4312-9489-1e76c8efb4af','null','90a23913-8d7d-4272-b2d4-ebe81667cf17','9335c8ba-9677-4a88-b6cb-8078792b0974','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e7456fde-73be-44b6-97be-3cd6bd0e200a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e755b80d-4779-439a-98e0-f322d2d70f5d','null','1f972070-da5e-45d4-b134-7f1dcd1e1848','854c5b98-6905-4ca1-a71c-23d0220c949a','1.0',NULL,NULL,NULL,'distributedlock','distributedlock','distributedlock',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e7678c43-dd5e-4a55-b58d-d58217d10292','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e77e6de3-e3a6-4579-b323-6ea911c5b3f0','null','5cc8a5cb-fc45-4ce0-8e95-6d221bd76d46','a5c14db7-eab9-4e7e-8dba-aa9421819132','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e7f9b901-b846-49eb-942b-9bf778a7d2c8','null','21949966-ca79-466a-a6c8-698ebd575aa4','0cdbc3a3-9462-4e74-a78b-c7618aff0b9e','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e821918b-15ea-4a78-8f7f-840bb3959ea1','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e86fca77-08a7-4fea-8785-c4dbdbb221ad','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e9154076-fd6e-4cb8-8f27-8d95111c6c59','null','01cf04fe-b053-40b9-868e-0436453ee927','1f4f659f-5f6a-4e59-a8a8-c061579a5d01','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e918ccc5-223a-4d8f-a6d1-73d3de95a6b3','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('e949e615-fadb-44a6-84df-f9f39864dbce','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ea133bc3-41e3-415d-a0b2-c65665d6e44e','null','5d8c005f-4a39-408f-9371-fd6dbb816d52','a9ac2bcc-09d7-495a-9fcf-f24e505f06ef','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ea3747eb-8a8e-4714-917c-63fd80ffe88c','null','52e18045-96d2-4150-940d-dfb0b8de5ad5','f16f1489-d1a9-4dba-b02d-43cbe052fcc6','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eaa6a0ff-126e-491b-ae71-c66f305fb527','null','f9737450-54bd-4567-b8aa-bc41eff0907c','3a96d13f-ad83-4d66-9f09-49d348a1aa24','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eafb6ec4-8870-4d6c-a6e8-b0865268427a','null','fbb05866-aa6a-4dd4-97f7-a20346d5f024','a1fa23a7-c5c6-493e-a1f0-981af15e337c','1.0',NULL,'Y',NULL,'psm','psm','psm','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c6r96d100',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eb386141-d1cd-418c-88d0-dd6769a73727','null','b793b557-d2ab-4d37-bda1-b897925c5aec','0a04f17d-b28b-435c-96d7-7bbe6c7072e5','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eb653250-d8ab-419d-9b4a-eb0d283e3f84','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eb73da35-bf2f-4b15-a6fc-4a8c7a81ea2e','null','aaa774f2-5100-4b89-9ffa-75ca47774f21','8081cb51-9c3d-4320-8f3b-9f5b8683f379','1.0',NULL,'Y',NULL,'ems','ems','ems',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eb7edf17-9669-4a3f-8e4d-1a6c1d3e79cf','null','8b0ded4b-5f4f-41e9-a462-9d844dbd4e16','b3be0f48-049b-4eae-a438-469f98d3666a','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ebe51ba8-e766-4aab-93c9-9dda409f6e84','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ed014da5-013d-4dea-9f77-f1399adfd0c6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ed202651-4796-4cb4-94ca-382739d41dd4','null','503d60bc-0b02-4a46-8b3f-0d6efa355c6c','1e0ac2af-1887-46e5-adc9-4a6ded8e0b47','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ed8e372b-5893-4f81-ab4c-ad45e6f205b5','null','8d5acbcc-77b0-43ee-9775-8f4cd8fdf949','b50b4639-baf7-4472-9acc-fb576bc007e1','1.0',NULL,'Y',NULL,'xsa','xsa','xsa',NULL,'nd.c4r8d0',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ede8fba4-b7ff-4650-a711-6d6207c4b49b','null','f62862e2-1845-4dfa-b957-bc299928f375','14b6b533-f357-493d-a427-53e80dcf699f','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('eec51444-f917-4826-b6a8-e6221c7a90e4','null','c0738051-2a77-48a0-a0fa-dd5d5f8bcc31','2e67a45a-97ea-4e54-87a7-75c2f7ad9163','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ef26a5a2-9e4e-42ff-bff4-0f194cb2d972','null','f2c4a5c4-d809-4d19-9c02-308b34e89794','65d44361-202b-4aeb-bf5d-ba318fc1f34d','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('efb0efd8-16c6-4e62-bd3f-522990dff760','null','3d101527-fe50-46e7-bd89-ad99e545d322','729e3ea2-d7e7-4a4f-9516-04bf6df59834','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('efb4a2b2-bc92-4d78-9ffb-bcece5d0ccaf','null','1db9da95-cd4d-4225-ac5a-e919f299989b','000ea3fe-76ca-4f10-9f7e-c65bbd597865','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('efc90207-24b1-47a1-928d-19350791ca47','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('efd437ed-2715-4fe4-a69a-eafc41e7f650','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f016575f-e7d9-4a90-aaf2-e6b429060fa8','null','bd670156-9175-4be4-9fde-09fb49dfac27','097276ed-bb83-4805-9cce-ceda0046fe8f','1.0','gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*','Y','Consumer Mobile DNS','dns','dns','dns',NULL,NULL,NULL,'{naming_policy=gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*, ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f0277eef-3729-4e66-8c72-a23f933c5c8f','null','504c87bd-4d99-4237-9ef5-823f659f153f','563300b6-3490-443f-acdc-a65b37a0d955','1.0',NULL,NULL,NULL,'cognoscdp','cognoscdp','cognoscdp',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f0606828-6ceb-497a-863d-b72c9d11fafd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f0961049-966a-440f-af4c-797befaea852','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f148e42e-d310-464f-9a27-bf3bc7ed2202','null','616633f4-2f25-4d7f-915c-105d97ec1390','e5a4b18a-0f96-4a63-aa75-1b6245e5a98a','1.0',NULL,NULL,NULL,'dns','dns','dns',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f1f35cf8-0a4e-48c9-a966-513fcf4863f1','null','e96677f3-5e25-4981-ab2e-4717179460e4','87495082-054c-4c08-8701-a2daf1f39d61','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f219a42a-d5a6-4354-b072-259932ed8b48','null','16c726b8-c7fa-4479-8e7f-02eb6672fcee','ea2f1a09-26ea-4e3b-8534-8633cd98a5a3','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)','PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f2a5b03c-dca9-4152-b35e-95da0b2a42bd','null','db32aef7-2854-4c45-b54b-6a8ba9b2a187','9be0230e-8b41-472f-b116-c088031b6461','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f33b0238-a850-4b95-9078-2561fa509e04','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f39040ec-1feb-4a27-83e4-b5d3f184f896','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f39128b6-1f38-4ca2-816b-3f15872de0bf','null','fb5f262a-269d-475c-bac2-31b009cdbe38','d5ac0c8f-4461-403b-aeb5-9b67f2ca7248','1.0',NULL,'Y',NULL,'ddc','ddc','ddc','{}','{}',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f4267340-601e-4040-ad87-f915e929a7fa','null','1aa31df4-439a-4dcc-b649-a7ed13510ab4','220a8d4f-d9e1-471e-8bc2-5c54d18de3c5','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7','null','f2e36463-6fc4-474f-b99a-bdb244eeb4d0','983f0d97-0403-47e9-929a-f696cddeaccf','1.0',NULL,'Y',NULL,'vpg','vpg','vpg','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f4906bee-f14a-4d10-ac33-99043205b5db','null','231e7f44-fdbc-40a0-b836-c3302421004d','e66f3e27-27f7-450c-b3b7-cdaf43d262b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f4dd3fba-2106-4ba6-b834-b8876f072a3b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f580e854-ac3d-49d1-b581-80b72f5a2c81','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f59f0b93-65da-4d01-bff6-50733cc8a9db','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f5b646e3-bdef-4f05-88e8-7f8cbb13d27e','null','11a268da-9a6e-4f39-8794-8de38f6cad63','6f48d61b-58fb-494e-9450-3497531e456d','1.0',NULL,NULL,NULL,'vvig','vvig','vvig',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f75bbdcd-d848-4a8e-ba4b-5173a7dcbb5a','null','75b03378-7319-418c-95e3-7a596ffa0c3b','b6f636f1-a834-4f24-a036-d0212a053688','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f7b8a554-4335-45b8-bb61-c0a9b6f3d0ca','null','ea28c4ef-8200-4a97-b78c-c1e56f5089aa','198d7317-ad56-4cc3-9027-7a835f72e547','1.0',NULL,'Y',NULL,'rtp_msc_b','rtp_msc_b','rtp_msc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f7d4ccaf-0f34-49e9-bb48-e652ca8a2705','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f7dbd366-3e6f-4078-8f57-0ec005a42aee','null','aedc2b1d-2d46-419a-a100-f19acc5dda4c','b6de808d-1bf1-4445-9096-7184865b90c8','1.0',NULL,NULL,NULL,'guardian','guardian','guardian',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f84541f8-a56d-4ba6-8f2a-98bf872b4323','null','4788a442-db68-4d49-8086-80881e2ebcaa','c691c12d-4cd4-4f6f-8a8c-eb520242ec39','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f8581354-8c0c-4199-9fc3-dcdf0ecef3d9','null','3ecec5d9-7517-4970-9977-242b02f6cc92','eccdf6a2-4ad6-456b-892e-7b4109308445','1.0',NULL,'Y',NULL,'vdns','vdns','vdns','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f88cf470-4821-4a8e-a088-9249eaf046b0','null','78bad803-6e0e-4d03-8c66-72bcc7181953','44463f30-180a-49af-837f-208aa4cf0a2a','1.0',NULL,'Y',NULL,'homestead','homestead','homestead',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f909049f-7457-40d2-83bc-e3a8ce282556','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('f9484812-fe80-4f5a-8428-538ddbca2586','null','5a4eaa4a-ae05-442a-8980-157ed29bcbc0','ae386fdd-e03e-46f1-98d4-013eb4cafa12','1.0',NULL,'Y',NULL,'vsn','vsn','vsn','PUT THE VM IMAGE NAME HERE (UBUNTU 1404)','PUT THE VM FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fa1a48a8-3939-4994-bc74-d57cc601e44a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fa606398-23cc-49c2-94f0-92b2ab6a4bb8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fb09a01b-249b-4038-bcf9-db20b0f206c9','null','4bdabf14-aef2-4def-8ee6-46efdf674a00','85d52cd1-8fc2-4b27-a42c-cb79c3acc1e7','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fb29bfb6-5885-44d4-b792-c8bbf74127f9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fbc1a5aa-361c-4ebf-838f-e50784d09fc9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5','null','3c084584-265d-4191-b62b-a31cb4cdb239','eab27d98-6f01-4376-974d-2f602d08ec6d','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fcaa6830-e5d2-4e51-8b2a-142ce5795ca9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fcb6d888-d5ef-4955-9474-ef4deae1201e','null','aeacd56b-fba6-4a9d-a79a-4fd5e25da60a','e853bc40-4f19-4854-b096-45f3ab82c7e9','1.0',NULL,'Y',NULL,'homer','homer','homer',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fe0adb9f-6a53-4f5f-814a-7fd4a1f94aff','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fe402490-fa32-48fa-9b64-c1be9feaeba8','null','28602f11-3e2a-4d19-8e0e-2f85a5256f69','9a3db35a-1416-4016-912a-afa57590ef6d','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fe5506eb-2cab-49d0-98aa-3f6e7af62928','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fea5c677-4b8b-492f-a23d-665020923070','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fee32e95-4d59-4fb6-bb30-88f63752400f','null','0ba8c32b-e413-494b-afe2-2b10ccfa5ee6','535e57f2-7913-4947-852a-dcd3a9020424','1.0',NULL,NULL,NULL,'nat_fw','nat_fw','nat_fw',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fef42f2f-7105-4d25-b5ea-d0488ba413b8','null','b8098e5a-a3eb-4758-a311-729fbcbaa8ee','5c712825-6389-4664-aeb0-0837faa5d9ad','1.0',NULL,NULL,NULL,'managementui','managementui','managementui',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('fef48cfb-de1f-4482-b6fc-72cd47fa0998','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ff739f94-f33c-4a27-a84e-7ea813bf2e7c','null','1c2f2b6f-dadd-491e-b0bf-91eb8b97e524','d8ae78d3-880d-4a1a-a3af-64bd3077596b','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('ff8f1549-c4cf-44b5-b8a3-884e1a586319','null','b6c6f2bb-729d-436a-80bb-29e8e1e1dfbe','ba095f9d-43f0-4842-b526-56e58a47516a','1.0',NULL,'Y',NULL,'vlb','vlb','vlb','PUT THE IMAGE NAME HERE (UBUNTU 1604)','PUT THE FLAVOR NAME HERE (m1.medium suggested)',NULL,'{ecomp_generated_naming=true}',0,NULL);
+INSERT INTO `VFC_MODEL` VALUES ('vnfapi-vfc-001',NULL,'vnfapi-invariant-vnf-001','vfc-001','v1','vfc-policy-001','Y',NULL,'vfc1','vlc','vlc',NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `VFC_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `VFC_TO_NETWORK_ROLE_MAPPING`
+--
+
+LOCK TABLES `VFC_TO_NETWORK_ROLE_MAPPING` WRITE;
+/*!40000 ALTER TABLE `VFC_TO_NETWORK_ROLE_MAPPING` DISABLE KEYS */;
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1829,'fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1830,'fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1831,'fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1832,'c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1833,'c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1834,'5a81616f-3b85-47f9-b3a6-43ddc9d705d1','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1835,'5a81616f-3b85-47f9-b3a6-43ddc9d705d1','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1836,'1d63438f-8683-481d-af5c-8a440ff6c86e','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1837,'1d63438f-8683-481d-af5c-8a440ff6c86e','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1838,'c8033d10-afbb-4310-b90b-abd4140c191f','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1839,'c8033d10-afbb-4310-b90b-abd4140c191f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1840,'c8033d10-afbb-4310-b90b-abd4140c191f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1841,'28ff8b3e-486a-4f15-bcd8-5bab711d5c33','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1842,'28ff8b3e-486a-4f15-bcd8-5bab711d5c33','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1843,'e7f9b901-b846-49eb-942b-9bf778a7d2c8','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1844,'e7f9b901-b846-49eb-942b-9bf778a7d2c8','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1845,'9166ff2f-23cb-4028-97e5-dc591fcfef3c','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1846,'9166ff2f-23cb-4028-97e5-dc591fcfef3c','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1847,'1782c476-7f94-4c01-9921-02459a6ce3cb','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1848,'1782c476-7f94-4c01-9921-02459a6ce3cb','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1849,'1782c476-7f94-4c01-9921-02459a6ce3cb','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1850,'75fabac4-56d8-4976-899f-0119543fd2b8','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1851,'75fabac4-56d8-4976-899f-0119543fd2b8','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1852,'0b221466-3962-42cd-b241-e08093869999','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1853,'0b221466-3962-42cd-b241-e08093869999','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1860,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1861,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','cpe_public',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1862,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1863,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1864,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','mux_gw_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1865,'023fcd99-b707-4084-81f2-5bc4c58a62fc','default-network-role','vgw','mux_gw_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1866,'bc5ce901-76a8-4516-b65d-26cec4ba463c','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1867,'bc5ce901-76a8-4516-b65d-26cec4ba463c','default-network-role','vpg','unprotected_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1868,'bc5ce901-76a8-4516-b65d-26cec4ba463c','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1869,'bc5ce901-76a8-4516-b65d-26cec4ba463c','default-network-role','vpg','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1870,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1871,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1872,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1873,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw',NULL,0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1874,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1875,'5130f20f-66c2-4ae5-8f93-bdb4ef857585','default-network-role','vfw',NULL,0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1876,'a9139e95-84ea-42d7-a4bb-a72b29a40970','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1877,'a9139e95-84ea-42d7-a4bb-a72b29a40970','default-network-role','vsn','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1878,'a9139e95-84ea-42d7-a4bb-a72b29a40970','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1879,'a9139e95-84ea-42d7-a4bb-a72b29a40970','default-network-role','vsn',NULL,0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1880,'4795998e-8cd5-4b8f-ada9-fe9488392da8','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1881,'4795998e-8cd5-4b8f-ada9-fe9488392da8','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1882,'4795998e-8cd5-4b8f-ada9-fe9488392da8','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1883,'1fc2d7f5-036f-4a77-b840-83277e76f13c','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1884,'1fc2d7f5-036f-4a77-b840-83277e76f13c','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1885,'bb69f2d4-be8a-400f-9d6d-6e9500664dbc','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1886,'bb69f2d4-be8a-400f-9d6d-6e9500664dbc','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1887,'cf60de5e-1332-43fc-8640-a94b5013dea7','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1888,'cf60de5e-1332-43fc-8640-a94b5013dea7','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1889,'cf60de5e-1332-43fc-8640-a94b5013dea7','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1890,'db207678-8018-4829-bec6-4143743b1a29','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1891,'db207678-8018-4829-bec6-4143743b1a29','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1892,'54e98abe-743a-400d-809c-095644d92dd9','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1893,'54e98abe-743a-400d-809c-095644d92dd9','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1894,'aa999b75-51fd-451a-8556-c59e13cb3cd6','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1895,'aa999b75-51fd-451a-8556-c59e13cb3cd6','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1896,'aa999b75-51fd-451a-8556-c59e13cb3cd6','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1897,'f8581354-8c0c-4199-9fc3-dcdf0ecef3d9','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1898,'f8581354-8c0c-4199-9fc3-dcdf0ecef3d9','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1899,'bfbbab1c-b257-4ea9-81e0-416755b28df7','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1900,'bfbbab1c-b257-4ea9-81e0-416755b28df7','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1901,'66bc8dbf-26c6-4b12-9b87-c29b14cb1bac','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1902,'66bc8dbf-26c6-4b12-9b87-c29b14cb1bac','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1903,'ff8f1549-c4cf-44b5-b8a3-884e1a586319','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1904,'ff8f1549-c4cf-44b5-b8a3-884e1a586319','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1905,'ff8f1549-c4cf-44b5-b8a3-884e1a586319','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1906,'12cee19b-3c7e-4a61-9c3e-123702c6a2f5','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1907,'12cee19b-3c7e-4a61-9c3e-123702c6a2f5','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1908,'64508b50-a134-41d4-a957-ba40718dc250','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1909,'64508b50-a134-41d4-a957-ba40718dc250','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1910,'73c626ff-5b74-4f4f-a13a-a0998fa197e5','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1911,'73c626ff-5b74-4f4f-a13a-a0998fa197e5','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1912,'6be7deec-f93d-48ab-a6c4-ea844da22d0f','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1913,'6be7deec-f93d-48ab-a6c4-ea844da22d0f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1914,'6be7deec-f93d-48ab-a6c4-ea844da22d0f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1915,'6163e3b4-ad26-4b16-a3cd-d0f3a3c66214','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1916,'6163e3b4-ad26-4b16-a3cd-d0f3a3c66214','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1917,'708364f6-83e5-40dd-a3cd-1903cda658f5','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1918,'708364f6-83e5-40dd-a3cd-1903cda658f5','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1919,'b4100ed9-507a-4be4-a456-0e49482a58ac','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1920,'b4100ed9-507a-4be4-a456-0e49482a58ac','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1921,'b4100ed9-507a-4be4-a456-0e49482a58ac','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1922,'31b53e81-28c3-482e-842c-0ebd21053b59','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1923,'31b53e81-28c3-482e-842c-0ebd21053b59','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1924,'919ae940-5485-4270-9bb2-980213db6b95','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1925,'919ae940-5485-4270-9bb2-980213db6b95','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1926,'f219a42a-d5a6-4354-b072-259932ed8b48','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1927,'f219a42a-d5a6-4354-b072-259932ed8b48','default-network-role','vdns','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1928,'2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d','default-network-role','vweb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1929,'2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d','default-network-role','vweb','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1930,'5418661d-07e1-403a-8caf-03f5442f2308','default-network-role','vaaa','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1931,'5418661d-07e1-403a-8caf-03f5442f2308','default-network-role','vaaa','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1932,'652259eb-1b57-4f6e-8d22-6420a8261938','default-network-role','vdhcp','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1933,'652259eb-1b57-4f6e-8d22-6420a8261938','default-network-role','vdhcp','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1934,'9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','default-network-role','vbng','brgemu_bng_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1935,'9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','default-network-role','vbng','bng_gmux_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1936,'9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','default-network-role','vbng','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1937,'9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','default-network-role','vbng','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1938,'493be6dd-c307-4d84-bee4-2ed50e044f54','default-network-role','vbrgemu','vbrgemu_bng_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1939,'4440906c-a7e7-478b-a637-812999219fd1','default-network-role','vgw','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1940,'4440906c-a7e7-478b-a637-812999219fd1','default-network-role','vgw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1941,'4440906c-a7e7-478b-a637-812999219fd1','default-network-role','vgw','mux_gw_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1942,'bf9a909c-17ef-4a69-ac1f-56d05c53c528','default-network-role','vgmux','mux_gw_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1943,'bf9a909c-17ef-4a69-ac1f-56d05c53c528','default-network-role','vgmux','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1944,'bf9a909c-17ef-4a69-ac1f-56d05c53c528','default-network-role','vgmux','bng_gmux_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1945,'2b44c9db-28e1-45aa-b297-a4511d5317fe','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1946,'2b44c9db-28e1-45aa-b297-a4511d5317fe','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1947,'fb09a01b-249b-4038-bcf9-db20b0f206c9','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1948,'fb09a01b-249b-4038-bcf9-db20b0f206c9','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1949,'fb09a01b-249b-4038-bcf9-db20b0f206c9','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1950,'547126cc-f04f-458b-906a-ecb8463a058a','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1951,'547126cc-f04f-458b-906a-ecb8463a058a','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1952,'4dfadd90-d618-4c8d-b47d-60efebf6d01d','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1953,'4dfadd90-d618-4c8d-b47d-60efebf6d01d','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1954,'6e3b40fc-e28b-4158-ae96-fcdb901cb7f4','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1955,'6e3b40fc-e28b-4158-ae96-fcdb901cb7f4','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1956,'6e3b40fc-e28b-4158-ae96-fcdb901cb7f4','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1957,'195f76ea-8256-4a07-b525-b40267c37b21','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1958,'195f76ea-8256-4a07-b525-b40267c37b21','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1959,'f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1960,'f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1961,'b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3','default-network-role','vbrgemu','vbrgemu_bng_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1962,'b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3','default-network-role','vbrgemu','vbrgemu_bng_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1963,'805be1fb-285d-4487-a9a2-223e995df5a4','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1964,'805be1fb-285d-4487-a9a2-223e995df5a4','default-network-role','vdns','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1965,'805be1fb-285d-4487-a9a2-223e995df5a4','default-network-role','vdns','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1966,'805be1fb-285d-4487-a9a2-223e995df5a4','default-network-role','vdns','cpe_public',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1967,'25011296-744f-4cf6-80ed-476758829e90','default-network-role','vweb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1968,'25011296-744f-4cf6-80ed-476758829e90','default-network-role','vweb','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1969,'25011296-744f-4cf6-80ed-476758829e90','default-network-role','vweb','cpe_public',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1970,'25011296-744f-4cf6-80ed-476758829e90','default-network-role','vweb','cpe_public',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1971,'2435ffd0-cf02-4c82-a6df-655986b2518b','default-network-role','vaaa','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1972,'2435ffd0-cf02-4c82-a6df-655986b2518b','default-network-role','vaaa','cpe_signal',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1973,'2435ffd0-cf02-4c82-a6df-655986b2518b','default-network-role','vaaa','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1974,'2435ffd0-cf02-4c82-a6df-655986b2518b','default-network-role','vaaa','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1975,'d9ee5ccc-acc3-4658-9068-e2d60942040d','default-network-role','vdhcp','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1976,'d9ee5ccc-acc3-4658-9068-e2d60942040d','default-network-role','vdhcp','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1977,'d9ee5ccc-acc3-4658-9068-e2d60942040d','default-network-role','vdhcp','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1978,'d9ee5ccc-acc3-4658-9068-e2d60942040d','default-network-role','vdhcp','cpe_signal',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1985,'8be6b1e3-cfbb-4f62-8820-067bc784585d','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1986,'8be6b1e3-cfbb-4f62-8820-067bc784585d','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1987,'8be6b1e3-cfbb-4f62-8820-067bc784585d','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1988,'98f311f9-39e0-4b96-be75-548fe6953247','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1989,'98f311f9-39e0-4b96-be75-548fe6953247','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1990,'c231d966-7c33-475b-b1da-6d8183a14f36','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1991,'c231d966-7c33-475b-b1da-6d8183a14f36','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1992,'25d3be48-fc4b-453f-96de-97e07e6c18f5','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1993,'25d3be48-fc4b-453f-96de-97e07e6c18f5','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1994,'25d3be48-fc4b-453f-96de-97e07e6c18f5','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1995,'377825eb-e83d-49b6-81ce-c99a0d30064e','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1996,'377825eb-e83d-49b6-81ce-c99a0d30064e','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1997,'37e7c1c1-d886-47e1-90a8-f907fcb312c3','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1998,'37e7c1c1-d886-47e1-90a8-f907fcb312c3','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (1999,'267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2000,'267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2001,'267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2002,'bffb18fa-e09f-4d2e-9a56-6f032e03ac19','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2003,'bffb18fa-e09f-4d2e-9a56-6f032e03ac19','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2004,'08559203-1f1e-4424-ac5f-6ec24bb8bf6d','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2005,'08559203-1f1e-4424-ac5f-6ec24bb8bf6d','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2006,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','brgemu_bng_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2007,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','brgemu_bng_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2008,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','bng_gmux_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2009,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','bng_gmux_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2010,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2011,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2012,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','cpe_signal',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2013,'c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','default-network-role','vbng','cpe_signal',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2020,'30969396-fa5a-4faf-9163-db6484e54e59','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2021,'30969396-fa5a-4faf-9163-db6484e54e59','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2022,'3b08d0cb-3f1c-4178-8dab-bf7b85782f00','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2023,'3b08d0cb-3f1c-4178-8dab-bf7b85782f00','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2024,'3b08d0cb-3f1c-4178-8dab-bf7b85782f00','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2025,'98608c67-9b1a-4160-849c-060171c0ae16','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2026,'98608c67-9b1a-4160-849c-060171c0ae16','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2027,'13ec94e1-b04c-4fd1-99e6-c982020e453f','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2028,'13ec94e1-b04c-4fd1-99e6-c982020e453f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2029,'13ec94e1-b04c-4fd1-99e6-c982020e453f','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2030,'416b75a7-32ea-458c-95fe-c14854d618ca','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2031,'416b75a7-32ea-458c-95fe-c14854d618ca','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2032,'1203cf96-76de-4325-bb58-0053f1c6ddb1','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2033,'1203cf96-76de-4325-bb58-0053f1c6ddb1','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2034,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','mux_gw_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2035,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','mux_gw_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2036,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2037,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','onap_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2038,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','bng_gmux_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2039,'8b84aeae-51cf-48c2-8bb1-50c7aa444a16','default-network-role','vgmux','bng_gmux_private',0,0,NULL,'N',NULL,'6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2040,'e472f39e-2371-4dce-8b5e-883094836201','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2041,'e472f39e-2371-4dce-8b5e-883094836201','default-network-role','vdns',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2042,'22245ea3-605f-4a9f-94b9-cf39ef7f3c0e','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2043,'22245ea3-605f-4a9f-94b9-cf39ef7f3c0e','default-network-role','vlb','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2044,'22245ea3-605f-4a9f-94b9-cf39ef7f3c0e','default-network-role','vlb',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2045,'cf16c622-b9e4-4712-924b-8008f47d84ef','default-network-role','vdns','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2046,'cf16c622-b9e4-4712-924b-8008f47d84ef','default-network-role','vdns','vlb_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2047,'61ac4ca1-9516-43c8-ab0e-d869e3d5d011','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2048,'61ac4ca1-9516-43c8-ab0e-d869e3d5d011','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2049,'22c63259-70c3-4d19-8f75-47ebef517be4','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2050,'22c63259-70c3-4d19-8f75-47ebef517be4','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2051,'22c63259-70c3-4d19-8f75-47ebef517be4','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2052,'61a24df6-cde4-4d83-ae28-ed1f60e85381','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2053,'61a24df6-cde4-4d83-ae28-ed1f60e85381','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2054,'bfd5e865-92a4-45a1-888d-ba7c2497ad50','default-network-role','vpg',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2055,'bfd5e865-92a4-45a1-888d-ba7c2497ad50','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2056,'d057afa2-edab-4be3-93cb-89854e40c298','default-network-role','vfw','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2057,'d057afa2-edab-4be3-93cb-89854e40c298','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2058,'d057afa2-edab-4be3-93cb-89854e40c298','default-network-role','vfw',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2059,'f9484812-fe80-4f5a-8428-538ddbca2586','default-network-role','vsn','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2060,'f9484812-fe80-4f5a-8428-538ddbca2586','default-network-role','vsn',NULL,0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2061,'63227786-48c6-4e70-a229-64a4dd79d8c4','default-network-role','vpg','unprotected_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `VFC_TO_NETWORK_ROLE_MAPPING` VALUES (2062,'63227786-48c6-4e70-a229-64a4dd79d8c4','default-network-role','vpg','onap_private',0,0,'N',NULL,'4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `VFC_TO_NETWORK_ROLE_MAPPING` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `VF_MODEL`
+--
+
+LOCK TABLES `VF_MODEL` WRITE;
+/*!40000 ALTER TABLE `VF_MODEL` DISABLE KEYS */;
+INSERT INTO `VF_MODEL` VALUES ('02328586-9428-4655-ba74-b07ec04b87b8','null','878a7207-457f-4397-875c-2960790cc45d','6ba0507d-0cc0-49b7-9f7d-14b77208a91d','1.0','20066c20-7e1c-4c6c-ad35',NULL,'Y',1,NULL,NULL,NULL,NULL,'a846d6ba-f144-4f23-a618','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('050cb7c0-3c3e-418d-b08d-3c58fd11fa55','null','eccb19dc-ea1d-438f-9fdd-639a7e715f52','9ad0a466-446e-47ec-a193-03644a0440b8','1.0','d42ff177-2274-4e2c-ab72',NULL,'Y',1,NULL,NULL,NULL,NULL,'e6f60590-3d68-4657-baef','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('0a534cd4-6b40-4294-8a3c-411db2180e0c','null','740ea8c7-17ba-4584-ac37-816cb64e2500','3d0d5075-7e0e-4965-a964-b808f159d063','1.0','vcpevsp_infra_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('0a8170be-6630-473e-a281-72bb8c5073c1','null','77144646-7def-4ae3-9eeb-cf6db0a4f940','c1130d82-dbdf-480b-9dfe-59e92c731acd','1.0','02337616-7925-4c29-a084',NULL,'Y',1,NULL,NULL,NULL,NULL,'c1536ceb-24bf-45ef-9298','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('11a6cd75-91a6-47bc-aeed-75a27db27357','null','872a9bde-6d3f-4e81-8ba3-29e952013694','d996dbf4-036e-42c0-aa1c-e7d7918e160b','1.0','44353c56-dcc6-4abd-ba5f',NULL,'Y',1,NULL,NULL,NULL,NULL,'311201a8-87ed-4a48-b9dd','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('1308b712-e956-4678-bbb4-95bb053719fb','null','3e8c0291-3367-4fbe-a7c6-50e1c6956a8d','2841744d-b8e5-467b-b1f9-438168db6c3b','1.0','vIMSVSP20180608',NULL,'Y',1,NULL,NULL,NULL,NULL,'00992ad9-cada-4520-84aa','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('13432bde-f701-4c8d-9962-d4325c60d466','null','0cf78904-45e6-4e6a-8e9e-683429f99c85','0c8109b5-7d77-49d3-9165-8a5f5133622a','1.0','f8ed27d1-03f6-45cb-9d7f',NULL,'Y',1,NULL,NULL,NULL,NULL,'d5cbb80e-fe54-474b-aeff','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('136ca73b-ac72-4734-8236-13304e9aed60','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('1b8908b1-0af7-4fa2-980d-a43bc85ef8f5','null','176f26ba-9bf8-46b6-b54d-53cd0c14183d','d848e8a2-5360-445a-b98d-6f3d2a787dc5','1.0','vcpear_tunnelxconn_0412a',NULL,'Y',1,NULL,NULL,'TunnelXConn','TunnelXConn','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('23219762-d5d8-48aa-b8e7-674878f16d98','null','c1aff822-c464-474c-a56b-d64f7442fd10','3a519696-4606-4996-8544-649a40bb403a','1.0','cd78de6e-0e49-4503-8de5',NULL,'Y',1,NULL,NULL,NULL,NULL,'c11d4b2e-f8fe-448e-bc82','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('24b7a42c-43a2-459a-8c0b-14cfe2983078','null','35b259b6-d367-4e2d-bd79-dd6ec0740e2e','603377e1-2058-44ac-81cb-ce44e7f7972d','1.0','91e8ae5e-f191-4512-865a',NULL,'Y',1,NULL,NULL,NULL,NULL,'8ae7758e-6682-4c18-b886','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('25c0e63a-62be-45da-9cb3-37e244fcf664','null','48d5645b-2b71-4854-ba2f-cca3d4c96f05','79e9ee95-cdb9-4e22-9daa-35dcfb0b949c','1.0','vPacketGen-test',NULL,'Y',1,NULL,NULL,NULL,NULL,'marco','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('28978eea-6b39-497a-9ee8-ce2f92159235','null','19c5417a-fead-41f2-a29e-c1bd7593601f','5cd256a5-64a5-46cf-bc8f-4131533cc8e2','1.0','vcpear_brg_0412a',NULL,'Y',1,NULL,NULL,'BRG','BRG','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('2a1eb839-b3c6-40f9-b7c1-efb3b26c70dc','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('2af2bbbe-63d7-49ca-be71-90e55a813a99','null','b8937bf5-6a09-46ae-894a-c0637c21f796','8127d692-4150-400a-afba-220682fca4a6','1.0','5cba334e-f675-4e7b-bdca',NULL,'Y',1,NULL,NULL,NULL,NULL,'bcd5e1f3-59e4-479b-9860','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('2f3b6df7-1c81-46f7-b5ef-2529627e6417','null','006912bd-83e4-4c82-8133-4ca48d26351d','b988526d-2743-4c98-902b-7ed8ecbc7dd4','1.0','91ae7763-9640-44db-9741',NULL,'Y',1,NULL,NULL,NULL,NULL,'0a7a8936-cf4b-4b9b-b9d9','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('35803e11-0a26-4d3c-9056-17371c038f0f','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('366e9c64-caf3-46d5-a849-61695400be91','null','bf28c330-ea31-420d-a251-e188aa60ba3a','b7c0d9bf-049e-46ab-9293-8801e0a338bf','1.0','vIMSVSP20180608b',NULL,'Y',1,NULL,NULL,NULL,NULL,'00992ad9-cada-4520-84aa','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('3803bf29-c913-4f7b-9483-1dfef28e1d78','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('3ab10178-2307-4779-993b-d8d916642770','null','63d62772-d133-4237-85c9-3fe0bb9d1e3d','e07555fb-90fb-4a49-80df-82083e6c9fb2','1.0','vFirewall-test',NULL,'Y',1,NULL,NULL,NULL,NULL,'marco','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('3bc3c7fb-2aa2-485c-be1f-cdbba0409252','null','8ec6af7c-722a-4bb8-bc03-fefd95701b95','46a14e4e-046f-4b4f-a709-720c2cf294fc','1.0','vcpevsp_vgw_0412',NULL,'Y',1,NULL,NULL,'vGW','vGW','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('3bf1f25c-6120-4b26-9208-2e14e8093287','null','2d434620-6804-41a3-81ed-070b4fdc80d3','23b52494-a020-4f24-8aaa-928c770a312d','1.0','411213cf-2ef7-4baf-937f',NULL,'Y',1,NULL,NULL,NULL,NULL,'57769652-ba3b-44b8-aea8','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('3df5fb34-6c7c-4f8e-b5d2-e870c39e2a2a','null','72e4175b-2ff5-450e-8682-5d914da139b6','1cb4c849-dfc6-46cd-b51e-115f12fe949a','1.0','db936876-875a-4b76-a63a',NULL,'Y',1,NULL,NULL,NULL,NULL,'88d88c5e-b523-4f95-bda9','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('497101aa-128a-4212-b1bc-4acc4ef55f39','null','af3c7a82-93ab-4c59-a1b8-3942fd9003cc','937577ab-a130-47eb-be8c-9b147645c07f','1.0','5b544259-d509-4de2-8f6b',NULL,'Y',1,NULL,NULL,NULL,NULL,'801b3622-9df2-41c0-b5ed','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('4a60ae92-57ac-447a-b24e-67fc0d59e232','null','4a6cb9bd-8a5b-4a74-b014-e8eb31d9aff0','711b6b74-0970-415e-8111-e307748d4e1e','1.0','f4e99124-b49f-415c-89c4',NULL,'Y',1,NULL,NULL,NULL,NULL,'30865633-d5c2-4571-bb21','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('4d1b6ce4-cd7e-42ce-bdf4-173710ebd53c','null','3161f1e7-5d66-4797-86ea-5d4e0ad1abac','ff0c0a5f-7bb5-43d4-98b2-919351e62058','1.0','vIMSVSP20180608a',NULL,'Y',1,NULL,NULL,NULL,NULL,'00992ad9-cada-4520-84aa','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('5525dd38-b185-4ef1-aa66-6e96d0437f0b','null','67cf04b1-14f4-4210-93e5-cd3cf2f3d2fe','52926239-bb9e-4211-b2bb-8f7e73c7ffad','1.0','842ab74b-ba7d-431f-955c',NULL,'Y',1,NULL,NULL,NULL,NULL,'40c66297-aea9-463f-997e','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('5724fcc8-2ae2-45ce-8d44-795092b85dee','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('59d0a2ee-dd09-4fd7-866f-acaa739855bc','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('699b2861-22f0-4a32-8497-1d373b7c85f8','null','54f69a75-7add-4be5-ade9-44bfe6c4ef71','5918eca3-5e4c-4a5b-9231-6a60b96cab5a','1.0','b4f764be-4b65-41b5-a8b5',NULL,'Y',1,NULL,NULL,NULL,NULL,'2d8b2abb-b313-4dec-8ed1','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('6e52d51a-1d5a-4dfd-ab69-dac16784e620','null','8fb3d57e-3889-4c8f-ba30-d20d02e0aa4d','bf2b4d3c-d07a-47de-8fa6-6b7ad6edd0cf','1.0','b40a75f9-8943-429b-8f59',NULL,'Y',1,NULL,NULL,NULL,NULL,'ebbecfe5-96c4-44ca-af00','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('7236afdf-903f-43c3-969d-3c99643787ea','null','31be6f4c-4793-49af-bb2a-4869936f3868','466d99e6-3e6a-4073-939e-242fa4dc2d7b','1.0','vcpevsp_vbrg_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('73379cc8-4cd2-49bb-a3b5-e3e38693aafc','null','63d62772-d133-4237-85c9-3fe0bb9d1e3d','e07555fb-90fb-4a49-80df-82083e6c9fb2','1.0','vFirewall-test',NULL,'Y',1,NULL,NULL,NULL,NULL,'marco','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('7b708ab0-1d4c-472c-9822-a7d020c4fecf','null','48d5645b-2b71-4854-ba2f-cca3d4c96f05','79e9ee95-cdb9-4e22-9daa-35dcfb0b949c','1.0','vPacketGen-test',NULL,'Y',1,NULL,NULL,NULL,NULL,'marco','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('80bc8335-145b-4b42-9408-d450358f1bab','null','02e9ca0a-8043-4bf6-80e8-e2d3cec23e29','96f065f6-fe4f-4163-aded-d25bfd69426d','1.0','14b9172f-c34c-493f-8531',NULL,'Y',1,NULL,NULL,NULL,NULL,'7ccfd50d-304c-4a10-a696','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('86c1f2b6-a2b5-44cc-97d3-ae29366ac2b1','null','bdde7265-5fc0-4130-8779-4abccf306c09','113cd212-af51-4b98-ad07-14ef3abbff83','1.0','becdb9c0-1855-4f1b-bc0d',NULL,'Y',1,NULL,NULL,NULL,NULL,'0ce7fa73-7a42-43b9-9c41','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('8757a5ba-4c80-4de3-8c61-5fe136bd02be','null','6f5fc5e6-5126-48c2-962d-d6a8336cf38c','90102bff-1096-4e84-946c-c6c865f15036','1.0','vIMSVSP20180607',NULL,'Y',1,NULL,NULL,NULL,NULL,'00992ad9-cada-4520-84aa','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('8892322d-8797-4ecd-a4b1-bf0cdc426541','null','176f26ba-9bf8-46b6-b54d-53cd0c14183d','d848e8a2-5360-445a-b98d-6f3d2a787dc5','1.0','vcpear_tunnelxconn_0412a',NULL,'Y',1,NULL,NULL,'TunnelXConn','TunnelXConn','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('8ad76346-0545-4c65-a54c-8bcd62c8d7f6','null','52f8a7ed-190e-49f8-bb24-8944027a92f5','cf4ad538-318d-46ee-81d9-5f8d006e3606','1.0','vLoadBalancerMS',NULL,'Y',1,'nf-function',NULL,'nf-test','nf-role','marco','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('8cd3bf7d-6771-454d-bdf0-dfd36986c1b8','null','a8ed6a85-b562-4059-a077-fcceb1f863dd','cf00b5dd-bb26-48ac-8a99-e746643c8a02','1.0','53b57349-8c94-4ce0-8409',NULL,'Y',1,NULL,NULL,NULL,NULL,'5bc39f51-5239-4cca-be3c','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('8d495df7-47c8-4971-91d1-b93de4ed2f40','null','4347dec1-a6d5-4065-9100-cf8296c186a3','43434401-02e0-4fad-95ee-0032d7cade67','1.0','a71318f4-c1e0-47bc-a79f',NULL,'Y',1,NULL,NULL,NULL,NULL,'3b22648b-83b2-45cf-8395','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('92725868-e2c5-4dcf-b7dc-e14a8815bcc9','null','e819628d-b462-429a-bc5f-77dc49eb3a4c','339355fa-3a84-4ee2-91f0-ff0d406148c3','1.0','73e99e25-866d-41b3-9a0b',NULL,'Y',1,NULL,NULL,NULL,NULL,'0d6b89df-0911-4925-bd06','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('9b14a452-4107-459c-abab-f485ea5ab93c','null','8ec6af7c-722a-4bb8-bc03-fefd95701b95','46a14e4e-046f-4b4f-a709-720c2cf294fc','1.0','vcpevsp_vgw_0412',NULL,'Y',1,NULL,NULL,'vGW','vGW','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('9cb3fa20-501b-4d82-a03e-43c31113c5fb','null','a8a601e4-e472-47df-92f2-c599ef48d550','35aba391-9e49-47a9-afd4-8c5c74a6a983','1.0','70085862-aac3-4d55-8c5b',NULL,'Y',1,NULL,NULL,NULL,NULL,'d77b87c0-d52e-4d41-89f8','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('9cd59c5c-9856-4376-9331-71b390f5691a','null','81704114-d85f-4cf9-8682-acc747bb12f3','49e9ae79-f2ef-47bc-aaa7-4830b90e73e0','1.0','vcpevsp_vbng_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('9f5855de-b9fb-4b14-8bce-1868da9d72aa','null','909921a8-c227-450c-9bf3-3b72ac583270','52645596-cc19-47e2-95c9-bf636de3ec91','1.0','239c684f-22b0-42c0-9a82',NULL,'Y',1,NULL,NULL,NULL,NULL,'472b477f-3e2f-41b0-82fd','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('a2aa0335-3241-4f03-a902-17f309fe479c','null','e202f844-3fd8-4e79-a6e3-855060e246e2','07a9e92c-2d47-4fa3-8589-39b5cc50e500','1.0','48fb028c-cafb-460e-a193',NULL,'Y',1,NULL,NULL,NULL,NULL,'1a0cb087-4efc-4e74-bd2a','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('bb2eb27e-9591-491a-b35a-3aa0e9cc57b9','null','45c7e8aa-9512-4c78-8e27-e509b90ab6a0','70c357be-23df-4800-b411-6a013aa7d092','1.0','5fd14647-93a0-4a65-aea4',NULL,'Y',1,NULL,NULL,NULL,NULL,'52a2cdc1-a31a-4910-944e','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('bc28ccc5-7685-449f-a41b-4021734f58da','null','4efca684-133b-4c07-b722-41dd83ff8b23','13c16e38-0dc6-4d7c-bcdf-18d1372ef9d5','1.0','d3e133c2-8b6b-4d29-bfe2',NULL,'Y',1,NULL,NULL,NULL,NULL,'647216c9-037c-4f1d-9e2d','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('bcfd6cff-219b-4dea-8c9b-e25541e72827','null','bab4446a-bcbf-4ba1-b53a-0c901d7f898f','5b552231-29db-4dcd-b741-ba61e3b5be54','1.0','68835bb3-c82a-49a9-b2f1',NULL,'Y',1,NULL,NULL,NULL,NULL,'59de9b6f-2949-44d7-8bd1','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('c94127c3-d59a-4cf3-8a6a-a1a148a9d21f','null','1c0d6b49-77c3-4558-94f0-1f8631ca9add','7eb8eca5-f56d-4df0-8e2e-4de55b79d287','1.0','d76b67fa-aa0d-40ad-9080',NULL,'Y',1,NULL,NULL,NULL,NULL,'64017fa2-e3cc-43a5-bd44','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('cb8f6ccd-c8b7-4169-a7de-9e0a69457783','null','a6dd6248-9024-43e1-863a-4d8fafa6f7c3','615953e0-beb9-4e86-b7a0-e10f25a30256','1.0','1d7c4a86-1638-4fd2-a750',NULL,'Y',1,NULL,NULL,NULL,NULL,'e9a30e94-64df-41f4-b66f','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('cc1e0245-fd9c-407a-9199-bcfa247d7718','null','19c5417a-fead-41f2-a29e-c1bd7593601f','5cd256a5-64a5-46cf-bc8f-4131533cc8e2','1.0','vcpear_brg_0412a',NULL,'Y',1,NULL,NULL,'BRG','BRG','integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('d207b1b6-a439-412a-8a4e-b1aef0db6c57','null','a06fd52a-af17-45d0-b441-a5b7b7fb833c','3e0f1e26-da8c-42aa-b4b2-c527602b702f','1.0','2542ad5c-0c1d-4793-adf1',NULL,'Y',1,NULL,NULL,NULL,NULL,'80032dae-ba84-4d59-83f3','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('d7cf16df-fe97-4aee-9b9e-9c27f89b5610','null','b3dc6465-942c-42af-8464-2bf85b6e504b','ba3b8981-9a9c-4945-92aa-486234ec321f','1.0','vcpevsp_vgmux_0412',NULL,'Y',1,NULL,NULL,NULL,NULL,'integration','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('df759ce2-10a2-4504-aef4-2e9111c26c7a','null','98ed1423-e14e-4a8a-aa87-56e4c068b8c7','69ec3916-4868-4bdd-983b-b04bc1e468ff','1.0','e689be09-2a39-4c62-8c06',NULL,'Y',1,NULL,NULL,NULL,NULL,'59d35d1b-bfc7-44ec-8c72','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('e99fe1c3-c970-4ab4-82a3-33a2289829f5','null','e3ff01db-57de-431f-b683-6ad0fe668955','be76ab25-6842-49a6-a6e5-7b3b80ebb811','1.0','45604a78-d4a8-4adc-9b35',NULL,'Y',1,NULL,NULL,NULL,NULL,'dad19bb7-6ae6-42dd-8b4c','1.0',NULL,NULL,NULL);
+INSERT INTO `VF_MODEL` VALUES ('eaddf06d-4a85-4919-bf9a-ded1c48493ca','null','aa0c416f-ac0f-49b5-b5f9-3739ae3f2753','eeb90b63-e4ca-4ddb-9b4a-2b0b125bfbfe','1.0','2c75c3e7-526d-41f7-b0f1',NULL,'Y',1,NULL,NULL,NULL,NULL,'90277d8e-fd79-460a-85a2','1.0',NULL,NULL,NULL);
+/*!40000 ALTER TABLE `VF_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `VF_MODULE_MODEL`
+--
+
+LOCK TABLES `VF_MODULE_MODEL` WRITE;
+/*!40000 ALTER TABLE `VF_MODULE_MODEL` DISABLE KEYS */;
+INSERT INTO `VF_MODULE_MODEL` VALUES ('0b289140-9639-477b-a7a9-fdd986d99bd8','null','c3fffe47-e9ba-4e31-b650-00c1da3c8c5b','4057f859-c218-402f-b176-01b9877288d7','1','Base',NULL,NULL,'5525dd38-b185-4ef1-aa66-6e96d0437f0b','base_vvg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('0db11c68-0af2-4f87-aa91-9303d15d4143','null','70146dae-fd10-462e-8a7a-0d8c6624cdf9','0eb526ba-d75b-4097-be65-0575c72c0b99','1','Base',NULL,NULL,'2f3b6df7-1c81-46f7-b5ef-2529627e6417','base_vcpe_vbng');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('0e6a57c1-abd7-436b-963f-1ad051cb3c40','null','db9a9ec4-6173-48ce-9df0-3a08ff1f6475','f782c254-01bf-4558-a65c-2252a60d4fa8','1','Base',NULL,NULL,'92725868-e2c5-4dcf-b7dc-e14a8815bcc9','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('1903fdc0-e839-4f3c-8b43-bac5503fc056','null','bd7ab543-37e6-42ed-8516-c70b8b284f2f','a69dc831-d3f6-4993-85e8-14518bb8f9db','1','Base',NULL,NULL,'bb2eb27e-9591-491a-b35a-3aa0e9cc57b9','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('1cbe89cb-8889-4ca3-8f01-d772e56d0f17','null','f2cb1edf-f10a-4dcc-933a-c0f6da918587','f766f761-2ca8-42a7-b746-fdd67bc70f9c','1','Base',NULL,NULL,'050cb7c0-3c3e-418d-b08d-3c58fd11fa55','base_vvg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('1d4653f7-9578-440f-a325-d39495d2dead','null','4e9e9373-213c-4987-a215-c44ccc6c07b3','a927a760-ff55-401f-8a37-161b277205e4','1','Base',NULL,NULL,'9cb3fa20-501b-4d82-a03e-43c31113c5fb','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('20983c6f-bdbe-43d2-9897-e48f5596ef17','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'3803bf29-c913-4f7b-9483-1dfef28e1d78','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('2581c6d0-40a7-48dd-9fb7-30e9b9496b3e','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'d7cf16df-fe97-4aee-9b9e-9c27f89b5610','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('2ccfec2f-8e46-4d2d-9213-93a5b1395fc0','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'2a1eb839-b3c6-40f9-b7c1-efb3b26c70dc','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('2f2dc87c-bc90-4596-8456-6a7d60e0850a','null','395d13bc-de5d-48ac-8723-d4d3c000000c','63047f7b-3de3-4127-84b8-058c3a92b6ad','1','Expansion',NULL,NULL,'bc28ccc5-7685-449f-a41b-4021734f58da','dnsscaling');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('31d9a71a-2e44-4581-b9a2-8e000dc6ae6a','null','b459045d-c6d3-4955-b77f-3d94641f4552','4adc3bfd-a4a8-4d0c-ba3f-29f9db795976','1','Base',NULL,NULL,'699b2861-22f0-4a32-8497-1d373b7c85f8','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('341fcc33-de58-4471-9bb5-13a0c643dbce','null','a5593fdb-cf67-45e9-9b8a-369be20ae837','b46a43f8-f9eb-4588-9aae-6359f2e112b7','1','Expansion',NULL,NULL,'df759ce2-10a2-4504-aef4-2e9111c26c7a','dnsscaling');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('39a78b1b-d1cf-44af-9994-318dd7a672ce','null','e53c3b4b-b55a-42b8-a824-57c420e408f9','26f5d512-20bd-46ba-9144-4ca0168cf473','1','Base',NULL,NULL,'7b708ab0-1d4c-472c-9822-a7d020c4fecf','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('3be9227d-ac6f-471a-98fa-4943f42fe91b','null','f37f737f-9e9d-4b57-820e-6bcf9ffe3fb2','ebcb2c42-fa5a-4f32-a7cc-31a93f96b5b2','1','Base',NULL,NULL,'9cd59c5c-9856-4376-9331-71b390f5691a','base_vcpe_vbng');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('3f8fc159-6e6a-450c-a99a-eed70e8df403','null','974f95c9-803d-419d-a4a0-3f8078c4a940','1f094eb8-ba4a-4bda-afcf-b5fc53cb8a88','1','Base',NULL,NULL,'d207b1b6-a439-412a-8a4e-b1aef0db6c57','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('42d4fdda-4d99-4887-ba9c-46562c18e3bb','null','77b1fb63-6176-4246-b243-cfc69a216fe7','1a78c191-5aef-40a5-b3d9-2781ae8a4f92','1','Base',NULL,NULL,'2af2bbbe-63d7-49ca-be71-90e55a813a99','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('45b87432-690e-4115-8f2a-8ef57597be79','null','5237df15-60ad-494d-8e8d-ec56d8609339','fc879b56-6a28-4c59-b3b0-87a097faf0b5','1','Base',NULL,NULL,'df759ce2-10a2-4504-aef4-2e9111c26c7a','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('45b9d6ff-1320-4b9f-8efa-21030effa9b1','null','59e5784d-ab31-4591-92fb-648ac12c7565','8acc7f41-cd32-4ebc-87d6-426cdb889fea','1','Base',NULL,NULL,'8ad76346-0545-4c65-a54c-8bcd62c8d7f6','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('4ba5186b-e0ab-415d-8757-172a9f904ee7','null','fe9fbf02-ec53-4762-a47b-0d02138c7ba0','3f51990f-e433-4283-aa7a-12fb47d4d78d','1','Base',NULL,NULL,'e99fe1c3-c970-4ab4-82a3-33a2289829f5','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('5109a63a-2c4f-47fe-b9e3-a90e8fac6a10','null','3c90bf5c-cd38-496a-89f4-5f080f543fff','049fe59d-72a3-42b3-91b1-4043564feb87','1','Base',NULL,NULL,'3ab10178-2307-4779-993b-d8d916642770','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('53430646-a6f7-4d80-9d02-97fb3b233521','null','bb5fefc2-aa81-474e-b3e7-bd6b093659a0','28e1bbec-52e3-478b-abc6-68fda9aa92bc','1','Base',NULL,NULL,'80bc8335-145b-4b42-9408-d450358f1bab','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6','null','cdaad672-9299-49c9-a616-78f3730833a4','5c6fca56-a6f8-41a6-9be1-11500b6dfff2','1','Base',NULL,NULL,'c94127c3-d59a-4cf3-8a6a-a1a148a9d21f','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('571c5caf-bea1-4420-8d61-a831b4a22fdc','null','f0e1b9d3-166f-4c2d-8346-dfd3ff6f8316','eef5e1e5-a164-40ba-b4dd-d0e0acc014f3','1','Base',NULL,NULL,'4d1b6ce4-cd7e-42ce-bdf4-173710ebd53c','base_clearwater');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('59ffe5ba-cfaf-4e83-a2f3-159522dcebac','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'5724fcc8-2ae2-45ce-8d44-795092b85dee','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('5a880f5c-de89-4abf-917d-24ae4e850934','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'35803e11-0a26-4d3c-9056-17371c038f0f','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('69d963bf-c0ab-4e75-97b5-f46e1d212f14','null','3282b658-dcd3-4bfc-8cb0-63279fe190be','7aef942e-8131-41f7-8047-71fce68ad8ce','1','Base',NULL,NULL,'8cd3bf7d-6771-454d-bdf0-dfd36986c1b8','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('6b71d46b-1d13-47bd-a97d-b283777c464f','null','4d2d8bc6-1b87-4ce8-bb93-bfcf21f63064','baf6efc6-3c3e-4004-a4bf-8f078d311244','1','Base',NULL,NULL,'3bc3c7fb-2aa2-485c-be1f-cdbba0409252','base_vcpe_vgw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('705e9c3c-e855-4842-a31a-e39f01560985','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'59d0a2ee-dd09-4fd7-866f-acaa739855bc','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('74aab1af-ad08-43fb-86d1-4810c0cf50ac','null','449eec34-d76d-4f22-b467-b5c8d1bc662b','3f086a59-c8f6-4c4c-8712-11392ee03e43','1','Base',NULL,NULL,'0a534cd4-6b40-4294-8a3c-411db2180e0c','base_vcpe_infra');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('761b31e4-3c0f-4117-bac6-b2581ac9a989','null','17ef5ce7-4121-4d23-aa7a-ecbe352b416f','d7aa9249-db50-4e18-8a0d-9c74c214cf48','1','Base',NULL,NULL,'6e52d51a-1d5a-4dfd-ab69-dac16784e620','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('7733191f-c58e-4934-b30d-98c0db7e6108','null','222cdf4a-244b-4f74-a1bf-c7c915a4176b','4cb66676-400d-487b-939f-783c77f7bbf4','1','Expansion',NULL,NULL,'6e52d51a-1d5a-4dfd-ab69-dac16784e620','dnsscaling');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc','null','1af2e4b1-c363-43f0-8b26-b621b6c93987','c20ac252-a9a9-4360-9e40-1fd5b0790424','1','Base',NULL,NULL,'8d495df7-47c8-4971-91d1-b93de4ed2f40','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('888a977c-13c9-4942-8e53-bd51888625f4','null','6943d5f7-c710-4405-9353-acae2f152afc','978221b8-3b6e-4429-b83e-8369152b1470','1','Base',NULL,NULL,'366e9c64-caf3-46d5-a849-61695400be91','base_clearwater');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('88e78e02-988a-462d-85c2-7628bf471b9f','null','7ca7567c-f42c-4ed8-bcde-f8971b92d90a','513cc9fc-fff5-4c46-9728-393437536c4d','1','Base',NULL,NULL,'136ca73b-ac72-4734-8236-13304e9aed60','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('8a15a15d-cbd2-4946-87b5-69476ab2596b','null','e53c3b4b-b55a-42b8-a824-57c420e408f9','26f5d512-20bd-46ba-9144-4ca0168cf473','1','Base',NULL,NULL,'25c0e63a-62be-45da-9cb3-37e244fcf664','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72','null','59e1d32d-678a-4706-a7fb-4930460dce60','a9c67084-39da-4e0c-8298-aabf0da36ee4','1','Base',NULL,NULL,'bcfd6cff-219b-4dea-8c9b-e25541e72827','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('931e671e-7725-4147-b377-fc92c5b00cbd','null','5d2f5424-6b47-473a-9b6f-e4ad5a42080d','ec06c54a-b834-48c1-82d4-d03744fc2c80','1','Base',NULL,NULL,'8757a5ba-4c80-4de3-8c61-5fe136bd02be','base_clearwater');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('937ecbf2-e792-4216-b475-095d03a71c54','null','3c90bf5c-cd38-496a-89f4-5f080f543fff','049fe59d-72a3-42b3-91b1-4043564feb87','1','Base',NULL,NULL,'73379cc8-4cd2-49bb-a3b5-e3e38693aafc','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('95494fd6-54a5-44cf-9ee8-fc7adf893f16','null','0b3c74a3-8a55-4f56-a2cc-c0ec43cf24d6','0054157b-0598-4b8d-805f-a2cb0891f6cc','1','Base',NULL,NULL,'4a60ae92-57ac-447a-b24e-67fc0d59e232','base_vvg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('9bbd841f-aa76-4fd6-a3f6-83ba7465c34d','null','3a6313c9-1520-424d-85bc-63c1c9ee4ca4','e20182ed-5f02-4256-8e83-88c435c1a8df','1','Base',NULL,NULL,'a2aa0335-3241-4f03-a902-17f309fe479c','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('9d284b79-ff6d-45cc-81b2-1db821714e84','null','fbc56527-e3bd-422a-92f1-530e58017b88','ce682755-cdc9-417a-8d9f-b894c3b951d5','1','Base',NULL,NULL,'7236afdf-903f-43c3-969d-3c99643787ea','base_vcpe_vbrgemu');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('9f4c7aa4-4454-41ff-95e0-2bf5d9c74558','null','71c770da-1652-49a2-bd17-97a95e027123','6d32dcd6-f866-475b-98fe-629bae1a04ec','1','Expansion',NULL,NULL,'8ad76346-0545-4c65-a54c-8bcd62c8d7f6','dnsscaling');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('a3c74af3-4441-4e1f-b23b-839227c2b56d','null','2c2c88e1-6ae4-44a9-8cda-c221a8e8db7d','40aa3fc0-65e5-4a9b-a382-6235f843bb32','1','Base',NULL,NULL,'eaddf06d-4a85-4919-bf9a-ded1c48493ca','base_vcpe_vgw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('affab6eb-90ce-40d0-bf4c-e81abda2a119','null','4d2d8bc6-1b87-4ce8-bb93-bfcf21f63064','baf6efc6-3c3e-4004-a4bf-8f078d311244','1','Base',NULL,NULL,'9b14a452-4107-459c-abab-f485ea5ab93c','base_vcpe_vgw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('b4f14dde-d03d-49cb-b878-e79ad325bf84','null','cf7026de-1bff-4a21-932f-03dde2d4d6ad','5dfc0857-0e77-4c2d-a3b0-f2656bbd973e','1','Base',NULL,NULL,'bc28ccc5-7685-449f-a41b-4021734f58da','base_vlb');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('b7ac8294-0181-45f2-b59e-0a71e11fe5cd','null','05eb1da8-85c2-4a5c-81ca-6df587f5c049','7a154dc8-fe54-4328-a19f-c4006a55bf53','1','Base',NULL,NULL,'3bf1f25c-6120-4b26-9208-2e14e8093287','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('b96b87eb-4030-4ba9-805d-5a92db52759f','null','c67e55bf-d097-4ddf-b19a-980005265482','50dd56ae-a346-4dfb-b929-4e3fde174203','1','Base',NULL,NULL,'497101aa-128a-4212-b1bc-4acc4ef55f39','base_vcpe_infra');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('baa40973-450b-413f-86f7-3ac97383d6aa','null','6f382445-8a6f-42e2-b22e-3352c67afe64','ff711425-e630-4070-ad13-328a0618142b','1','Base',NULL,NULL,'1308b712-e956-4678-bbb4-95bb053719fb','base_clearwater');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('bb496648-65a1-4e47-bf92-99f11de47bbe','null','99d66f6e-84fd-4f1d-b30f-16cef63cd650','c2e44866-ad88-41df-bae0-c38e7206106d','1','Base',NULL,NULL,'11a6cd75-91a6-47bc-aeed-75a27db27357','base_vcpe_vgmux');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('bb71bfc9-edcf-450b-b28b-0d5b57f1d7c9','null','bdb61258-c550-42e3-8e28-b13bb7516125','84be55c5-d000-45fe-a26e-51ce61c13168','1','Base',NULL,NULL,'0a8170be-6630-473e-a281-72bb8c5073c1','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('c25a3478-97f5-4c1f-bf34-8989d06befba','null','896108d0-3f57-4d94-aa3b-180d7b57bcb0','d4dbe9c5-468b-4b3d-bf8e-1b36ae7aa314','1','Base',NULL,NULL,'24b7a42c-43a2-459a-8c0b-14cfe2983078','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('c2b89e33-8aba-44b5-95e4-97ab0459b338','null','6bb5de2c-4204-4809-89ed-b6cb98a198e4','c7f53587-439a-441e-bddb-9a223d10c256','1','Base',NULL,NULL,'02328586-9428-4655-ba74-b07ec04b87b8','base_vvg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('cbbc2b4e-59e3-4812-98a7-a3b449f0782e','null','1ea273ca-3527-48da-baa7-17259608dac3','1c90238f-4045-4f39-8347-e8c3a5474b5e','1','Base',NULL,NULL,'cb8f6ccd-c8b7-4169-a7de-9e0a69457783','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('d825dcf1-5dd8-45fe-9e4c-c2ce708c9b0e','null','12363638-ac13-499e-9f0e-3418dac41e73','c9d0e8d8-2617-4e6f-8b47-3f472677d3ad','1','Expansion',NULL,NULL,'8d495df7-47c8-4971-91d1-b93de4ed2f40','dnsscaling');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('da59ddde-3b7f-4683-9c1b-5918c2002dcd','null','c3c668a3-0280-41c3-87fd-2516c512c1ad','1a44584d-4308-4f57-b34d-95bbe7f542c0','1','Base',NULL,NULL,'13432bde-f701-4c8d-9962-d4325c60d466','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('e0d1984c-42e9-4361-9821-23a329c34a4f','null','079ad518-4a50-4608-a247-213dc5a36826','68a59a48-f59f-4ec0-9217-d3700890f6ed','1','Base',NULL,NULL,'23219762-d5d8-48aa-b8e7-674878f16d98','base_vpkg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('e5df393e-e86f-4a04-91ae-04de9a20adf0','null','ac1a7fb3-0d0f-4ab5-9439-ea2e10847aa7','f7007619-04d0-4046-a480-57bca7aa46b8','1','Base',NULL,NULL,'86c1f2b6-a2b5-44cc-97d3-ae29366ac2b1','base_vfw');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('f265592e-6ebb-42de-a487-fdf0b4d677f2','null','db536c34-bcdd-42a3-a91c-f162f77807cb','e3a7aeed-cabe-4129-88da-0acb7640f002','1','Base',NULL,NULL,'9f5855de-b9fb-4b14-8bce-1868da9d72aa','base_vcpe_vbrgemu');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('f2ce9c3e-e3bc-4bce-ad75-e3f5ac17d7cb','null','a33130c6-3279-47d4-b4df-547eb60365ad','8479a9c7-4e51-4994-ada0-a6bb171cd0b0','1','Base',NULL,NULL,'3df5fb34-6c7c-4f8e-b5d2-e870c39e2a2a','base_vvg');
+INSERT INTO `VF_MODULE_MODEL` VALUES ('fbb8c440-51a7-4995-8d30-67ceaf683cf5','null','d2648d62-60a5-45d7-945d-0edc3c5a4004','39571511-21c6-4ff8-b76b-0861adff94fd','1','Expansion',NULL,NULL,'bcfd6cff-219b-4dea-8c9b-e25541e72827','dnsscaling');
+/*!40000 ALTER TABLE `VF_MODULE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Dumping data for table `VF_MODULE_TO_VFC_MAPPING`
+--
+
+LOCK TABLES `VF_MODULE_TO_VFC_MAPPING` WRITE;
+/*!40000 ALTER TABLE `VF_MODULE_TO_VFC_MAPPING` DISABLE KEYS */;
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1591,'2581c6d0-40a7-48dd-9fb7-30e9b9496b3e','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1592,'88e78e02-988a-462d-85c2-7628bf471b9f','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1593,'20983c6f-bdbe-43d2-9897-e48f5596ef17','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1594,'6b71d46b-1d13-47bd-a97d-b283777c464f','023fcd99-b707-4084-81f2-5bc4c58a62fc','vgw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1595,'39a78b1b-d1cf-44af-9994-318dd7a672ce','bc5ce901-76a8-4516-b65d-26cec4ba463c','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1596,'937ecbf2-e792-4216-b475-095d03a71c54','a9139e95-84ea-42d7-a4bb-a72b29a40970','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1597,'937ecbf2-e792-4216-b475-095d03a71c54','5130f20f-66c2-4ae5-8f93-bdb4ef857585','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1598,'86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc','fc6d305f-4b2a-46c8-b2a6-e22ffa0c84e5','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1599,'86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc','c16a5cd1-72ed-44b9-b4b0-fd0b8a8a3710','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1600,'86bd5fe2-6b79-42d9-84c9-0633e4f7ebcc','1d63438f-8683-481d-af5c-8a440ff6c86e','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1601,'d825dcf1-5dd8-45fe-9e4c-c2ce708c9b0e','5a81616f-3b85-47f9-b3a6-43ddc9d705d1','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1602,'e5df393e-e86f-4a04-91ae-04de9a20adf0','28ff8b3e-486a-4f15-bcd8-5bab711d5c33','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1603,'e5df393e-e86f-4a04-91ae-04de9a20adf0','c8033d10-afbb-4310-b90b-abd4140c191f','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1604,'53430646-a6f7-4d80-9d02-97fb3b233521','e7f9b901-b846-49eb-942b-9bf778a7d2c8','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1605,'9f4c7aa4-4454-41ff-95e0-2bf5d9c74558','75fabac4-56d8-4976-899f-0119543fd2b8','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1606,'45b9d6ff-1320-4b9f-8efa-21030effa9b1','9166ff2f-23cb-4028-97e5-dc591fcfef3c','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1607,'45b9d6ff-1320-4b9f-8efa-21030effa9b1','1782c476-7f94-4c01-9921-02459a6ce3cb','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1608,'45b9d6ff-1320-4b9f-8efa-21030effa9b1','0b221466-3962-42cd-b241-e08093869999','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1609,'5a880f5c-de89-4abf-917d-24ae4e850934','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1610,'affab6eb-90ce-40d0-bf4c-e81abda2a119','023fcd99-b707-4084-81f2-5bc4c58a62fc','vgw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1611,'8a15a15d-cbd2-4946-87b5-69476ab2596b','bc5ce901-76a8-4516-b65d-26cec4ba463c','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1612,'5109a63a-2c4f-47fe-b9e3-a90e8fac6a10','a9139e95-84ea-42d7-a4bb-a72b29a40970','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1613,'5109a63a-2c4f-47fe-b9e3-a90e8fac6a10','5130f20f-66c2-4ae5-8f93-bdb4ef857585','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1614,'888a977c-13c9-4942-8e53-bd51888625f4','67a8fd2d-c4fc-4982-8680-7cceaad13cf6','bono',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1615,'888a977c-13c9-4942-8e53-bd51888625f4','7d3af2a5-4d58-4f65-80c5-e9f56d68e374','homestead',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1616,'888a977c-13c9-4942-8e53-bd51888625f4','d921d8e0-72ef-4e82-9a5c-f8c524d9db72','sprout',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1617,'888a977c-13c9-4942-8e53-bd51888625f4','d160bb89-8331-4f8f-b323-aadeaf6ad719','dns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1618,'888a977c-13c9-4942-8e53-bd51888625f4','74a491fb-98e5-4988-aab4-173d018a29c8','ralf',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1619,'888a977c-13c9-4942-8e53-bd51888625f4','03ac3cb1-60fc-4ae1-bd5a-68c478bf6a8e','ellis',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1620,'888a977c-13c9-4942-8e53-bd51888625f4','76800448-f19b-4834-a0ce-65df373e6433','homer',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1621,'1d4653f7-9578-440f-a325-d39495d2dead','1fc2d7f5-036f-4a77-b840-83277e76f13c','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1622,'1d4653f7-9578-440f-a325-d39495d2dead','4795998e-8cd5-4b8f-ada9-fe9488392da8','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1623,'1d4653f7-9578-440f-a325-d39495d2dead','bb69f2d4-be8a-400f-9d6d-6e9500664dbc','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1624,'5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6','db207678-8018-4829-bec6-4143743b1a29','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1625,'5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6','cf60de5e-1332-43fc-8640-a94b5013dea7','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1626,'5570a80f-7f7c-48b1-9afc-e1c6bdda3bf6','54e98abe-743a-400d-809c-095644d92dd9','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1627,'fbb8c440-51a7-4995-8d30-67ceaf683cf5','bfbbab1c-b257-4ea9-81e0-416755b28df7','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1628,'8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72','aa999b75-51fd-451a-8556-c59e13cb3cd6','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1629,'8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72','f8581354-8c0c-4199-9fc3-dcdf0ecef3d9','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1630,'8cc7fac4-2c3f-4fdb-9eae-33a15eec9c72','66bc8dbf-26c6-4b12-9b87-c29b14cb1bac','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1631,'7733191f-c58e-4934-b30d-98c0db7e6108','64508b50-a134-41d4-a957-ba40718dc250','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1632,'761b31e4-3c0f-4117-bac6-b2581ac9a989','ff8f1549-c4cf-44b5-b8a3-884e1a586319','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1633,'761b31e4-3c0f-4117-bac6-b2581ac9a989','12cee19b-3c7e-4a61-9c3e-123702c6a2f5','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1634,'761b31e4-3c0f-4117-bac6-b2581ac9a989','73c626ff-5b74-4f4f-a13a-a0998fa197e5','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1635,'c25a3478-97f5-4c1f-bf34-8989d06befba','6163e3b4-ad26-4b16-a3cd-d0f3a3c66214','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1636,'c25a3478-97f5-4c1f-bf34-8989d06befba','6be7deec-f93d-48ab-a6c4-ea844da22d0f','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1637,'c25a3478-97f5-4c1f-bf34-8989d06befba','708364f6-83e5-40dd-a3cd-1903cda658f5','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1638,'da59ddde-3b7f-4683-9c1b-5918c2002dcd','31b53e81-28c3-482e-842c-0ebd21053b59','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1639,'da59ddde-3b7f-4683-9c1b-5918c2002dcd','b4100ed9-507a-4be4-a456-0e49482a58ac','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1640,'da59ddde-3b7f-4683-9c1b-5918c2002dcd','919ae940-5485-4270-9bb2-980213db6b95','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1641,'b96b87eb-4030-4ba9-805d-5a92db52759f','2b4c6ecd-2423-41ec-a8ff-ee4ecc05670d','vweb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1642,'b96b87eb-4030-4ba9-805d-5a92db52759f','f219a42a-d5a6-4354-b072-259932ed8b48','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1643,'b96b87eb-4030-4ba9-805d-5a92db52759f','5418661d-07e1-403a-8caf-03f5442f2308','vaaa',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1644,'b96b87eb-4030-4ba9-805d-5a92db52759f','652259eb-1b57-4f6e-8d22-6420a8261938','vdhcp',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1645,'0db11c68-0af2-4f87-aa91-9303d15d4143','9f07ef60-6dea-4e20-b4d4-c78b1b8bda32','vbng',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1646,'f265592e-6ebb-42de-a487-fdf0b4d677f2','493be6dd-c307-4d84-bee4-2ed50e044f54','vbrgemu',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1647,'a3c74af3-4441-4e1f-b23b-839227c2b56d','4440906c-a7e7-478b-a637-812999219fd1','vgw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1648,'bb496648-65a1-4e47-bf92-99f11de47bbe','bf9a909c-17ef-4a69-ac1f-56d05c53c528','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1649,'b4f14dde-d03d-49cb-b878-e79ad325bf84','2b44c9db-28e1-45aa-b297-a4511d5317fe','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1650,'b4f14dde-d03d-49cb-b878-e79ad325bf84','fb09a01b-249b-4038-bcf9-db20b0f206c9','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1651,'b4f14dde-d03d-49cb-b878-e79ad325bf84','4dfadd90-d618-4c8d-b47d-60efebf6d01d','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1652,'2f2dc87c-bc90-4596-8456-6a7d60e0850a','547126cc-f04f-458b-906a-ecb8463a058a','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1653,'42d4fdda-4d99-4887-ba9c-46562c18e3bb','195f76ea-8256-4a07-b525-b40267c37b21','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1654,'42d4fdda-4d99-4887-ba9c-46562c18e3bb','6e3b40fc-e28b-4158-ae96-fcdb901cb7f4','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1655,'42d4fdda-4d99-4887-ba9c-46562c18e3bb','f43ab7a9-ab7a-4720-9f98-5bb409f5d6e7','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1656,'9d284b79-ff6d-45cc-81b2-1db821714e84','b8dd3ed9-cc4d-484a-af2c-0e18f4568fb3','vbrgemu',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1657,'baa40973-450b-413f-86f7-3ac97383d6aa','2c4cb9db-c093-4c7c-ad3d-fae4ffa17486','bono',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1658,'baa40973-450b-413f-86f7-3ac97383d6aa','48e19b0c-73d4-43c1-8172-a603cc6a0a27','homestead',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1659,'baa40973-450b-413f-86f7-3ac97383d6aa','32e76c6c-5676-4ce2-96df-e8b8adde7d42','sprout',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1660,'baa40973-450b-413f-86f7-3ac97383d6aa','702036e1-6270-4e3d-b2a2-8d6218dd325d','dns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1661,'baa40973-450b-413f-86f7-3ac97383d6aa','48687b06-df68-4180-a0b8-bafda155ea4c','ralf',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1662,'baa40973-450b-413f-86f7-3ac97383d6aa','54e94ecb-84f1-45d1-88a3-235e6a229ad3','ellis',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1663,'baa40973-450b-413f-86f7-3ac97383d6aa','67194296-d115-467b-99c2-bfd50d9e175f','homer',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1664,'74aab1af-ad08-43fb-86d1-4810c0cf50ac','25011296-744f-4cf6-80ed-476758829e90','vweb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1665,'74aab1af-ad08-43fb-86d1-4810c0cf50ac','805be1fb-285d-4487-a9a2-223e995df5a4','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1666,'74aab1af-ad08-43fb-86d1-4810c0cf50ac','2435ffd0-cf02-4c82-a6df-655986b2518b','vaaa',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1667,'74aab1af-ad08-43fb-86d1-4810c0cf50ac','d9ee5ccc-acc3-4658-9068-e2d60942040d','vdhcp',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1668,'59ffe5ba-cfaf-4e83-a2f3-159522dcebac','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1669,'931e671e-7725-4147-b377-fc92c5b00cbd','5f6f8dd5-f078-4a8a-a596-8b18c81d4370','bono',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1670,'931e671e-7725-4147-b377-fc92c5b00cbd','da32c96d-2f04-4548-8670-39ff222a3af4','homestead',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1671,'931e671e-7725-4147-b377-fc92c5b00cbd','dbdcd5f1-014c-462c-a950-ba17813f9485','sprout',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1672,'931e671e-7725-4147-b377-fc92c5b00cbd','ada34b73-f715-41eb-a6ad-c9d868e86728','dns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1673,'931e671e-7725-4147-b377-fc92c5b00cbd','5eb99594-a29e-4943-8820-fd63de08170d','ralf',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1674,'931e671e-7725-4147-b377-fc92c5b00cbd','a99c320c-64d0-44ac-8edb-16d781dde678','ellis',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1675,'931e671e-7725-4147-b377-fc92c5b00cbd','e5fd954f-adcb-4675-b763-cc216bbe68b1','homer',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1676,'cbbc2b4e-59e3-4812-98a7-a3b449f0782e','98f311f9-39e0-4b96-be75-548fe6953247','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1677,'cbbc2b4e-59e3-4812-98a7-a3b449f0782e','8be6b1e3-cfbb-4f62-8820-067bc784585d','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1678,'69d963bf-c0ab-4e75-97b5-f46e1d212f14','c231d966-7c33-475b-b1da-6d8183a14f36','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1679,'31d9a71a-2e44-4581-b9a2-8e000dc6ae6a','377825eb-e83d-49b6-81ce-c99a0d30064e','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1680,'31d9a71a-2e44-4581-b9a2-8e000dc6ae6a','25d3be48-fc4b-453f-96de-97e07e6c18f5','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1681,'31d9a71a-2e44-4581-b9a2-8e000dc6ae6a','37e7c1c1-d886-47e1-90a8-f907fcb312c3','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1682,'b7ac8294-0181-45f2-b59e-0a71e11fe5cd','bffb18fa-e09f-4d2e-9a56-6f032e03ac19','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1683,'b7ac8294-0181-45f2-b59e-0a71e11fe5cd','267d9b14-e8e3-4fcc-9cbd-da3d1b6ae843','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1684,'9bbd841f-aa76-4fd6-a3f6-83ba7465c34d','08559203-1f1e-4424-ac5f-6ec24bb8bf6d','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1685,'3be9227d-ac6f-471a-98fa-4943f42fe91b','c5a89a5b-e5bb-47eb-a382-b46cfe8adf5e','vbng',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1686,'705e9c3c-e855-4842-a31a-e39f01560985','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1687,'571c5caf-bea1-4420-8d61-a831b4a22fdc','21352862-eb18-4867-8ea2-d524f2f98647','bono',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1688,'571c5caf-bea1-4420-8d61-a831b4a22fdc','f88cf470-4821-4a8e-a088-9249eaf046b0','homestead',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1689,'571c5caf-bea1-4420-8d61-a831b4a22fdc','20a556fe-312a-41ab-9a03-374063d23aea','sprout',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1690,'571c5caf-bea1-4420-8d61-a831b4a22fdc','17d5c405-cfcb-4abc-96e4-a0e6fce100cb','dns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1691,'571c5caf-bea1-4420-8d61-a831b4a22fdc','cb751f30-9cd7-4c7f-999e-73c2691da482','ralf',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1692,'571c5caf-bea1-4420-8d61-a831b4a22fdc','70bf02d6-28ae-4bbb-9c37-0057017a15c9','ellis',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1693,'571c5caf-bea1-4420-8d61-a831b4a22fdc','fcb6d888-d5ef-4955-9474-ef4deae1201e','homer',2);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1694,'bb71bfc9-edcf-450b-b28b-0d5b57f1d7c9','30969396-fa5a-4faf-9163-db6484e54e59','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1695,'3f8fc159-6e6a-450c-a99a-eed70e8df403','98608c67-9b1a-4160-849c-060171c0ae16','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1696,'3f8fc159-6e6a-450c-a99a-eed70e8df403','3b08d0cb-3f1c-4178-8dab-bf7b85782f00','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1697,'4ba5186b-e0ab-415d-8757-172a9f904ee7','416b75a7-32ea-458c-95fe-c14854d618ca','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1698,'4ba5186b-e0ab-415d-8757-172a9f904ee7','13ec94e1-b04c-4fd1-99e6-c982020e453f','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1699,'4ba5186b-e0ab-415d-8757-172a9f904ee7','1203cf96-76de-4325-bb58-0053f1c6ddb1','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1700,'2ccfec2f-8e46-4d2d-9213-93a5b1395fc0','8b84aeae-51cf-48c2-8bb1-50c7aa444a16','vgmux',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1701,'45b87432-690e-4115-8f2a-8ef57597be79','e472f39e-2371-4dce-8b5e-883094836201','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1702,'45b87432-690e-4115-8f2a-8ef57597be79','22245ea3-605f-4a9f-94b9-cf39ef7f3c0e','vlb',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1703,'45b87432-690e-4115-8f2a-8ef57597be79','61ac4ca1-9516-43c8-ab0e-d869e3d5d011','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1704,'341fcc33-de58-4471-9bb5-13a0c643dbce','cf16c622-b9e4-4712-924b-8008f47d84ef','vdns',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1705,'1903fdc0-e839-4f3c-8b43-bac5503fc056','61a24df6-cde4-4d83-ae28-ed1f60e85381','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1706,'1903fdc0-e839-4f3c-8b43-bac5503fc056','22c63259-70c3-4d19-8f75-47ebef517be4','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1707,'1903fdc0-e839-4f3c-8b43-bac5503fc056','bfd5e865-92a4-45a1-888d-ba7c2497ad50','vpg',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1708,'0e6a57c1-abd7-436b-963f-1ad051cb3c40','f9484812-fe80-4f5a-8428-538ddbca2586','vsn',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1709,'0e6a57c1-abd7-436b-963f-1ad051cb3c40','d057afa2-edab-4be3-93cb-89854e40c298','vfw',1);
+INSERT INTO `VF_MODULE_TO_VFC_MAPPING` VALUES (1710,'e0d1984c-42e9-4361-9821-23a329c34a4f','63227786-48c6-4e70-a229-64a4dd79d8c4','vpg',1);
+/*!40000 ALTER TABLE `VF_MODULE_TO_VFC_MAPPING` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2020-11-02 21:47:47
diff --git a/ms/gra/gra-docker/src/main/resources/dblib.properties b/ms/gra/gra-docker/src/main/resources/dblib.properties
new file mode 100644
index 0000000..5c14341
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=dbhost
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://${MYSQL_DB_HOST}:3306/${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user=${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password=${MYSQL_PASSWORD}
+org.onap.ccsdk.sli.jdbc.connection.name=dbhost
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/ms/gra/gra-docker/src/main/resources/generic-resource-api-dg.properties b/ms/gra/gra-docker/src/main/resources/generic-resource-api-dg.properties
new file mode 100644
index 0000000..3751142
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/generic-resource-api-dg.properties
@@ -0,0 +1,77 @@
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+controller.url=http://localhost:8080
+controller.user=${ODL_USER}
+controller.pwd=${ODL_PASSWORD}
+honeycomb.url=http://{honeycomb-instance-ip}:8183
+honeycomb.user=${HONEYCOMB_USER}
+honeycomb.pwd=${HONEYCOMB_PASSWORD}
+restapi.trustStoreFileName=/opt/onap/sdnc/config/truststoreONAPall.jks
+restapi.trustStorePassword=${TRUSTSTORE_PASSWORD}
+restapi.keyStoreFileName=/opt/onap/sdnc/config/org.onap.sdnc.p12
+restapi.keyStorePassword=${KEYSTORE_PASSWORD}
+restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=ccsdkapps
+naming.gen-name.pwd=ccsdkapps
+so.user=${SO_USER}
+so.pwd=${SO_PASSWORD}
+cds.url=http://cds-blueprints-processor-http:8080
+cds.user=${CDS_USER}
+cds.pwd=${CDS_PASSWORD}
+
+# Templates
+restapi.sz.templatefile=security-zone-allotted-resource.json
+restapi.cr.templatefile=contrail-route-allotted-resource.json
+restapi.brg.templatefile=brg-allotted-resource.json
+restapi.vpp.vxlan-tunnel.templatefile=vcpe-vxlan-tunnel.json
+restapi.vpp.bridge-domain.templatefile=vcpe-vpp-bridge-domain.json
+restapi.vpp.xconnect.templatefile=vcpe-l2-interface.json
+restapi.tx.templatefile=tunnelxconn-allotted-resource.json
+restapi.parentsvc.templatefile=parent-provided-allotted-resource.json
+restapi.network-ar.templatefile=network-provided-allotted-resources.json
+restapi.vnf-ar.templatefile=vnf-provided-allotted-resources.json
+restapi.services.templatefile=vcpe-services-service.json
+restapi.services.vnf.vfmodule.templatefile=vfmodule-vim-parameters.vgw.json
+restapi.sotn-attachment.templatefile=sotn-attachment-allotted-resource.json
+restapi.sdwan-attachment.templatefile=sdwan-attachment-allotted-resource.json
+restapi.oof-getpath.templatefile=oof-getpath.json
+restapi.naming.gen-name.templatefile=naming-ms-post-gen-name.json
+restapi.ss.pnf.templatefile=self-serve-pnf-assignments.json
+restapi.ss.vnf.templatefile=self-serve-vnf-assignments.json
+restapi.ss.vfmodule.templatefile=self-serve-vfmodule-assignments.json
+restapi.ss.mS.vlan.tag.assign.templatefile=self-serve-mS-vlan-tag-assignments.json
+restapi.ss.mS.vlan.tag.unassign.templatefile=self-serve-mS-vlan-tag-unassignments.json
+restapi.ss.mS.mac.address.assign.templatefile=self-serve-mS-mac-address-assign.json
+restapi.ss.mS.mac.address.unassign.templatefile=self-serve-mS-mac-address-unassign.json
+
+# Default cloud owner
+cloud-region.cloud-owner=CloudOwner
+
+# URLs
+restapi.cr-allottedresource=/restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/
+restapi.sz-allottedresource=/restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/{allotted-resource-id}/
+restapi.brg-allottedresource=/restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/{allotted-resource-id}/
+restapi.vpp-honeycomb=/restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}/
+restapi.tx-allottedresource=/restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/{allotted-resource-id}/
+restapi.vnf-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.network-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.pm-configuration=/restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+restapi.network=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/
+restapi.vnf=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/
+restapi.vnf-api.service-information=/restconf/config/VNF-API:vnfs/vnf-list/{vnf-id}/service-data/
+restapi.parent-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource/{allotted-resource-id}/
+restapi.network-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/network/{network-id}/network-data/network-provided-allotted-resources/
+restapi.services=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/
+restapi.service.vnf.vfmodule-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.connection-attachment-allottedresource=/restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/{allotted-resource-id}/
+restapi.naming.gen-name.service=/web/service/v1/genNetworkElementName
+restapi.ss-pnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/pnfs/pnf/{pnf-id}/
+restapi.ss-vnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+restapi.ss-vfmodule-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.ss-mS-vlan-tag-assign=/vlantagapi/v1/{action}
+restapi.ss-mS-mac-address-assign=/api/macaddress/v1/service/assign/
+restapi.ss-mS-mac-address-unassign=/api/macaddress/v1/service/unassign/
+restapi.preload-network=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/{network-name}/network/preload-data/preload-network-topology-information/
+restapi.preloadinformation=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/
+restapi.vf-module=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.vnf-assign=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
diff --git a/ms/gra/gra-docker/src/main/resources/log4j2.properties b/ms/gra/gra-docker/src/main/resources/log4j2.properties
new file mode 100644
index 0000000..9bc78a3
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/log4j2.properties
@@ -0,0 +1,163 @@
+ #-
+ # ============LICENSE_START=======================================================
+ # ONAP - CCSDK
+ # ================================================================================
+ # Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ # ================================================================================
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ # ============LICENSE_END=========================================================
+ #
+
+property.logDir = ${env:LOG_PATH:-./target}
+property.logLevel = ${env:LOG_LEVEL:-INFO}
+
+property.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{currentGraph} - %X{nodeId} | %m%n
+
+#default mdc values
+property.ServiceName = INTERNAL
+property.ErrorCode = 900
+property.ErrorDesc = UnknownError
+
+rootLogger.level = ${logLevel}
+rootLogger.appenderRef.AppFile.ref = AppFile
+rootLogger.appenderRef.Console.ref = Console
+rootLogger.appenderRef.DebugFile.ref = DebugFile
+rootLogger.appenderRef.ErrorFile.ref = ErrorFile
+rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter
+rootLogger.appenderRef.Console.filter.threshold.level = ${logLevel}
+
+appender.console.type = Console
+appender.console.name = Console
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = ${pattern}
+
+appender.app.type = RollingRandomAccessFile
+appender.app.name = AppFile
+appender.app.fileName = ${logDir}/app.log
+appender.app.filePattern = ${logDir}/app.log.%i
+appender.app.immediateFlush = true
+appender.app.append = true
+appender.app.layout.type = PatternLayout
+appender.app.layout.pattern = ${pattern}
+appender.app.policies.type = Policies
+appender.app.policies.size.type = SizeBasedTriggeringPolicy
+appender.app.policies.size.size = 10MB
+appender.app.strategy.type = DefaultRolloverStrategy
+appender.app.strategy.max = 100
+appender.app.strategy.fileIndex = min
+
+appender.debug.type = RollingRandomAccessFile
+appender.debug.name = DebugFile
+appender.debug.fileName = ${logDir}/debug.log
+appender.debug.filePattern = ${logDir}/debug.log.%i
+appender.debug.immediateFlush = true
+appender.debug.append = true
+appender.debug.layout.type = PatternLayout
+appender.debug.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|%-5.5p|%-32.32c{1}|%X{currentGraph} - %X{nodeId}|%m%n
+appender.debug.policies.type = Policies
+appender.debug.policies.size.type = SizeBasedTriggeringPolicy
+appender.debug.policies.size.size = 10MB
+appender.debug.strategy.type = DefaultRolloverStrategy
+appender.debug.strategy.max = 200
+appender.debug.strategy.fileIndex = min
+appender.error.filter.threshold.type = ThresholdFilter
+appender.error.filter.threshold.level = DEBUG
+
+appender.error.type = RollingRandomAccessFile
+appender.error.name = ErrorFile
+appender.error.fileName = ${logDir}/error.log
+appender.error.filePattern = ${logDir}/error.log.%i
+appender.error.immediateFlush = true
+appender.error.append = true
+appender.error.layout.type = PatternLayout
+appender.error.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|$${ctx:ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%p|$${ctx:ErrorCode}|$${ctx:ErrorDesc}|%m%n
+
+appender.error.policies.type = Policies
+appender.error.policies.size.type = SizeBasedTriggeringPolicy
+appender.error.policies.size.size = 10MB
+appender.error.strategy.type = DefaultRolloverStrategy
+appender.error.strategy.max = 100
+appender.error.strategy.fileIndex = min
+appender.error.filter.threshold.type = ThresholdFilter
+appender.error.filter.threshold.level = WARN
+
+appender.metric.type = RollingRandomAccessFile
+appender.metric.name = MetricFile
+appender.metric.fileName = ${logDir}/metric.log
+appender.metric.filePattern = ${logDir}/metric.log.%i
+appender.metric.immediateFlush = true
+appender.metric.append = true
+appender.metric.layout.type = PatternLayout
+appender.metric.layout.pattern=%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|%p|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|||%X{TargetElement}|%markerSimpleName|%X|%X{currentGraph} - %X{nodeId}||%m%n
+appender.metric.policies.type = Policies
+appender.metric.policies.size.type = SizeBasedTriggeringPolicy
+appender.metric.policies.size.size = 10MB
+appender.metric.strategy.type = DefaultRolloverStrategy
+appender.metric.strategy.max = 100
+appender.metric.strategy.fileIndex = min
+
+appender.audit.type = RollingRandomAccessFile
+appender.audit.name = AuditFile
+appender.audit.fileName = ${logDir}/audit.log
+appender.audit.filePattern = ${logDir}/audit.log.%i
+appender.audit.immediateFlush = true
+appender.audit.append = true
+appender.audit.layout.type = PatternLayout
+appender.audit.layout.pattern=%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|INFO|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|%X{AUDIT-Unused}|%X{AUDIT-ProcessKey}|%markerSimpleName|%X|||%m%n
+appender.audit.policies.type = Policies
+appender.audit.policies.size.type = SizeBasedTriggeringPolicy
+appender.audit.policies.size.size = 10MB
+appender.audit.strategy.type = DefaultRolloverStrategy
+appender.audit.strategy.max = 200
+appender.audit.strategy.fileIndex = min
+
+appender.rr.name = RequestResponseFile
+appender.rr.type = RollingRandomAccessFile
+appender.rr.fileName = ${logDir}/request-response.log
+appender.rr.filePattern = ${logDir}/request-response.log.%i
+appender.rr.immediateFlush = true
+appender.rr.append = true
+appender.rr.layout.type = PatternLayout
+appender.rr.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%X{PartnerName}|%m%n
+appender.rr.policies.type = Policies
+appender.rr.policies.size.type = SizeBasedTriggeringPolicy
+appender.rr.policies.size.size = 10MB
+appender.rr.strategy.type = DefaultRolloverStrategy
+appender.rr.strategy.max = 100
+appender.rr.strategy.fileIndex = min
+
+logger.metric.name = org.onap.ccsdk.sli.core.filters.metric
+logger.metric.level = INFO
+logger.metric.additivity = false
+logger.metric.appenderRef.MetricFile.ref = MetricFile
+
+logger.metric2.name = org.onap.logging.filter.base.AbstractMetricLogFilter
+logger.metric2.level = INFO
+logger.metric2.additivity = false
+logger.metric2.appenderRef.MetricFile.ref = MetricFile
+
+logger.audit.name = org.onap.logging.filter.base.AbstractAuditLogFilter
+logger.audit.level = INFO
+logger.audit.additivity = false
+logger.audit.appenderRef.AuditFile.ref = AuditFile
+
+logger.rr.name = org.onap.logging.filter.base.PayloadLoggingServletFilter
+logger.rr.level = INFO
+logger.rr.additivity = false
+logger.rr.appenderRef.RequestResponseFile.ref = RequestResponseFile
+
+logger.ccsdk.name = org.onap.ccsdk
+logger.ccsdk.level = DEBUG
+
+logger.onaplogging.name = org.onap.logging
+logger.onaplogging.level = DEBUG \ No newline at end of file
diff --git a/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.cred.props b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.cred.props
new file mode 100644
index 0000000..e702d61
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.cred.props
@@ -0,0 +1,17 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2020-04-07T19:49:10.483+0000
+# @copyright 2019, AT&T
+############################################################
+Challenge=enc:gsZC3qJk3ylRSusYHUQqBiflWlKXn4rnh-fULJmfIU3RAphd_AHmZ6c6kl42qcJE
+cadi_alias=sdnc@sdnc.onap.org
+cadi_key_password=enc:HLzeIrsDqKLcY1fNlbRTXVch5RrfUvAXKW_sJ9cv9Rs49q8GsiPsZDqboJXAT-lF
+cadi_keyfile=/opt/onap/ccsdk/config/org.onap.sdnc.keyfile
+cadi_keystore=/opt/onap/ccsdk/config/org.onap.sdnc.p12
+cadi_keystore_password=enc:aH6rL1KPu8ZzMtQ16FiMvGE-janpERZBU3tnVuGcXBaK2T9_3F28UuBH-GJ2BRjM
+cadi_keystore_password_jks=enc:ydq6zoDeWGdBbFXkF_bLHJ4HrhMn-cSZ11m-NUNCm116gYhsjF1HKfkqs6Wrn6Zl
+cadi_keystore_password_p12=enc:aH6rL1KPu8ZzMtQ16FiMvGE-janpERZBU3tnVuGcXBaK2T9_3F28UuBH-GJ2BRjM
+cadi_truststore=/opt/onap/ccsdk/config/org.onap.sdnc.trust.jks
+cadi_truststore_password=enc:Lhl6jEPxCYutrEpioq0woR1ypC4K1i9yPWKGRG7s9eARe5egSzsEBCooiKB7om5B
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
diff --git a/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.keyfile b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.keyfile
new file mode 100644
index 0000000..eb8fe84
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.keyfile
@@ -0,0 +1,27 @@
+Xgwa72kLHXU9NRElW4t4taIjudICPqMwywqYe1HVQ7Ve9ccqRRksY9gjK4hnDwU9mn0XdYEMlIU2
+OMWL4ck6PaxjHlaVR1qVBIFRcrkXs_ttagrjijBxXvJvJVI60JMCBGmIgNkI78wnEZOi6PLG0x7S
+agVQM34a5HHBEMePfqtgO-J8rBXMaeIrpHOTTEEtZXU-ZvbI8VZWhCD0e9fnn3YlFQaPeni0zqOE
+NY_lV6ZxlAtD5RCKdQWuU4O_cmmv3_LpIm41NT7Dn4sG6QzHjw2WM5essLTCEUvXJntlj3OmZTkr
+p4lPBVAWg2-qc_ZZyY2VEtoxVmKIMP15ctq50RVgPtQMmd-hdj5I51yW5MQYSM4jTgxtspiGUDJq
+ftsxb76K5w76X-ADxpZt85bEe068dwEoqZd5Qe33jIcZD2iNfGUb_ee1vSVlTQO1JlGqHAelUNks
+ellL5WE7X4g4TCG8KW38_GUOyohyQ5pv-Mozq-Sxz2bK8JCBs6hFBhKbnE07x3yY7SOBVnDbdCec
+cXZ86TNcdOsxBdqfNXD4PK_qMiXZTh3OMRsEG8IhhFyD3sbpFEyVhU_96o47iOgvAeAAiIKJ2Uww
+QUTHfNxp7LWUTw7aHhmK4wZLpFS-Lz1seat65uNp9DRuQ9jin0Hpi0XW1UwY4WzYvWeiQh2swwM8
+XCz9jawem18wTJ-pZUvKtkAQ5ImwSBuIFaKoUkbiowrNAGFOFGaFhtapV1uvehPlpmzbvn9HfPO8
+1xAp3Jusu3G4tGrrsJdvkenUB-3BbcJHMPE-Ku1jEWGoOXnrn0WURiHXhYMy8gWbko56ykftIJRP
+Q4bq4TCwxNE8nzhNXSh0_dqYK0JlAkoOtvkBogM42Ljly5ODCIDb7NZFtTyK3FpYVXLC-um9wYxI
+2t7V5N-nPinFf9hWzgTCvnjfAn0X2kAWTBQVwO-Sxepy40ZbTkEkQzsKyFKa3pnB_BmkE6dvQMqj
+QZlg5dpu3eacVSMPaZCdgISYN-pYrWNYtPKKlxYQgsK0Z6hJuS-87snx-WYRN4SRhWBY_b-G1EsZ
+SeL9L8daNXYzmOHnprenlz5ZqitnM_KoL9th_rG4krV8-Nlw1Rh7K_YcXuFsKGTlzYbuoHyM1CBn
+oWPIf32W5DN4BRcSTi74wV_tScQL4sueKYo3epZMrTA0djFyq94-wyA0bOzySQxcrGIvvLMITJ51
+U6c845RXFAK8_Z2Nt8-Mdv6Ox_KDmZtX4P9bNJ21nM9D9Htgr2H5GIBXFBt_ZDUzwZ5WLrs-l4Li
+26dHL5OudyekOaI4BVxg_09hRD9xNPpU5kiVcz5_QAi7QsnYqf53oB55H_NEhq1h3KOmqzJw9q7M
+kYQgO-q5Y5dIvduBe9zruFIQIt-WhhRJM8v4i50QNaOCnbZfmDalStlSzFX9xEXKESU8q-7VwxRT
+Aro7Teu_fS3PXvsgr6hHSf-SK2zbrizPG-5AaPn3SkBoU-3Ofr-HeJfihx0NnvcCnjDYvQw9C5d6
+845zvcrJrphNkXVPNO23lRMTEuStQiCbbdZcaNcPFXMpjlS4x8tonxwNqBBa4CwO7p5omkayEVLi
+i_JbOg4JSor1C_cSnA9TIfEcwVe9znPeEE01uFp_IBP5rJHuiInca-f7NbZFDkhO5LJPIoyvmTHZ
+76LBniKhcocSW8CR7Gc9Q8wxXJFEivQb4JvA1gd8VZ_A31yqnSTnApxGcAu1DEHNnCd9AVYIq9jd
+weFikVaf5n3GF-DBYxeesu1ChEmTOLN0tZw43uyAvqWrqLU_m5DspMAv-MNA0ddgcMOw8yph0035
+5HgcosFyhnx_FByGJtbr0bahZ1dJnswN_lXlRUYB2-WYnWUot-ONKiw3cD7kU095p3zPOHkd6KlI
+cyRcCDVN9KQkE-S9VDWBWD8V2A6wudLLICsRug_Ypa6doZKGcF335ZT9U54R9DNqUHCf3IEu0xl3
+YlQrkCwrFZB8WVMkfJQJKFfqYyjeH-t-afS3JR-PkH-qBRDFFYZ3m1anYuZI20-IiP8BZKCI \ No newline at end of file
diff --git a/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.p12 b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.p12
new file mode 100644
index 0000000..23a701a
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.p12
Binary files differ
diff --git a/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.props b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.props
new file mode 100644
index 0000000..adef904
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.props
@@ -0,0 +1,14 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2020-04-07T19:49:08.370+0000
+# @copyright 2019, AT&T
+############################################################
+aaf_id=sdnc@sdnc.onap.org
+aaf_locate_url=https://aaf-onap-test.osaaf.org:8095
+aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1
+cadi_latitude=38.432899
+cadi_longitude=-90.43248
+cadi_prop_files=/opt/onap/ccsdk/config/org.onap.sdnc.cred.props
+cm_url=https://AAF_LOCATE_URL/AAF_NS.cm:2.1
+cadi_protocols=TLSv1.1,TLSv1.2
diff --git a/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.trust.jks b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.trust.jks
new file mode 100644
index 0000000..7a69861
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/org.onap.sdnc.trust.jks
Binary files differ
diff --git a/ms/gra/gra-docker/src/main/resources/schema-demo.sql b/ms/gra/gra-docker/src/main/resources/schema-demo.sql
new file mode 100644
index 0000000..ddd3217
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/schema-demo.sql
@@ -0,0 +1,2847 @@
+
+--
+-- Table structure for table `ACCESS_LOG`
+--
+
+CREATE TABLE IF NOT EXISTS `ACCESS_LOG` (
+ `access_log_seq` int(11) NOT NULL AUTO_INCREMENT,
+ `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `method` varchar(12) DEFAULT NULL,
+ `version` varchar(12) DEFAULT NULL,
+ `status` varchar(12) DEFAULT NULL,
+ `url` varchar(256) DEFAULT NULL,
+ `remote_address` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`access_log_seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=1034 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CUSTOMER`
+--
+
+
+CREATE TABLE IF NOT EXISTS `CUSTOMER` (
+ `cust_id` int(11) NOT NULL AUTO_INCREMENT,
+ `customer_name` varchar(256) DEFAULT NULL,
+ `grua` varchar(4) NOT NULL,
+ `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`cust_id`),
+ UNIQUE KEY `IU1_CUSTOMER` (`customer_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=155 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `ADDRESS_PLAN_POLICIES`
+--
+
+CREATE TABLE IF NOT EXISTS `ADDRESS_PLAN_POLICIES` (
+ `key_name` varchar(255) NOT NULL,
+ `key_value_source_type` varchar(255) NOT NULL,
+ `key_value_source` varchar(255) NOT NULL,
+ PRIMARY KEY (`key_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AGNOSTIC_NOTIFICATION_URL`
+--
+
+CREATE TABLE IF NOT EXISTS `AGNOSTIC_NOTIFICATION_URL` (
+ `service_type` varchar(128) NOT NULL,
+ `service_instance_id` varchar(128) NOT NULL,
+ `request_id` varchar(128) NOT NULL,
+ `svc_notification_url` varchar(256) NOT NULL,
+ PRIMARY KEY (`service_type`,`service_instance_id`,`request_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `AGNOSTIC_TO_SVC_SPCFC_API`
+--
+CREATE TABLE IF NOT EXISTS `AGNOSTIC_TO_SVC_SPCFC_API` (
+ `operation` varchar(128) NOT NULL,
+ `service` varchar(128) NOT NULL,
+ `service_specific_api` varchar(128) NOT NULL,
+ `async_process` varchar(15) DEFAULT NULL,
+ PRIMARY KEY (`operation`,`service`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_AVAIL_ZONE_POOL`
+--
+CREATE TABLE IF NOT EXISTS `AIC_AVAIL_ZONE_POOL` (
+ `aic_site_id` varchar(100) NOT NULL,
+ `status` varchar(40) NOT NULL,
+ `availability_zone` varchar(100) NOT NULL,
+ `token` varchar(5) NOT NULL,
+ `vnf_id` varchar(80) DEFAULT NULL,
+ `service_type` varchar(100) NOT NULL,
+ `vnf_type` varchar(20) DEFAULT NULL,
+ `hypervisor` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`aic_site_id`,`availability_zone`,`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_HOSTNAME`
+--
+CREATE TABLE IF NOT EXISTS `AIC_HOSTNAME` (
+ `hostname` varchar(20) NOT NULL,
+ `cust_id` int(11) NOT NULL,
+ `vendor_code` varchar(1) NOT NULL,
+ `virtual_device_type` varchar(2) DEFAULT NULL,
+ `device_sequence` varchar(3) NOT NULL,
+ `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`hostname`),
+ UNIQUE KEY `hostname` (`hostname`),
+ KEY `IN1_AIC_HOSTNAME` (`cust_id`),
+ CONSTRAINT `AC1_HOSTNAME` FOREIGN KEY (`cust_id`) REFERENCES `CUSTOMER` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_NETWORK`
+--
+
+CREATE TABLE IF NOT EXISTS `AIC_NETWORK` (
+ `network_id` varchar(100) NOT NULL,
+ `network_name` varchar(100) DEFAULT NULL,
+ `status` varchar(20) DEFAULT NULL,
+ `tenant_id` varchar(100) DEFAULT NULL,
+ `switch_uuid` varchar(100) DEFAULT NULL,
+ `portgroup_name` varchar(100) DEFAULT NULL,
+ `portgroup_id` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_SITE`
+--
+
+CREATE TABLE IF NOT EXISTS `AIC_SITE` (
+ `name` varchar(100) DEFAULT NULL,
+ `aic_site_id` varchar(100) NOT NULL,
+ `vcenter_url` varchar(200) DEFAULT NULL,
+ `vcenter_username` varchar(40) DEFAULT NULL,
+ `vcenter_passwd` varbinary(255) DEFAULT NULL,
+ `city` varchar(100) DEFAULT NULL,
+ `state` varchar(2) DEFAULT NULL,
+ `operational_status` varchar(20) DEFAULT NULL,
+ `oam_gateway_addr` varchar(20) DEFAULT '',
+ PRIMARY KEY (`aic_site_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_SWITCH`
+--
+
+CREATE TABLE IF NOT EXISTS `AIC_SWITCH` (
+ `switch_name` varchar(100) DEFAULT NULL,
+ `physical_network_name` varchar(100) NOT NULL,
+ `aic_site_id` varchar(100) DEFAULT NULL,
+ `uuid` varchar(100) DEFAULT NULL,
+ `availability_zone` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`physical_network_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `AIC_ZONE_CLOUD_REGION_ID`
+--
+
+CREATE TABLE IF NOT EXISTS `AIC_ZONE_CLOUD_REGION_ID` (
+ `zone_region_id` varchar(255) NOT NULL,
+ `cilli_code` varchar(255) NOT NULL,
+ `location_id` varchar(255) NOT NULL DEFAULT '',
+ `city_state_country` varchar(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`zone_region_id`,`cilli_code`,`location_id`,`city_state_country`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ALLOCATION_ITEM`
+--
+
+CREATE TABLE IF NOT EXISTS `ALLOCATION_ITEM` (
+ `allocation_item_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `resource_id` bigint(20) NOT NULL,
+ `application_id` varchar(50) NOT NULL,
+ `resource_set_id` varchar(200) NOT NULL,
+ `resource_union_id` varchar(200) NOT NULL,
+ `resource_share_group_list` varchar(200) DEFAULT NULL,
+ `lt_used` bigint(20) DEFAULT NULL,
+ `ll_label` varchar(50) DEFAULT NULL,
+ `rr_used` varchar(200) DEFAULT NULL,
+ `allocation_time` datetime NOT NULL,
+ PRIMARY KEY (`allocation_item_id`),
+ UNIQUE KEY `allocation_item_id` (`allocation_item_id`),
+ UNIQUE KEY `IX2_ALLOCATION_ITEM` (`resource_id`,`resource_set_id`),
+ KEY `IX1_ALLOCATION_ITEM` (`resource_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=5764 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ALLOTTED_RESOURCE_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `ALLOTTED_RESOURCE_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ `ecomp_generated_naming` char(1) DEFAULT NULL,
+ `depending_service` varchar(255) DEFAULT NULL,
+ `role` varchar(255) DEFAULT NULL,
+ `type` varchar(255) DEFAULT NULL,
+ `service_dependency` varchar(255) DEFAULT NULL,
+ `allotted_resource_type` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ALTS_CREDENTIALS`
+--
+
+CREATE TABLE IF NOT EXISTS `ALTS_CREDENTIALS` (
+ `alts_username` varchar(255) NOT NULL,
+ `alts_password` varbinary(255) NOT NULL,
+ PRIMARY KEY (`alts_username`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ASDC_ARTIFACTS`
+--
+
+CREATE TABLE IF NOT EXISTS `ASDC_ARTIFACTS` (
+ `asdc_artifacts_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_uuid` varchar(50) DEFAULT NULL,
+ `distribution_id` varchar(50) DEFAULT NULL,
+ `service_name` varchar(255) DEFAULT NULL,
+ `service_description` varchar(255) DEFAULT NULL,
+ `resource_uuid` varchar(255) DEFAULT NULL,
+ `resource_instance_name` varchar(255) DEFAULT NULL,
+ `resource_name` varchar(255) DEFAULT NULL,
+ `resource_version` varchar(50) DEFAULT NULL,
+ `resource_type` varchar(50) DEFAULT NULL,
+ `artifact_uuid` varchar(50) DEFAULT NULL,
+ `artifact_type` varchar(50) DEFAULT NULL,
+ `artifact_version` varchar(25) DEFAULT NULL,
+ `artifact_description` varchar(255) DEFAULT NULL,
+ `internal_version` int(11) DEFAULT NULL,
+ `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `artifact_name` varchar(255) DEFAULT NULL,
+ `artifact_content` longtext,
+ PRIMARY KEY (`asdc_artifacts_id`),
+ UNIQUE KEY `asdc_artifacts_id` (`asdc_artifacts_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ASDC_REFERENCE`
+--
+
+CREATE TABLE IF NOT EXISTS `ASDC_REFERENCE` (
+ `asdc_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_type` varchar(50) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `vnfc_type` varchar(50) DEFAULT NULL,
+ `file_category` varchar(50) DEFAULT NULL,
+ `action` varchar(50) DEFAULT NULL,
+ `artifact_type` varchar(50) DEFAULT NULL,
+ `artifact_name` varchar(255) NOT NULL,
+ PRIMARY KEY (`asdc_reference_id`),
+ UNIQUE KEY `asdc_reference_id` (`asdc_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `BLOB_TEST`
+--
+
+CREATE TABLE IF NOT EXISTS `BLOB_TEST` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `odl` varchar(20) DEFAULT NULL,
+ `communities` mediumblob,
+ `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+ `retry_count` int(11) DEFAULT '-1',
+ PRIMARY KEY (`seq`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CAPABILITY`
+--
+
+CREATE TABLE IF NOT EXISTS `CAPABILITY` (
+ `capability_id` int(11) NOT NULL AUTO_INCREMENT,
+ `capability_name` varchar(50) NOT NULL,
+ `implementation_name` varchar(100) NOT NULL,
+ `operation_name` varchar(50) NOT NULL,
+ `operation_description` varchar(100) NOT NULL,
+ `input_definition` longtext,
+ `output_definition` longtext,
+ `dependency_definition` longtext,
+ `tags` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`capability_id`),
+ UNIQUE KEY `capability_id` (`capability_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CITY_CODE`
+--
+
+CREATE TABLE IF NOT EXISTS `CITY_CODE` (
+ `city_code_id` int(11) NOT NULL AUTO_INCREMENT,
+ `city_code` varchar(3) NOT NULL,
+ `city` varchar(150) NOT NULL,
+ `state` varchar(10) NOT NULL,
+ `country_code` varchar(10) NOT NULL,
+ PRIMARY KEY (`city_code_id`),
+ KEY `IN1_CITY_CODE` (`city`,`state`,`country_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=37822 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CLI_UPDATES`
+--
+
+CREATE TABLE IF NOT EXISTS `CLI_UPDATES` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+ `create_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+ `last_processed_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `target_address` varchar(128) DEFAULT NULL,
+ `cli_text` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`seq`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CONFIGFILES`
+--
+
+CREATE TABLE IF NOT EXISTS `CONFIGFILES` (
+ `config_file_id` int(11) NOT NULL AUTO_INCREMENT,
+ `external_version` varchar(50) DEFAULT NULL,
+ `data_source` varchar(25) DEFAULT NULL,
+ `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `service_instance_id` varchar(50) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `vnfc_type` varchar(50) DEFAULT NULL,
+ `file_category` varchar(50) DEFAULT NULL,
+ `file_name` varchar(255) DEFAULT NULL,
+ `file_content` longtext,
+ `action` varchar(50) DEFAULT NULL,
+ `vnf_id` varchar(50) DEFAULT NULL,
+ `vm_name` varchar(50) DEFAULT NULL,
+ `vnf_name` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`config_file_id`),
+ UNIQUE KEY `config_file_id` (`config_file_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CONFIGURE_ACTION_DG`
+--
+
+
+CREATE TABLE IF NOT EXISTS `CONFIGURE_ACTION_DG` (
+ `configure_action_dg_id` int(11) NOT NULL AUTO_INCREMENT,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `action` varchar(50) DEFAULT NULL,
+ `init_config_dg` varchar(50) DEFAULT NULL,
+ `generate_config_dg` varchar(50) DEFAULT NULL,
+ `download_config_dg` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`configure_action_dg_id`),
+ UNIQUE KEY `configure_action_dg_id` (`configure_action_dg_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `CONFIG_CONTENT`
+--
+
+CREATE TABLE IF NOT EXISTS `CONFIG_CONTENT` (
+ `config_content_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_id` varchar(50) NOT NULL,
+ `content_type` varchar(50) NOT NULL,
+ `template_name` varchar(50) DEFAULT NULL,
+ `originator_id` varchar(50) DEFAULT NULL,
+ `service_description` varchar(100) DEFAULT NULL,
+ `action` varchar(50) DEFAULT NULL,
+ `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `service_type` varchar(50) DEFAULT NULL,
+ `service_instance_id` varchar(50) DEFAULT NULL,
+ `vnf_id` varchar(50) DEFAULT NULL,
+ `vnf_name` varchar(50) DEFAULT NULL,
+ `vm_name` varchar(50) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `vnfc_type` varchar(50) DEFAULT NULL,
+ `host_ip_address` varchar(50) DEFAULT NULL,
+ `config_indicator` varchar(25) DEFAULT NULL,
+ `pending_delete` varchar(1) DEFAULT NULL,
+ `content` longtext,
+ PRIMARY KEY (`config_content_id`),
+ UNIQUE KEY `config_content_id` (`creation_date`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `CONFIG_FILE_REFERENCE`
+--
+
+CREATE TABLE IF NOT EXISTS `CONFIG_FILE_REFERENCE` (
+ `config_file_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+ `site_location` varchar(50) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `import_type` varchar(50) DEFAULT NULL,
+ `file_type` varchar(50) DEFAULT NULL,
+ `source_server_name` varchar(255) DEFAULT NULL,
+ `source_file_path` varchar(255) DEFAULT NULL,
+ `target_file_path` varchar(255) DEFAULT NULL,
+ `name` varchar(50) DEFAULT NULL,
+ `file_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`config_file_reference_id`),
+ UNIQUE KEY `config_file_reference_id` (`config_file_reference_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CONFIG_TRANSACTION_LOG`
+--
+
+CREATE TABLE IF NOT EXISTS `CONFIG_TRANSACTION_LOG` (
+ `config_transaction_log_id` varchar(50) NOT NULL,
+ `request_id` varchar(50) DEFAULT NULL,
+ `message_type` varchar(100) DEFAULT NULL,
+ `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `message` longtext,
+ PRIMARY KEY (`config_transaction_log_id`),
+ UNIQUE KEY `config_transaction_log_id` (`config_transaction_log_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `COUNTRY_ASN_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `COUNTRY_ASN_MAPPING` (
+ `asn` int(5) NOT NULL,
+ `iso_2char` varchar(5) NOT NULL,
+ `iso_3char` varchar(5) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+
+
+--
+-- Table structure for table `CUSTOMER2CONNECTION_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `CUSTOMER2CONNECTION_MAPPING` (
+ `customer2connection_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_instance_id` varchar(80) NOT NULL,
+ `instance_type` varchar(20) NOT NULL,
+ `originating_service_instance_id` varchar(80) DEFAULT NULL,
+ `originating_service_type` varchar(20) DEFAULT NULL,
+ `service_type` varchar(30) DEFAULT NULL,
+ `connection_id` varchar(100) NOT NULL,
+ `status` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`customer2connection_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `CUSTOMER2CONNECTION_MAPPING_NEW`
+--
+
+CREATE TABLE IF NOT EXISTS `CUSTOMER2CONNECTION_MAPPING_NEW` (
+ `customer2connection_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_instance_id` varchar(80) NOT NULL,
+ `instance_type` varchar(20) NOT NULL,
+ `originating_service_instance_id` varchar(80) DEFAULT NULL,
+ `originating_service_type` varchar(20) DEFAULT NULL,
+ `service_type` varchar(30) DEFAULT NULL,
+ `connection_id` varchar(100) NOT NULL,
+ `status` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`customer2connection_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DATA_OBJECT_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `DATA_OBJECT_MAPPING` (
+ `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+ `data_object_key` varchar(100) NOT NULL,
+ `data_object_type` varchar(50) NOT NULL,
+ `service_type` varchar(50) NOT NULL,
+ `data_object_key2` varchar(100) NOT NULL,
+ `data_object_key2_type` varchar(50) NOT NULL,
+ `data_object_key3` varchar(100) DEFAULT NULL,
+ `data_object_key3_type` varchar(50) DEFAULT NULL,
+ `service` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`serial_key`),
+ KEY `IX1_DATA_OBJECT_MAPPING` (`data_object_key`,`data_object_type`,`service_type`),
+ KEY `IX2_DATA_OBJECT_MAPPING` (`service_type`,`data_object_key2`,`data_object_key2_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=3211 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE2CONNECTION_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE2CONNECTION_MAPPING` (
+ `vnf_host_name` varchar(100) NOT NULL,
+ `e2e_vpn_key` varchar(30) NOT NULL,
+ `service_type` varchar(30) NOT NULL,
+ `connection_id` varchar(100) NOT NULL,
+ PRIMARY KEY (`vnf_host_name`,`e2e_vpn_key`,`service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE2IPADDRESS_CONSUMPTION`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE2IPADDRESS_CONSUMPTION` (
+ `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+ `device_id` varchar(100) NOT NULL,
+ `device_type` varchar(30) NOT NULL,
+ `ip_version` varchar(10) NOT NULL,
+ `consumption_key` varchar(100) NOT NULL,
+ `logical_interface_service_id` varchar(100) NOT NULL,
+ `address_type` varchar(30) NOT NULL,
+ `ip_consumed` varchar(50) NOT NULL,
+ `vnf_type` varchar(30) NOT NULL,
+ `secondary_key` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`serial_key`),
+ KEY `IX1_DEVICEIPADDRESS_CONSUMPTION` (`device_id`,`device_type`,`ip_version`)
+) ENGINE=InnoDB AUTO_INCREMENT=1357 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE2IPADDRESS_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE2IPADDRESS_MAPPING` (
+ `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+ `device_id` varchar(100) NOT NULL,
+ `device_type` varchar(30) NOT NULL,
+ `secondary_key` varchar(100) NOT NULL,
+ `secondary_key_type` varchar(30) NOT NULL,
+ `address` varchar(50) NOT NULL,
+ `address_type` varchar(30) NOT NULL,
+ `ip_version` varchar(10) NOT NULL,
+ `length` int(11) NOT NULL,
+ `status` varchar(30) NOT NULL,
+ PRIMARY KEY (`serial_key`),
+ KEY `IX1_DEVICE2IPADDRESS_MAPPING` (`device_id`,`device_type`,`secondary_key`,`secondary_key_type`,`address`,`address_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=4734 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE_AUTHENTICATION`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE_AUTHENTICATION` (
+ `device_authentication_id` int(11) NOT NULL AUTO_INCREMENT,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `user_name` varchar(50) DEFAULT NULL,
+ `password` varchar(100) DEFAULT NULL,
+ `protocol` varchar(100) DEFAULT NULL,
+ `port_number` int(11) DEFAULT NULL,
+ PRIMARY KEY (`device_authentication_id`),
+ UNIQUE KEY `device_authentication_id` (`device_authentication_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE_INTERFACE_LOG`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE_INTERFACE_LOG` (
+ `device_interface_log_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_instance_id` varchar(50) DEFAULT NULL,
+ `request_id` varchar(50) DEFAULT NULL,
+ `creation_date` datetime NOT NULL,
+ `log` longtext,
+ PRIMARY KEY (`device_interface_log_id`),
+ UNIQUE KEY `device_interface_log_id` (`device_interface_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DEVICE_INTERFACE_PROTOCOL`
+--
+
+CREATE TABLE IF NOT EXISTS `DEVICE_INTERFACE_PROTOCOL` (
+ `device_interface_protocol_id` int(11) NOT NULL AUTO_INCREMENT,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `protocol` varchar(50) DEFAULT NULL,
+ `module` varchar(50) DEFAULT NULL,
+ `dg_rpc` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`device_interface_protocol_id`),
+ UNIQUE KEY `device_interface_protocol_id` (`device_interface_protocol_id`),
+ UNIQUE KEY `vnf_type` (`vnf_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DOWNLOAD_CONFIG_TEMPLATE`
+--
+
+CREATE TABLE IF NOT EXISTS `DOWNLOAD_CONFIG_TEMPLATE` (
+ `download_config_template_id` int(11) NOT NULL AUTO_INCREMENT,
+ `vnf_type` varchar(50) NOT NULL,
+ `protocol` varchar(50) NOT NULL,
+ `template` longtext,
+ PRIMARY KEY (`download_config_template_id`),
+ UNIQUE KEY `download_config_template_id` (`download_config_template_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DOWNLOAD_DG_REFERENCE`
+--
+
+CREATE TABLE IF NOT EXISTS `DOWNLOAD_DG_REFERENCE` (
+ `download_dg_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+ `protocol` varchar(50) NOT NULL,
+ `download_config_dg` varchar(50) NOT NULL,
+ PRIMARY KEY (`download_dg_reference_id`),
+ UNIQUE KEY `download_dg_reference_id` (`download_dg_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EIPAM_CLIENT_KEY_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_CLIENT_KEY_INDEX` (
+ `vnf_name_prefix` varchar(100) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`vnf_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EIPAM_IP_ASSIGNMENTS`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_IP_ASSIGNMENTS` (
+ `plan_name` varchar(40) NOT NULL,
+ `client_key` varchar(100) NOT NULL,
+ `service_type` varchar(40) NOT NULL,
+ `ip_address` varchar(40) DEFAULT NULL,
+ `prefix_length` int(2) DEFAULT NULL,
+ `status` varchar(255) DEFAULT NULL,
+ `service_instance_id` varchar(80) DEFAULT NULL,
+ `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `prev_status` varchar(20) DEFAULT NULL,
+ `info` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`plan_name`,`client_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EIPAM_IP_POOLS`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_IP_POOLS` (
+ `pool_id` int(11) NOT NULL AUTO_INCREMENT,
+ `key_name` varchar(50) NOT NULL,
+ `key_value` varchar(255) NOT NULL,
+ `level` int(2) NOT NULL,
+ `plan_name` varchar(50) NOT NULL,
+ `address_family` varchar(10) NOT NULL,
+ `parent_pool` varchar(255) NOT NULL,
+ `service_instance_id` varchar(255) DEFAULT NULL,
+ `network_id` varchar(255) DEFAULT NULL,
+ `created_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `delete_failure` varchar(20) DEFAULT NULL,
+ `delete_request_id` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`pool_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=339 DEFAULT CHARSET=latin1 COMMENT='This table will capture the pools being created by SDN-C in EIPAM_IP_POOLS. There is no data migration for existing vPE pool data.';
+
+--
+-- Table structure for table `EIPAM_IP_SUBNETS`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_IP_SUBNETS` (
+ `entity_id` int(6) NOT NULL,
+ `service_type` varchar(40) NOT NULL,
+ `plan_name` varchar(50) NOT NULL,
+ `address_family` varchar(10) NOT NULL,
+ `ip_address` varchar(40) NOT NULL,
+ `prefix_length` int(3) NOT NULL,
+ `status` varchar(20) NOT NULL,
+ `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `network_id` varchar(255) DEFAULT NULL,
+ `pool_id` int(11) DEFAULT NULL,
+ `dealloc_failure` varchar(20) DEFAULT NULL,
+ `dealloc_request_id` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`entity_id`),
+ KEY `FK_EIPAM_IP_SUBNETS_EIPAM_IP_POOLS` (`pool_id`),
+ CONSTRAINT `EIPAM_IP_SUBNETS_ibfk_1` FOREIGN KEY (`pool_id`) REFERENCES `EIPAM_IP_POOLS` (`pool_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+ CONSTRAINT `FK_EIPAM_IP_SUBNETS_EIPAM_IP_POOLS` FOREIGN KEY (`pool_id`) REFERENCES `EIPAM_IP_POOLS` (`pool_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EIPAM_IP_SUBNET_KEYS`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_IP_SUBNET_KEYS` (
+ `entity_id` int(6) NOT NULL,
+ `key_name` varchar(50) NOT NULL,
+ `key_value` varchar(255) NOT NULL,
+ `level` int(2) NOT NULL,
+ PRIMARY KEY (`entity_id`,`key_name`,`key_value`,`level`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EIPAM_REQUEST_KEY`
+--
+
+CREATE TABLE IF NOT EXISTS `EIPAM_REQUEST_KEY` (
+ `key_name_1` varchar(50) NOT NULL,
+ `address_family` varchar(4) NOT NULL,
+ `serial_key` int(2) NOT NULL AUTO_INCREMENT,
+ `plan_name` varchar(50) NOT NULL,
+ `request_length` int(2) NOT NULL,
+ `pools_length` int(2) NOT NULL,
+ `plan_length` int(2) NOT NULL,
+ `key_name_0` varchar(50) NOT NULL,
+ `key_name_type_0` varchar(255) NOT NULL,
+ `key_name_type_1` varchar(255) NOT NULL,
+ `prefix_length` int(2) NOT NULL,
+ `group_flag` char(1) NOT NULL,
+ `address_type` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`key_name_1`,`address_family`),
+ UNIQUE KEY `IX1_EIPAM_REQUEST_KEY` (`serial_key`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `EXTERNAL_DATA`
+--
+
+CREATE TABLE IF NOT EXISTS `EXTERNAL_DATA` (
+ `external_data_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_id` int(11) DEFAULT NULL,
+ `param_name` varchar(30) NOT NULL,
+ `param_value` varchar(50) NOT NULL,
+ PRIMARY KEY (`external_data_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `FLOW_UPDATES`
+--
+
+CREATE TABLE IF NOT EXISTS `FLOW_UPDATES` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+ `create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `last_processed_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `odl` varchar(128) DEFAULT NULL,
+ `address_family` enum('IPV4','IPV6') DEFAULT NULL,
+ `destination_prefix` varchar(50) DEFAULT NULL,
+ `communities` varchar(6000) DEFAULT NULL,
+ `route_key` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=276 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_L3_NETWORK` (
+ `network_id` varchar(80) NOT NULL,
+ `network_name` varchar(80) DEFAULT NULL,
+ `network_type` varchar(80) DEFAULT NULL,
+ `network_role` varchar(80) DEFAULT NULL,
+ `network_technology` varchar(80) DEFAULT NULL,
+ `neutron_network_id` varchar(80) DEFAULT NULL,
+ `is_bound_to_vpn` tinyint(1) DEFAULT NULL,
+ `orchestration_status` varchar(20) DEFAULT NULL,
+ `heat_stack_id` varchar(80) DEFAULT NULL,
+ `mso_catalog_key` varchar(80) DEFAULT NULL,
+ `service_id` varchar(80) NOT NULL,
+ `tenant_id` varchar(80) NOT NULL,
+ `physical_location_id` varchar(20) DEFAULT NULL,
+ `network_role_instance` varchar(80) NOT NULL,
+ PRIMARY KEY (`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK_SUBNET`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_L3_NETWORK_SUBNET` (
+ `network_id` varchar(80) NOT NULL,
+ `subnet_id` varchar(80) NOT NULL,
+ `neutron_subnet_id` varchar(80) DEFAULT NULL,
+ `gateway_address` varchar(45) NOT NULL,
+ `network_start_address` varchar(45) NOT NULL,
+ `cidr_mask` varchar(20) NOT NULL,
+ `ip_version` char(1) NOT NULL,
+ `orchestration_status` varchar(64) NOT NULL,
+ `dhcp_enabled` tinyint(1) NOT NULL,
+ `dhcp_start` varchar(45) DEFAULT NULL,
+ `dhcp_end` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`network_id`,`subnet_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK_VPN_BINDING`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_L3_NETWORK_VPN_BINDING` (
+ `network_id` varchar(80) NOT NULL,
+ `vpn_id` varchar(80) NOT NULL,
+ PRIMARY KEY (`network_id`,`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_RESOURCE_NAME`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_RESOURCE_NAME` (
+ `type` varchar(50) NOT NULL,
+ `name` varchar(255) NOT NULL,
+ `prefix` varchar(255) NULL,
+ `name_index` int(11) NULL,
+ `context_id` varchar(255) NULL,
+ PRIMARY KEY (`type`,`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF` (
+ `vnf_id` varchar(80) NOT NULL,
+ `vnf_name` varchar(80) NOT NULL,
+ `vnf_type` varchar(200) NOT NULL,
+ `vnf_name2` varchar(80) DEFAULT NULL,
+ `service_id` varchar(80) NOT NULL,
+ `equipment_role` varchar(80) NOT NULL,
+ `orchestration_status` varchar(20) DEFAULT NULL,
+ `prov_status` varchar(20) DEFAULT NULL,
+ `heat_stack_id` varchar(80) DEFAULT NULL,
+ `mso_catalog_key` varchar(80) DEFAULT NULL,
+ `regional_resource_zone` varchar(80) DEFAULT NULL,
+ `operational_state` varchar(80) DEFAULT NULL,
+ `license_key` varchar(80) DEFAULT NULL,
+ `ipv4_oam_address` varchar(20) DEFAULT NULL,
+ `ipv4_loopback0_address` varchar(20) DEFAULT NULL,
+ `nm_lan_v6_address` varchar(40) DEFAULT NULL,
+ `management_v6_address` varchar(40) DEFAULT NULL,
+ `management_option` varchar(45) DEFAULT NULL,
+ `vcpu` varchar(45) DEFAULT NULL,
+ `vmemory` varchar(45) DEFAULT NULL,
+ `vdisk` varchar(45) DEFAULT NULL,
+ `vcpu_units` varchar(45) DEFAULT NULL,
+ `vmemory_units` varchar(45) DEFAULT NULL,
+ `vdisk_units` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_L3_NETWORK`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_L3_NETWORK` (
+ `vnf_id` varchar(80) NOT NULL,
+ `network_id` varchar(80) NOT NULL,
+ PRIMARY KEY (`vnf_id`,`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_LICENSE_MANAGEMENT`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_LICENSE_MANAGEMENT` (
+ `vnf_id` varchar(80) NOT NULL,
+ `att_uuid` varchar(80) NOT NULL,
+ PRIMARY KEY (`vnf_id`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_LINTERFACE`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_LINTERFACE` (
+ `vnf_id` varchar(80) NOT NULL,
+ `interface_name` varchar(255) NOT NULL,
+ `interface_role` varchar(45) DEFAULT NULL,
+ `v6_wan_link_ip` varchar(45) DEFAULT NULL,
+ `selflink` varchar(128) DEFAULT NULL,
+ `interface_id` varchar(45) DEFAULT NULL,
+ `macaddr` varchar(64) DEFAULT NULL,
+ `network_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`interface_name`),
+ KEY `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF_IDX` (`vnf_id`),
+ CONSTRAINT `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF` FOREIGN KEY (`vnf_id`) REFERENCES `GENERIC_VNF` (`vnf_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_PSERVER`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_PSERVER` (
+ `vnf_id` varchar(64) NOT NULL,
+ `hostname` varchar(255) NOT NULL,
+ PRIMARY KEY (`vnf_id`,`hostname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_SERVICE_INSTANCE`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_SERVICE_INSTANCE` (
+ `vnf_id` varchar(64) NOT NULL,
+ `service_instance_id` varchar(255) NOT NULL,
+ `relationship_key` varchar(64) NOT NULL,
+ `relationship_value` varchar(64) DEFAULT NULL,
+ `global_customer_id` varchar(255) DEFAULT NULL,
+ `service_type` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`service_instance_id`,`relationship_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_VNF_IMAGE`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_VNF_IMAGE` (
+ `vnf_id` varchar(64) NOT NULL,
+ `att_uuid` varchar(255) NOT NULL,
+ PRIMARY KEY (`vnf_id`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VNF_VSERVER`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VNF_VSERVER` (
+ `vnf_id` varchar(80) NOT NULL,
+ `vserver_id` varchar(128) NOT NULL,
+ `tenant_id` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GENERIC_VPN_BINDING`
+--
+
+CREATE TABLE IF NOT EXISTS `GENERIC_VPN_BINDING` (
+ `vpn_id` varchar(80) NOT NULL,
+ `vpn_name` varchar(80) NOT NULL,
+ `global_route_target` varchar(80) NOT NULL,
+ PRIMARY KEY (`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GET_CONFIG_TEMPLATE`
+--
+
+CREATE TABLE IF NOT EXISTS `GET_CONFIG_TEMPLATE` (
+ `get_config_template_id` int(11) NOT NULL AUTO_INCREMENT,
+ `vnf_type` varchar(50) NOT NULL,
+ `device_interface_protocol_id` int(11) NOT NULL,
+ `xml_processing` varchar(1) DEFAULT NULL,
+ `xml_protocol` varchar(30) DEFAULT NULL,
+ `template` longtext,
+ PRIMARY KEY (`get_config_template_id`),
+ UNIQUE KEY `get_config_template_id` (`get_config_template_id`),
+ KEY `get_config_template_ibfk_1` (`device_interface_protocol_id`),
+ CONSTRAINT `get_config_template_ibfk_1` FOREIGN KEY (`device_interface_protocol_id`) REFERENCES `DEVICE_INTERFACE_PROTOCOL` (`device_interface_protocol_id`) ON DELETE NO ACTION ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `LOCATION`
+--
+
+CREATE TABLE IF NOT EXISTS `LOCATION` (
+ `loc_id` int(11) NOT NULL AUTO_INCREMENT,
+ `address` varchar(150) NOT NULL,
+ `city_code_id` int(11) NOT NULL,
+ `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`loc_id`),
+ KEY `IN1_LOCATION_IDX` (`city_code_id`),
+ CONSTRAINT `FK1_LOCATION` FOREIGN KEY (`city_code_id`) REFERENCES `CITY_CODE` (`city_code_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB AUTO_INCREMENT=327 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `HOSTNAME`
+--
+
+CREATE TABLE IF NOT EXISTS `HOSTNAME` (
+ `hostname` varchar(21) NOT NULL,
+ `parent_hostname` varchar(21) DEFAULT NULL,
+ `cust_id` int(11) NOT NULL,
+ `loc_id` int(11) NOT NULL,
+ `site_sequence` varchar(2) NOT NULL,
+ `server_sequence` varchar(2) NOT NULL,
+ `activation_code` varchar(11) DEFAULT NULL,
+ `vnf_sequence` varchar(2) DEFAULT NULL,
+ `vendor_code` varchar(1) NOT NULL,
+ `virtual_device_type` varchar(2) DEFAULT NULL,
+ `device_sequence` varchar(3) DEFAULT NULL,
+ `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`hostname`),
+ KEY `IN1_HOSTNAME` (`cust_id`),
+ KEY `IN2_HOSTNAME` (`loc_id`),
+ KEY `IN3_HOSTNAME` (`vendor_code`),
+ KEY `IN4_HOSTNAME` (`parent_hostname`),
+ CONSTRAINT `FK1_HOSTNAME` FOREIGN KEY (`cust_id`) REFERENCES `CUSTOMER` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+ CONSTRAINT `FK2_HOSTNAME` FOREIGN KEY (`loc_id`) REFERENCES `LOCATION` (`loc_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+ CONSTRAINT `FK4_HOSTNAME` FOREIGN KEY (`parent_hostname`) REFERENCES `HOSTNAME` (`hostname`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `IPV4_ADDRESS_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `IPV4_ADDRESS_POOL` (
+ `aic_site_id` varchar(100) NOT NULL,
+ `universe` varchar(40) NOT NULL,
+ `status` varchar(40) NOT NULL,
+ `ipv4_addr` varchar(20) NOT NULL,
+ PRIMARY KEY (`ipv4_addr`,`universe`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `LINK_MASTER`
+--
+
+CREATE TABLE IF NOT EXISTS `LINK_MASTER` (
+ `link_interface_ip` varchar(20) NOT NULL,
+ `source_crs_name` varchar(20) NOT NULL,
+ `destination_crs_name` varchar(20) NOT NULL,
+ `max_reserved_bw` int(11) DEFAULT NULL,
+ `default_cost` int(11) DEFAULT NULL,
+ `bundle_name` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`link_interface_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `LINTERFACE_VLAN`
+--
+
+CREATE TABLE IF NOT EXISTS `LINTERFACE_VLAN` (
+ `vnf_id` varchar(80) NOT NULL,
+ `interface_name` varchar(255) NOT NULL,
+ `vlan_interface` varchar(255) NOT NULL,
+ `vlan_id_inner` varchar(64) DEFAULT NULL,
+ `vlan_id_outer` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`),
+ KEY `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE_IDX` (`vnf_id`,`interface_name`),
+ CONSTRAINT `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE` FOREIGN KEY (`vnf_id`, `interface_name`) REFERENCES `GENERIC_VNF_LINTERFACE` (`vnf_id`, `interface_name`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `MAX_PORT_SPEED`
+--
+
+CREATE TABLE IF NOT EXISTS `MAX_PORT_SPEED` (
+ `max_port_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `image_file_name` varchar(50) NOT NULL,
+ `end_point_position` varchar(50) NOT NULL,
+ `interface_name` varchar(100) NOT NULL,
+ `max_speed` bigint(20) NOT NULL,
+ `unit` varchar(10) NOT NULL,
+ PRIMARY KEY (`max_port_speed_id`),
+ UNIQUE KEY `max_port_speed_id` (`max_port_speed_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `MAX_SERVER_SPEED`
+--
+
+CREATE TABLE IF NOT EXISTS `MAX_SERVER_SPEED` (
+ `max_server_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `server_model` varchar(50) NOT NULL,
+ `evc_count` smallint(6) NOT NULL,
+ `max_speed` bigint(20) NOT NULL,
+ `unit` varchar(10) NOT NULL,
+ `description` varchar(500) DEFAULT NULL,
+ PRIMARY KEY (`max_server_speed_id`),
+ UNIQUE KEY `max_server_speed_id` (`max_server_speed_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NAMING_POLICY_VM_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `NAMING_POLICY_VM_NAME_INDEX` (
+ `vm_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`vm_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NAMING_POLICY_VNFC_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `NAMING_POLICY_VNFC_NAME_INDEX` (
+ `vnfc_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`vnfc_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_ASSIGN_VPN_OVERRIDE`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_ASSIGN_VPN_OVERRIDE` (
+ `vpn_id` varchar(12) NOT NULL DEFAULT '',
+ `vpn_rt` varchar(16) NOT NULL DEFAULT '',
+ `service_type` varchar(16) NOT NULL DEFAULT '',
+ `be_location` varchar(16) NOT NULL DEFAULT '',
+ `be_type` varchar(32) NOT NULL DEFAULT '',
+ `be_id` varchar(32) DEFAULT NULL,
+ `description` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`vpn_id`,`vpn_rt`,`service_type`,`be_location`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_BORDER_ELEMENT`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_BORDER_ELEMENT` (
+ `be_id` varchar(32) NOT NULL,
+ `be_type` varchar(16) NOT NULL,
+ `be_name` varchar(32) DEFAULT NULL,
+ `be_host_vnf_id` varchar(32) DEFAULT NULL,
+ `service_type` varchar(16) DEFAULT NULL,
+ `tangibility` varchar(16) DEFAULT NULL,
+ `usage_order` smallint(6) DEFAULT NULL,
+ `vlan_start` smallint(6) DEFAULT NULL,
+ `vlan_end` smallint(6) DEFAULT NULL,
+ `ipv4_subnet` varchar(18) DEFAULT NULL,
+ `ipv6_subnet` varchar(68) DEFAULT NULL,
+ `network_ip` varchar(48) DEFAULT NULL,
+ `be_location` varchar(16) DEFAULT NULL,
+ `description` varchar(128) DEFAULT NULL,
+ `updated_timestamp` timestamp NULL DEFAULT NULL,
+ `log_link_model_uuid` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`be_id`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_IPE`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_IPE` (
+ `ipe_name` varchar(32) NOT NULL,
+ `ipe_location` varchar(16) DEFAULT NULL,
+ `ipe_ip_address` varchar(16) DEFAULT NULL,
+ `ipe_id` varchar(8) DEFAULT NULL,
+ `service_type_array` varchar(512) DEFAULT NULL,
+ `ipe_status` varchar(32) DEFAULT NULL,
+ `updated_timestamp` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`ipe_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_IPE_PORT`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_IPE_PORT` (
+ `port_id` varchar(16) NOT NULL,
+ `ipe_name` varchar(32) NOT NULL,
+ `be_id` varchar(32) NOT NULL,
+ `be_type` varchar(16) NOT NULL,
+ `port_type` varchar(16) DEFAULT NULL,
+ `ae_name` varchar(16) DEFAULT NULL,
+ `description` varchar(128) DEFAULT NULL,
+ `updated_timestamp` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`port_id`,`ipe_name`,`be_id`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_MAPPING_SBG_BGF`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_MAPPING_SBG_BGF` (
+ `asbg_vlan` smallint(6) NOT NULL,
+ `bgf_vlan` smallint(6) NOT NULL,
+ PRIMARY KEY (`asbg_vlan`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_SERVICE`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_SERVICE` (
+ `service_type` varchar(16) NOT NULL,
+ `service_model_uuid` varchar(64) NOT NULL,
+ `description` varchar(128) DEFAULT NULL,
+ `created_timestamp` timestamp NULL DEFAULT NULL,
+ `updated_timestamp` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NBNC_SERVICE_VLAN`
+--
+
+CREATE TABLE IF NOT EXISTS `NBNC_SERVICE_VLAN` (
+ `be_id` varchar(32) NOT NULL,
+ `vlan` smallint(6) NOT NULL,
+ `service_type` varchar(16) DEFAULT NULL,
+ `be_type` varchar(16) DEFAULT NULL,
+ `be_name` varchar(32) DEFAULT NULL,
+ `be_host_vnf_id` varchar(32) DEFAULT NULL,
+ `be_location` varchar(16) DEFAULT NULL,
+ `be_usage_order` smallint(6) DEFAULT NULL,
+ `vlan_usage_order` smallint(6) DEFAULT NULL,
+ `status` varchar(16) DEFAULT 'AVAILABLE',
+ `request_id` varchar(64) DEFAULT NULL,
+ `service_instance_id` varchar(64) DEFAULT NULL,
+ `vni_id` varchar(16) DEFAULT NULL,
+ `customer_id` varchar(16) DEFAULT NULL,
+ `ipe1_router_name` varchar(32) DEFAULT NULL,
+ `ipe1_port_id` varchar(16) DEFAULT NULL,
+ `ipe1_ae_name` varchar(16) DEFAULT NULL,
+ `ipe2_router_name` varchar(32) DEFAULT NULL,
+ `ipe2_port_id` varchar(16) DEFAULT NULL,
+ `ipe2_ae_name` varchar(16) DEFAULT NULL,
+ `available_timestamp` timestamp NULL DEFAULT NULL,
+ `allocated_timestamp` timestamp NULL DEFAULT NULL,
+ `disabled_timestamp` timestamp NULL DEFAULT NULL,
+ `enabled_timestamp` timestamp NULL DEFAULT NULL,
+ `vpn_id` varchar(12) DEFAULT NULL,
+ `vpn_rt` varchar(16) DEFAULT NULL,
+ PRIMARY KEY (`be_id`,`vlan`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NCS_EXPECTED_ASYNC_REQUESTS`
+--
+
+CREATE TABLE IF NOT EXISTS `NCS_EXPECTED_ASYNC_REQUESTS` (
+ `ncs_request_id` varchar(255) NOT NULL,
+ `mso_gp_request_id` varchar(255) NOT NULL,
+ `service_instance_id` varchar(255) NOT NULL,
+ `sdn_module_name` varchar(255) NOT NULL,
+ `sdn_rpc_name` varchar(255) NOT NULL,
+ `sdn_service_action` varchar(255) DEFAULT NULL,
+ `ncs_rpc` varchar(255) NOT NULL,
+ `ncs_sub_action` varchar(255) DEFAULT NULL,
+ `status` varchar(255) NOT NULL DEFAULT 'inProgress',
+ `creation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`ncs_request_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NETWORK_INSTANCE_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `NETWORK_INSTANCE_NAME_INDEX` (
+ `network_instance_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`network_instance_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `SERVICE_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_MODEL` (
+ `service_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(1024) DEFAULT NULL,
+ `type` varchar(255) DEFAULT NULL,
+ `category` varchar(255) DEFAULT NULL,
+ `ecomp_naming` char(1) DEFAULT NULL,
+ `service_instance_name_prefix` varchar(255) DEFAULT NULL,
+ `filename` varchar(100) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`service_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NETWORK_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `NETWORK_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `service_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `network_type` varchar(255) DEFAULT NULL,
+ `network_role` varchar(255) DEFAULT NULL,
+ `network_technology` varchar(255) DEFAULT NULL,
+ `trunk_network_indicator` char(1) DEFAULT NULL,
+ `network_scope` varchar(255) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ `ecomp_generated_naming` char(1) DEFAULT NULL,
+ `is_shared_network` char(1) DEFAULT NULL,
+ `is_external_network` char(1) DEFAULT NULL,
+ `is_provider_network` char(1) DEFAULT NULL,
+ `physical_network_name` varchar(255) DEFAULT NULL,
+ `is_bound_to_vpn` char(1) DEFAULT NULL,
+ `vpn_binding` varchar(255) DEFAULT NULL,
+ `use_ipv4` char(1) DEFAULT NULL,
+ `ipv4_dhcp_enabled` char(1) DEFAULT NULL,
+ `ipv4_ip_version` char(1) DEFAULT NULL,
+ `ipv4_cidr_mask` varchar(255) DEFAULT NULL,
+ `eipam_v4_address_plan` varchar(255) DEFAULT NULL,
+ `use_ipv6` char(1) DEFAULT NULL,
+ `ipv6_dhcp_enabled` char(1) DEFAULT NULL,
+ `ipv6_ip_version` char(1) DEFAULT NULL,
+ `ipv6_cidr_mask` varchar(255) DEFAULT NULL,
+ `eipam_v6_address_plan` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`),
+ KEY `FK_NETWORK_MODEL` (`service_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NETWORK_PROFILE`
+--
+
+CREATE TABLE IF NOT EXISTS `NETWORK_PROFILE` (
+ `network_type` varchar(100) NOT NULL,
+ `technology` varchar(100) NOT NULL,
+ PRIMARY KEY (`network_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NETWORK_ROLE_VPN_BINDING`
+--
+
+CREATE TABLE IF NOT EXISTS `NETWORK_ROLE_VPN_BINDING` (
+ `network_role` varchar(80) NOT NULL,
+ `vpn_id` varchar(80) NOT NULL,
+ PRIMARY KEY (`network_role`,`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `NODE_TYPES`
+--
+
+CREATE TABLE IF NOT EXISTS `NODE_TYPES` (
+ `nodetype` varchar(80) NOT NULL,
+ PRIMARY KEY (`nodetype`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `OBJECT_GROUPING`
+--
+
+CREATE TABLE IF NOT EXISTS `OBJECT_GROUPING` (
+ `group_id` varchar(128) NOT NULL,
+ `group_type` varchar(128) NOT NULL,
+ PRIMARY KEY (`group_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `OBJECT_GROUP_MEMBER_TRACKING`
+--
+
+CREATE TABLE IF NOT EXISTS `OBJECT_GROUP_MEMBER_TRACKING` (
+ `group_id` varchar(128) NOT NULL,
+ `key_id` varchar(128) NOT NULL,
+ `key_type` varchar(128) NOT NULL,
+ PRIMARY KEY (`group_id`,`key_id`,`key_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PARAMETERS`
+--
+
+CREATE TABLE IF NOT EXISTS `PARAMETERS` (
+ `name` varchar(100) NOT NULL,
+ `value` varchar(128) NOT NULL,
+ `category` varchar(24) DEFAULT NULL,
+ `memo` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PE_INV`
+--
+
+CREATE TABLE IF NOT EXISTS `PE_INV` (
+ `EQUIP_ID` int(11) DEFAULT NULL,
+ `EQUIP_TYPE` varchar(20) DEFAULT NULL,
+ `PTNII_EQUIP_NAME` varchar(20) DEFAULT NULL,
+ `IP_ADDR` varchar(15) DEFAULT NULL,
+ `ROUTER_PROV_STATUS` varchar(50) DEFAULT NULL,
+ `REGION` varchar(16) DEFAULT NULL,
+ `COUNTRY_ABBR` varchar(50) DEFAULT NULL,
+ `EQUIP_NAME_CODE` varchar(50) DEFAULT NULL,
+ `AS_NUMBER` varchar(5) DEFAULT NULL,
+ `LOOPBACK1` varchar(15) DEFAULT NULL,
+ `LOOPBACK2` varchar(15) DEFAULT NULL,
+ `LOOPBACK3` varchar(15) DEFAULT NULL,
+ `LOOPBACK40` varchar(15) DEFAULT NULL,
+ `LOOPBACK65535` varchar(15) DEFAULT NULL,
+ `INMS_LIST` varchar(20) DEFAULT NULL,
+ `ENCRYPTED_ACCESS_FLAG` varchar(50) DEFAULT NULL,
+ `SW_NAME` varchar(100) DEFAULT NULL,
+ `NMIPADDR` varchar(15) DEFAULT NULL,
+ `CREATE_DATE` datetime DEFAULT NULL,
+ `MOD_DATE` datetime DEFAULT NULL,
+ `FCN_CODE` varchar(50) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PHYSICAL_LINK`
+--
+
+CREATE TABLE IF NOT EXISTS `PHYSICAL_LINK` (
+ `link_name` varchar(255) NOT NULL,
+ `speed_value` varchar(64) DEFAULT NULL,
+ `speed_units` varchar(64) DEFAULT NULL,
+ `circuit_id` varchar(255) NOT NULL,
+ `dual_mode` varchar(64) NOT NULL,
+ PRIMARY KEY (`link_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PHYSICAL_LINK_PINTERFACE`
+--
+
+CREATE TABLE IF NOT EXISTS `PHYSICAL_LINK_PINTERFACE` (
+ `link_name` varchar(255) NOT NULL,
+ `hostname` varchar(255) NOT NULL,
+ `port_name_ft` varchar(255) NOT NULL,
+ PRIMARY KEY (`link_name`,`hostname`,`port_name_ft`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PINTERFACE`
+--
+
+CREATE TABLE IF NOT EXISTS `PINTERFACE` (
+ `hostname` varchar(255) NOT NULL,
+ `port_name_ft` varchar(255) NOT NULL,
+ `interface_name` varchar(255) DEFAULT '',
+ `physical_speed` varchar(255) DEFAULT '',
+ `physical_units` varchar(255) DEFAULT '',
+ `port_description` varchar(255) DEFAULT '',
+ PRIMARY KEY (`hostname`,`port_name_ft`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `POLICY_UPDATE_NOTIFICATION`
+--
+
+CREATE TABLE IF NOT EXISTS `POLICY_UPDATE_NOTIFICATION` (
+ `policy_name` varchar(255) NOT NULL,
+ `version_id` varchar(255) NOT NULL,
+ `update_type` varchar(255) NOT NULL,
+ `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`policy_name`,`version_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PORTAL_USERS`
+--
+
+CREATE TABLE IF NOT EXISTS `PORTAL_USERS` (
+ `email` varchar(64) NOT NULL,
+ `password` varbinary(255) NOT NULL,
+ `privilege` char(1) NOT NULL,
+ PRIMARY KEY (`email`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `PREPARE_FILE_RELATIONSHIP`
+--
+
+CREATE TABLE IF NOT EXISTS `PREPARE_FILE_RELATIONSHIP` (
+ `prepare_file_relationship_id` int(11) NOT NULL AUTO_INCREMENT,
+ `service_instance_id` varchar(50) DEFAULT NULL,
+ `request_id` varchar(255) DEFAULT NULL,
+ `config_file_id` int(11) DEFAULT NULL,
+ `asdc_artifacts_id` int(11) DEFAULT NULL,
+ PRIMARY KEY (`prepare_file_relationship_id`),
+ UNIQUE KEY `prepare_file_relationship_id` (`prepare_file_relationship_id`),
+ KEY `ie_prepare_file_relationship` (`config_file_id`),
+ KEY `ie2_prepare_file_relationship` (`asdc_artifacts_id`),
+ CONSTRAINT `prepare_file_relationship_ibfk_2` FOREIGN KEY (`asdc_artifacts_id`) REFERENCES `ASDC_ARTIFACTS` (`asdc_artifacts_id`) ON DELETE NO ACTION ON UPDATE CASCADE,
+ CONSTRAINT `prepare_file_replationship_ibfk_1` FOREIGN KEY (`config_file_id`) REFERENCES `CONFIGFILES` (`config_file_id`) ON DELETE NO ACTION ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PRE_LOAD_VNF_DATA`
+--
+
+CREATE TABLE IF NOT EXISTS `PRE_LOAD_VNF_DATA` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `svc_request_id` varchar(100) DEFAULT '',
+ `svc_action` varchar(40) DEFAULT '',
+ `status` varchar(10) NOT NULL DEFAULT 'pending',
+ `filename` varchar(100) NOT NULL,
+ `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `preload_data` longblob,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=295 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PRE_LOAD_VNF_NETWORK_DATA`
+--
+
+CREATE TABLE IF NOT EXISTS `PRE_LOAD_VNF_NETWORK_DATA` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `svc_request_id` varchar(100) DEFAULT '',
+ `svc_action` varchar(40) DEFAULT '',
+ `status` varchar(10) NOT NULL DEFAULT 'pending',
+ `filename` varchar(100) NOT NULL,
+ `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `preload_data` longblob,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=278 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `PSERVER`
+--
+
+CREATE TABLE IF NOT EXISTS `PSERVER` (
+ `hostname` varchar(255) NOT NULL,
+ `ptnii_equip_name` varchar(255) DEFAULT '',
+ `number_of_cpus` varchar(255) DEFAULT '',
+ `disk_in_gigabytes` varchar(255) DEFAULT '',
+ `ram_in_megabytes` varchar(255) DEFAULT '',
+ `equip_type` varchar(255) DEFAULT '',
+ `equip_vendor` varchar(255) DEFAULT '',
+ `equip_model` varchar(255) DEFAULT '',
+ `fqdn` varchar(255) DEFAULT '',
+ `pserver_selflink` varchar(255) DEFAULT '',
+ `ipv4_oam_address` varchar(40) DEFAULT NULL,
+ `serial_number` varchar(255) DEFAULT '',
+ `pserver_id` varchar(255) DEFAULT '',
+ `internet_topology` varchar(40) DEFAULT '',
+ `aic_site_id` varchar(100) DEFAULT '',
+ `in_maint` varchar(5) DEFAULT '',
+ `pserver_name2` varchar(255) DEFAULT '',
+ `purpose` varchar(255) DEFAULT '',
+ PRIMARY KEY (`hostname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RANGE_RULE`
+--
+
+CREATE TABLE IF NOT EXISTS `RANGE_RULE` (
+ `range_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `range_name` varchar(50) NOT NULL,
+ `service_model` varchar(50) NOT NULL,
+ `end_point_position` varchar(50) NOT NULL,
+ `equipment_level` varchar(50) NOT NULL,
+ `min_value` int(11) NOT NULL,
+ `max_value` int(11) NOT NULL,
+ PRIMARY KEY (`range_rule_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `REQUEST_DETAILS`
+--
+
+CREATE TABLE IF NOT EXISTS `REQUEST_DETAILS` (
+ `request_id` varchar(255) NOT NULL,
+ `controller_id` varchar(255) DEFAULT NULL,
+ `status` varchar(255) DEFAULT NULL,
+ `service_rate` varchar(255) DEFAULT NULL,
+ `service_instance_id` varchar(255) DEFAULT NULL,
+ `service_type` varchar(255) DEFAULT NULL,
+ `global_customer_id` varchar(255) DEFAULT NULL,
+ `notification_url` varchar(255) DEFAULT NULL,
+ `domain_requests` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`request_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `REQUEST_PROGRESS`
+--
+
+CREATE TABLE IF NOT EXISTS `REQUEST_PROGRESS` (
+ `request_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_type` varchar(20) DEFAULT NULL,
+ `service_instance_id` varchar(80) NOT NULL,
+ `request_instance_type` varchar(20) NOT NULL,
+ `originating_service_instance_id` varchar(80) DEFAULT NULL,
+ `originating_service_type` varchar(20) DEFAULT NULL,
+ `overall_status` varchar(20) DEFAULT NULL,
+ `status_date` varchar(80) DEFAULT NULL,
+ `message` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`request_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `REQUEST_PROGRESS_STATE`
+--
+
+CREATE TABLE IF NOT EXISTS `REQUEST_PROGRESS_STATE` (
+ `request_progress_state_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_id` int(11) DEFAULT NULL,
+ `service_instance_id` varchar(80) NOT NULL,
+ `request_instance_type` varchar(20) NOT NULL,
+ `progress_state` varchar(30) DEFAULT NULL,
+ `transaction_status` varchar(20) DEFAULT NULL,
+ `status_date` varchar(80) DEFAULT NULL,
+ `response_code` varchar(20) DEFAULT NULL,
+ `message` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`request_progress_state_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RESOURCE`
+--
+
+CREATE TABLE IF NOT EXISTS `RESOURCE` (
+ `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `asset_id` varchar(100) NOT NULL,
+ `resource_name` varchar(50) NOT NULL,
+ `resource_type` enum('Limit','Label','Range') NOT NULL,
+ `lt_used` bigint(20) DEFAULT NULL,
+ `ll_label` varchar(50) DEFAULT NULL,
+ `ll_reference_count` smallint(6) DEFAULT NULL,
+ `rr_used` varchar(4000) DEFAULT NULL,
+ PRIMARY KEY (`resource_id`),
+ UNIQUE KEY `resource_id` (`resource_id`),
+ UNIQUE KEY `IX1_RESOURCE` (`asset_id`,`resource_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=179 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RESOURCE_LOAD`
+--
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_LOAD` (
+ `resource_load_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `resource_id` bigint(20) NOT NULL,
+ `application_id` varchar(20) NOT NULL,
+ `resource_load_time` datetime NOT NULL,
+ `resource_expiration_time` datetime DEFAULT NULL,
+ PRIMARY KEY (`resource_load_id`),
+ UNIQUE KEY `resource_load_id` (`resource_load_id`),
+ UNIQUE KEY `IX2_RESOURCE_LOAD` (`resource_id`,`application_id`),
+ KEY `IX1_RESOURCE_LOAD` (`resource_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RESOURCE_LOCK`
+--
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_LOCK` (
+ `resource_lock_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `resource_name` varchar(256) DEFAULT NULL,
+ `lock_holder` varchar(100) NOT NULL,
+ `lock_count` smallint(6) NOT NULL,
+ `lock_time` datetime NOT NULL,
+ `expiration_time` datetime NOT NULL,
+ PRIMARY KEY (`resource_lock_id`),
+ UNIQUE KEY `resource_lock_id` (`resource_lock_id`),
+ UNIQUE KEY `IX1_RESOURCE_LOCK` (`resource_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=29681 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RESOURCE_RULE`
+--
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_RULE` (
+ `resource_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `resource_name` varchar(50) NOT NULL,
+ `service_model` varchar(50) NOT NULL,
+ `end_point_position` varchar(50) NOT NULL,
+ `service_expression` varchar(2000) NOT NULL,
+ `equipment_level` varchar(50) NOT NULL,
+ `equipment_expression` varchar(2000) NOT NULL,
+ `allocation_expression` varchar(2000) NOT NULL,
+ `soft_limit_expression` varchar(2000) NOT NULL,
+ `hard_limit_expression` varchar(2000) NOT NULL,
+ PRIMARY KEY (`resource_rule_id`),
+ UNIQUE KEY `resource_rule_id` (`resource_rule_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `RESOURCE_THRESHOLD`
+--
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_THRESHOLD` (
+ `resource_threshold_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `resource_rule_id` bigint(20) NOT NULL,
+ `threshold_expression` varchar(2000) NOT NULL,
+ `threshold_message` varchar(2000) NOT NULL,
+ PRIMARY KEY (`resource_threshold_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ROUTER_MASTER`
+--
+
+CREATE TABLE IF NOT EXISTS `ROUTER_MASTER` (
+ `crs_name` varchar(20) NOT NULL,
+ `loopback_ip` varchar(20) NOT NULL,
+ PRIMARY KEY (`crs_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `ROUTING_CHARACTERISTIC_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `ROUTING_CHARACTERISTIC_MAPPING` (
+ `network_role` varchar(255) NOT NULL,
+ `vrf_name` varchar(255) NOT NULL,
+ `routing_characteristic` varchar(255) NOT NULL,
+ PRIMARY KEY (`network_role`,`vrf_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_HOMING`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_HOMING` (
+ `service_type` varchar(100) NOT NULL,
+ `lata` int(3) NOT NULL,
+ `hubbing_city_type` varchar(40) NOT NULL,
+ `latitude` float DEFAULT NULL,
+ `longitude` float DEFAULT NULL,
+ `primary_aic_site_name` varchar(100) NOT NULL,
+ `secondary_aic_site_name` varchar(100) DEFAULT NULL,
+ `tertiary_aic_site_name` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`service_type`,`lata`,`hubbing_city_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_HOMING_BACKUP`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_HOMING_BACKUP` (
+ `service_type` varchar(100) NOT NULL,
+ `lata` int(3) NOT NULL,
+ `hubbing_city_type` varchar(40) NOT NULL,
+ `latitude` float DEFAULT NULL,
+ `longitude` float DEFAULT NULL,
+ `primary_aic_site_name` varchar(100) NOT NULL,
+ `secondary_aic_site_name` varchar(100) DEFAULT NULL,
+ `tertiary_aic_site_name` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`service_type`,`lata`,`hubbing_city_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_INSTANCE_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_INSTANCE_NAME_INDEX` (
+ `service_instance_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`service_instance_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_MANAGER_CREDENTIALS`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_MANAGER_CREDENTIALS` (
+ `service_manager_username` varchar(255) NOT NULL,
+ `service_manager_password` varbinary(255) NOT NULL,
+ PRIMARY KEY (`service_manager_username`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_PROXY`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_PROXY` (
+ `port_mirror_service_uuid` varchar(255) NOT NULL,
+ `service_proxy_name` varchar(255) NOT NULL,
+ `source_service_uuid` varchar(255) NOT NULL,
+ `resources_vendor` varchar(255) DEFAULT NULL,
+ `resource_vendor_release` varchar(255) DEFAULT NULL,
+ `description` varchar(255) DEFAULT NULL,
+ `category` varchar(255) DEFAULT NULL,
+ `subcategory` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `role` varchar(255) NOT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `customization_uuid` varchar(255) DEFAULT NULL,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`port_mirror_service_uuid`,`service_proxy_name`),
+ KEY `FK_SERVICE_PROXY_SOURCE_TO_SERVICE_MODE` (`source_service_uuid`),
+ CONSTRAINT `FK_SERVICE_PROXY_MIRROR_TO_SERVICE_MODE` FOREIGN KEY (`port_mirror_service_uuid`) REFERENCES `SERVICE_MODEL` (`service_uuid`) ON DELETE CASCADE ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_RESOURCE`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_RESOURCE` (
+ `service_resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `service_instance_id` varchar(80) NOT NULL,
+ `service_status` enum('Active','Pending') NOT NULL,
+ `service_change_number` smallint(6) NOT NULL,
+ `resource_set_id` varchar(100) NOT NULL,
+ `resource_union_id` varchar(100) NOT NULL,
+ PRIMARY KEY (`service_instance_id`,`service_change_number`),
+ UNIQUE KEY `service_resource_id` (`service_resource_id`),
+ KEY `IX1_SERVICE_RESOURCE` (`service_instance_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=955 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SERVICE_TYPE_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `SERVICE_TYPE_MAPPING` (
+ `sdnc_service_type` varchar(128) NOT NULL,
+ `ncs_service_type` varchar(128) NOT NULL,
+ PRIMARY KEY (`sdnc_service_type`,`ncs_service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SUBNETPOOL_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `SUBNETPOOL_MAPPING` (
+ `aic_cloud_region` varchar(16) NOT NULL,
+ `ntc` varchar(32) NOT NULL,
+ `lcp` varchar(32) NOT NULL,
+ `aic_region_id` varchar(255) NOT NULL,
+ PRIMARY KEY (`aic_cloud_region`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SUPPORTED_SEQUENCE_NUMBER`
+--
+
+CREATE TABLE IF NOT EXISTS `SUPPORTED_SEQUENCE_NUMBER` (
+ `resource_sequence_number` varchar(10) NOT NULL,
+ `resource_type` varchar(10) NOT NULL,
+ PRIMARY KEY (`resource_sequence_number`,`resource_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `SVC_LOGIC`
+--
+
+CREATE TABLE IF NOT EXISTS `SVC_LOGIC` (
+ `module` varchar(80) NOT NULL,
+ `rpc` varchar(80) NOT NULL,
+ `version` varchar(40) NOT NULL,
+ `mode` varchar(5) NOT NULL,
+ `active` varchar(1) NOT NULL,
+ `graph` longblob,
+ `modified_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `md5sum` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`module`,`rpc`,`version`,`mode`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TABLE_CLEANUP_CONFIGURATION`
+--
+
+CREATE TABLE IF NOT EXISTS `TABLE_CLEANUP_CONFIGURATION` (
+ `table_name` varchar(255) NOT NULL COMMENT 'The name of the table the cleanup will be performed on',
+ `days_old` int(11) NOT NULL COMMENT 'Records older than the current date minus DAYS_OLD will be deleted',
+ `date_column` varchar(255) NOT NULL COMMENT 'The name of the column containing the date to be checked',
+ `commit_interval` int(11) NOT NULL DEFAULT '2500' COMMENT 'The maximum number of rows a commit may contain',
+ `query_clause` varchar(1000) DEFAULT NULL COMMENT 'An optional additional query clause to further restrict deletion criteria',
+ `child_table_name` varchar(255) DEFAULT NULL,
+ `child_table_pk` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`table_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This table will be used by the table clean-up script, tableCleanup.sh, to drive what tables should be purged and what the purge criteria are.';
+
+--
+-- Table structure for table `TASK_TEMPLATE`
+--
+
+CREATE TABLE IF NOT EXISTS `TASK_TEMPLATE` (
+ `task_template_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_type` varchar(20) DEFAULT NULL,
+ `task_name` varchar(30) NOT NULL,
+ `task_category` varchar(50) NOT NULL,
+ `ecomp_task` varchar(50) NOT NULL,
+ `initial_load` varchar(1) NOT NULL,
+ `service` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`task_template_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TENANT`
+--
+
+CREATE TABLE IF NOT EXISTS `TENANT` (
+ `tenant_id` varchar(255) NOT NULL,
+ `tenant_name` varchar(255) NOT NULL,
+ `service_instance_id` varchar(255) NOT NULL,
+ PRIMARY KEY (`tenant_id`,`tenant_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TESTTBL`
+--
+
+CREATE TABLE IF NOT EXISTS `TESTTBL` (
+ `pk` varchar(25) NOT NULL,
+ `col1` varchar(25) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `THRESHOLD_NOTIFICATION`
+--
+
+CREATE TABLE IF NOT EXISTS `THRESHOLD_NOTIFICATION` (
+ `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `threshold_expression` varchar(2000) DEFAULT NULL,
+ `threshold_message` varchar(500) DEFAULT NULL,
+ PRIMARY KEY (`resource_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TMP_AIC_AVAIL_ZONE_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `TMP_AIC_AVAIL_ZONE_POOL` (
+ `aic_site_id` varchar(100) NOT NULL,
+ `status` varchar(40) NOT NULL,
+ `availability_zone` varchar(100) NOT NULL,
+ `token` int(4) NOT NULL,
+ `vnf_id` varchar(80) DEFAULT NULL,
+ `service_type` varchar(100) NOT NULL,
+ `vnf_type` varchar(20) DEFAULT NULL,
+ `hypervisor` varchar(10) DEFAULT NULL,
+ PRIMARY KEY (`aic_site_id`,`availability_zone`,`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER`
+--
+
+CREATE TABLE IF NOT EXISTS `TOPOLOGY_PARAMETER` (
+ `parameter_id` int(11) NOT NULL,
+ `parameter_name` varchar(20) NOT NULL,
+ `parameter_set` int(11) NOT NULL,
+ `create_update_time` datetime NOT NULL,
+ `create_update_user` varchar(40) NOT NULL,
+ PRIMARY KEY (`parameter_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER_ENTRIES`
+--
+
+CREATE TABLE IF NOT EXISTS `TOPOLOGY_PARAMETER_ENTRIES` (
+ `parameter_entry_id` int(11) NOT NULL,
+ `parameter_name` varchar(255) NOT NULL,
+ `parameter_value` varchar(64) NOT NULL,
+ `create_update_time` datetime NOT NULL,
+ `create_update_user` varchar(40) NOT NULL,
+ PRIMARY KEY (`parameter_entry_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER_TO_ENTRIES`
+--
+
+CREATE TABLE IF NOT EXISTS `TOPOLOGY_PARAMETER_TO_ENTRIES` (
+ `parameter_id` int(11) DEFAULT NULL,
+ `parameter_entry_id` int(11) DEFAULT NULL,
+ `entry_order` int(11) DEFAULT NULL,
+ `create_update_time` datetime DEFAULT NULL,
+ `create_update_user` varchar(40) NOT NULL,
+ KEY `FK1_TOPOLOGY_PARAMETER_TO_ENTRIES` (`parameter_id`),
+ KEY `FK2_TOPOLOGY_PARAMETER_TO_ENTRIES` (`parameter_entry_id`),
+ CONSTRAINT `FK1_TOPOLOGY_PARAMETER_TO_ENTRIES` FOREIGN KEY (`parameter_id`) REFERENCES `TOPOLOGY_PARAMETER` (`parameter_id`),
+ CONSTRAINT `FK2_TOPOLOGY_PARAMETER_TO_ENTRIES` FOREIGN KEY (`parameter_entry_id`) REFERENCES `TOPOLOGY_PARAMETER_ENTRIES` (`parameter_entry_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TOPOLOGY_LOGICAL_RELATION_TO_PINTERFACE`
+--
+
+CREATE TABLE IF NOT EXISTS `TOPOLOGY_LOGICAL_RELATION_TO_PINTERFACE` (
+ `interface_name` varchar(255) NOT NULL,
+ `interface_id` varchar(255) NOT NULL,
+ `pnf_name` varchar(255) NOT NULL,
+ `pnf_id` varchar(255) NOT NULL,
+ `controller_id` varchar(255) DEFAULT NULL,
+ `rate` varchar(255) DEFAULT NULL,
+ `clli` varchar(255) DEFAULT NULL,
+ `connection_point` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`interface_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `TRANSACTION_LOG`
+--
+
+CREATE TABLE IF NOT EXISTS `TRANSACTION_LOG` (
+ `serial_key` int(10) NOT NULL AUTO_INCREMENT,
+ `log_time` varchar(40) NOT NULL,
+ `request_id` varchar(80) DEFAULT NULL,
+ `svc_request_id` varchar(80) DEFAULT NULL,
+ `x_ecomp_request_id` varchar(80) DEFAULT NULL,
+ `graph_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`serial_key`)
+) ENGINE=InnoDB AUTO_INCREMENT=249 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `UPLOAD_CONFIG`
+--
+
+CREATE TABLE IF NOT EXISTS `UPLOAD_CONFIG` (
+ `upload_config_id` int(11) NOT NULL AUTO_INCREMENT,
+ `request_id` varchar(50) DEFAULT NULL,
+ `originator_id` varchar(50) DEFAULT NULL,
+ `service_description` varchar(100) DEFAULT NULL,
+ `action` varchar(50) DEFAULT NULL,
+ `upload_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `vnf_id` varchar(50) DEFAULT NULL,
+ `vnf_name` varchar(50) DEFAULT NULL,
+ `vm_name` varchar(50) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `vnfc_type` varchar(50) DEFAULT NULL,
+ `host_ip_address` varchar(50) DEFAULT NULL,
+ `config_indicator` varchar(25) DEFAULT NULL,
+ `pending_delete` varchar(1) DEFAULT NULL,
+ `content` longtext,
+ PRIMARY KEY (`upload_config_id`),
+ UNIQUE KEY `upload_config_id` (`upload_config_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `USED_SEQUENCE_NUMBER`
+--
+
+CREATE TABLE IF NOT EXISTS `USED_SEQUENCE_NUMBER` (
+ `resource_sequence_number` varchar(10) NOT NULL,
+ `resource_type` varchar(10) NOT NULL,
+ `zone_region_id` varchar(50) NOT NULL,
+ PRIMARY KEY (`resource_sequence_number`,`resource_type`,`zone_region_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `USER_TRACE`
+--
+
+CREATE TABLE IF NOT EXISTS `USER_TRACE` (
+ `user_trace_seq` int(11) NOT NULL AUTO_INCREMENT,
+ `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `identity` varchar(12) DEFAULT NULL,
+ `action` varchar(128) DEFAULT NULL,
+ `description` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`user_trace_seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=392 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VENDOR_CODE`
+--
+
+CREATE TABLE IF NOT EXISTS `VENDOR_CODE` (
+ `vendor_code` varchar(1) NOT NULL,
+ `vendor` varchar(45) NOT NULL DEFAULT '',
+ PRIMARY KEY (`vendor_code`,`vendor`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VFC_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `VFC_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ `ecomp_generated_naming` char(1) DEFAULT NULL,
+ `nfc_function` varchar(255) DEFAULT NULL,
+ `nfc_naming_code` varchar(255) DEFAULT NULL,
+ `vm_type` varchar(255) DEFAULT NULL,
+ `vm_type_tag` varchar(255) DEFAULT NULL,
+ `vm_image_name` varchar(255) DEFAULT NULL,
+ `vm_flavor_name` varchar(255) DEFAULT NULL,
+ `high_availability` varchar(255) DEFAULT NULL,
+ `nfc_naming` varchar(255) DEFAULT NULL,
+ `min_instances` int(11) DEFAULT NULL,
+ `max_instances` int(11) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VFC_TO_NETWORK_ROLE_MAPPING`
+--
+
+
+CREATE TABLE IF NOT EXISTS `VFC_TO_NETWORK_ROLE_MAPPING` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `vfc_customization_uuid` varchar(255) NOT NULL,
+ `network_role` varchar(255) NOT NULL,
+ `vm_type` varchar(255) DEFAULT NULL,
+ `network_role_tag` varchar(255) DEFAULT NULL,
+ `ipv4_count` int(11) NOT NULL,
+ `ipv6_count` int(11) NOT NULL,
+ `ipv4_use_dhcp` char(1) DEFAULT NULL,
+ `ipv6_use_dhcp` char(1) DEFAULT NULL,
+ `ipv4_ip_version` char(1) DEFAULT NULL,
+ `ipv6_ip_version` char(1) DEFAULT NULL,
+ `extcp_subnetpool_id` varchar(512) DEFAULT NULL,
+ `ipv4_floating_count` int(11) DEFAULT NULL,
+ `ipv6_floating_count` int(11) DEFAULT NULL,
+ `ipv4_address_plan_name` varchar(512) DEFAULT NULL,
+ `ipv6_address_plan_name` varchar(512) DEFAULT NULL,
+ `ipv4_vrf_name` varchar(512) DEFAULT NULL,
+ `ipv6_vrf_name` varchar(512) DEFAULT NULL,
+ `subnet_role` varchar(255) DEFAULT NULL,
+ `subinterface_indicator` char(1) DEFAULT NULL,
+ PRIMARY KEY (`seq`),
+ KEY `IX1_VFC_TO_NETWORK_ROLE_MAPPING` (`vfc_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=2063 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VF_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `VF_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `name` varchar(255) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ `ecomp_generated_naming` char(1) DEFAULT NULL,
+ `avail_zone_max_count` int(11) DEFAULT NULL,
+ `nf_function` varchar(255) DEFAULT NULL,
+ `nf_code` varchar(255) DEFAULT NULL,
+ `nf_type` varchar(255) DEFAULT NULL,
+ `nf_role` varchar(255) DEFAULT NULL,
+ `vendor` varchar(255) DEFAULT NULL,
+ `vendor_version` varchar(255) DEFAULT NULL,
+ `sdnc_model_name` varchar(255) DEFAULT NULL,
+ `sdnc_model_version` varchar(255) DEFAULT NULL,
+ `sdnc_artifact_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VF_MODULE_MODEL`
+--
+
+CREATE TABLE IF NOT EXISTS `VF_MODULE_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `vf_module_type` varchar(255) DEFAULT NULL,
+ `availability_zone_count` int(11) DEFAULT NULL,
+ `ecomp_generated_vm_assignments` char(1) DEFAULT NULL,
+ `vf_customization_uuid` varchar(255) DEFAULT NULL,
+ `vf_module_label` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VF_MODULE_TO_VFC_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VF_MODULE_TO_VFC_MAPPING` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `vf_module_customization_uuid` varchar(255) NOT NULL,
+ `vfc_customization_uuid` varchar(255) NOT NULL,
+ `vm_type` varchar(255) NOT NULL,
+ `vm_count` int(11) NOT NULL,
+ PRIMARY KEY (`seq`),
+ KEY `IX1_VF_MODULE_TO_VFC_MAPPING` (`vf_module_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=1711 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VF_TO_NETWORK_ROLE_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VF_TO_NETWORK_ROLE_MAPPING` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `vf_customization_uuid` varchar(255) NOT NULL,
+ `network_role` varchar(255) NOT NULL,
+ PRIMARY KEY (`seq`),
+ KEY `IX1_VF_TO_NETWORK_ROLE_MAPPING` (`vf_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=348 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VIPR_CONFIGURATION`
+--
+
+CREATE TABLE IF NOT EXISTS `VIPR_CONFIGURATION` (
+ `seq` int(11) NOT NULL AUTO_INCREMENT,
+ `serial_number` varchar(255) DEFAULT NULL,
+ `vnf_id` varchar(255) DEFAULT NULL,
+ `vnf_name` varchar(255) DEFAULT NULL,
+ `ecomp_service_instance_id` varchar(255) DEFAULT NULL,
+ `vm_name` varchar(255) DEFAULT NULL,
+ `cloud_region_id` varchar(255) DEFAULT NULL,
+ `cloud_owner` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VIPR_SZ_MANAGER_KEY`
+--
+
+CREATE TABLE IF NOT EXISTS `VIPR_SZ_MANAGER_KEY` (
+ `vipr_sz_manager_ip_addr` varchar(40) NOT NULL,
+ `vipr_sz_manager_state` varchar(10) DEFAULT NULL,
+ `vipr_sz_manager_api_key` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`vipr_sz_manager_ip_addr`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_ID_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_ID_POOL` (
+ `aic_site_id` varchar(100) NOT NULL,
+ `purpose` varchar(40) NOT NULL,
+ `status` varchar(40) NOT NULL,
+ `vlan_id` int(4) NOT NULL,
+ `svc_instance_id` varchar(80) DEFAULT NULL,
+ `availability_zone` varchar(100) DEFAULT NULL,
+ `vplspe_name` varchar(80) DEFAULT NULL,
+ PRIMARY KEY (`vlan_id`,`aic_site_id`,`purpose`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_L3INTERFACE_IPV4_ADDRESS`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_L3INTERFACE_IPV4_ADDRESS` (
+ `vnf_id` varchar(80) NOT NULL,
+ `interface_name` varchar(255) NOT NULL,
+ `vlan_interface` varchar(255) NOT NULL,
+ `l3_interface_ipv4_address` varchar(64) NOT NULL,
+ `l3_interface_ipv4_prefix_length` varchar(45) DEFAULT NULL,
+ `vlan_id_inner` varchar(45) DEFAULT NULL,
+ `vlan_id_outer` varchar(45) DEFAULT NULL,
+ `is_floating` varchar(1) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv4_address`),
+ KEY `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`),
+ CONSTRAINT `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_L3INTERFACE_IPV6_ADDRESS`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_L3INTERFACE_IPV6_ADDRESS` (
+ `vnf_id` varchar(80) NOT NULL,
+ `interface_name` varchar(255) NOT NULL,
+ `vlan_interface` varchar(255) NOT NULL,
+ `l3_interface_ipv6_address` varchar(64) NOT NULL,
+ `l3_interface_ipv6_prefix_length` varchar(45) DEFAULT NULL,
+ `vlan_id_inner` varchar(45) DEFAULT NULL,
+ `vlan_id_outer` varchar(45) DEFAULT NULL,
+ `is_floating` varchar(1) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv6_address`),
+ KEY `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`,`vlan_interface`),
+ CONSTRAINT `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_PLAN_ID`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_PLAN_ID` (
+ `plan_type` varchar(40) NOT NULL,
+ `purpose` varchar(40) NOT NULL,
+ `vlan_plan_id_count` int(4) NOT NULL,
+ PRIMARY KEY (`vlan_plan_id_count`,`plan_type`,`purpose`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_POOL` (
+ `aic_site_id` varchar(100) NOT NULL,
+ `availability_zone` varchar(100) NOT NULL,
+ `vlan_plan_id` varchar(100) NOT NULL,
+ `plan_type` varchar(40) NOT NULL,
+ `purpose` varchar(40) NOT NULL,
+ `vlan_id` int(4) NOT NULL,
+ `status` varchar(40) NOT NULL,
+ `reserved_id` varchar(80) DEFAULT NULL,
+ PRIMARY KEY (`aic_site_id`,`availability_zone`,`vlan_plan_id`,`plan_type`,`purpose`,`vlan_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VLAN_RANGES`
+--
+
+CREATE TABLE IF NOT EXISTS `VLAN_RANGES` (
+ `vlan_plan_id` varchar(100) NOT NULL,
+ `plan_type` varchar(40) NOT NULL,
+ `purpose` varchar(40) NOT NULL,
+ `range_start` int(4) NOT NULL,
+ `range_end` int(4) NOT NULL,
+ `generated` char(1) DEFAULT NULL,
+ PRIMARY KEY (`vlan_plan_id`,`plan_type`,`purpose`,`range_start`,`range_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VM_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `VM_NAME_INDEX` (
+ `vm_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`vm_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VM_NETWORKS`
+--
+
+CREATE TABLE IF NOT EXISTS `VM_NETWORKS` (
+ `vnf_type` varchar(200) NOT NULL,
+ `vm_type` varchar(45) NOT NULL,
+ `network_role` varchar(45) NOT NULL,
+ `assign_ips` tinyint(1) NOT NULL,
+ `assign_macs` tinyint(1) NOT NULL,
+ `assign_floating_ip` tinyint(1) NOT NULL,
+ `ip_count` int(11) DEFAULT NULL,
+ PRIMARY KEY (`vnf_type`,`vm_type`,`network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VM_PROFILE`
+--
+
+CREATE TABLE IF NOT EXISTS `VM_PROFILE` (
+ `vnf_type` varchar(200) NOT NULL,
+ `vm_type` varchar(45) NOT NULL,
+ `vm_count` int(11) NOT NULL,
+ PRIMARY KEY (`vnf_type`,`vm_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF` (
+ `vnf_id` varchar(80) NOT NULL,
+ `vnf_name` varchar(80) NOT NULL,
+ `vnf_type` varchar(10) NOT NULL,
+ `orchestration_status` varchar(20) DEFAULT NULL,
+ `heat_stack_id` varchar(80) DEFAULT NULL,
+ `mso_catalog_key` varchar(80) DEFAULT NULL,
+ `availability_zone` varchar(80) DEFAULT NULL,
+ `aic_site_id` varchar(80) DEFAULT NULL,
+ `oam_ipv4_address` varchar(20) DEFAULT NULL,
+ `vnf_name2` varchar(80) DEFAULT NULL,
+ `vpe_id` varchar(80) NOT NULL,
+ `ipv4_loopback0_address` varchar(80) DEFAULT NULL,
+ `license_key` varchar(256) DEFAULT NULL,
+ `entitlement_resource_uuid` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`vnf_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNFC_DG_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VNFC_DG_MAPPING` (
+ `vnfc_dg_mapping_id` int(11) NOT NULL AUTO_INCREMENT,
+ `action` varchar(50) DEFAULT NULL,
+ `api_version` varchar(10) DEFAULT NULL,
+ `vnf_type` varchar(50) DEFAULT NULL,
+ `vnfc_type` varchar(50) DEFAULT NULL,
+ `dg_name` varchar(50) NOT NULL,
+ `dg_version` varchar(50) DEFAULT NULL,
+ `dg_module` varchar(50) NOT NULL,
+ PRIMARY KEY (`vnfc_dg_mapping_id`),
+ UNIQUE KEY `input_constraint` (`action`,`api_version`,`vnf_type`,`vnfc_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNFC_REFERENCE`
+--
+
+CREATE TABLE IF NOT EXISTS `VNFC_REFERENCE` (
+ `vnfc_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+ `action` varchar(50) NOT NULL,
+ `vnf_type` varchar(50) NOT NULL,
+ `vm_instance` int(11) NOT NULL,
+ `vnfc_instance` int(11) NOT NULL,
+ `vnfc_type` varchar(50) NOT NULL,
+ `vnfc_function_code` varchar(50) NOT NULL,
+ `ipaddress_v4_oam_vip` varchar(50) DEFAULT NULL,
+ `group_notation_type` varchar(50) DEFAULT NULL,
+ `group_notation_value` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`vnfc_reference_id`),
+ UNIQUE KEY `vnfc_reference_id` (`vnfc_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_IMAGE`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_IMAGE` (
+ `application_vendor` varchar(255) NOT NULL,
+ `application_version` varchar(255) NOT NULL,
+ `att_uuid` varchar(255) NOT NULL,
+ `application` varchar(255) DEFAULT NULL,
+ `selflink` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`application_vendor`,`application_version`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_MODEL_LICENSES`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_MODEL_LICENSES` (
+ `att_part_number` varchar(255) NOT NULL,
+ `license_assignment_group` varchar(255) NOT NULL,
+ `license_required` tinyint(1) DEFAULT NULL,
+ `entitlement_assignment_group` varchar(255) DEFAULT NULL,
+ `entitlement_required` tinyint(1) DEFAULT '0',
+ `feature_group_uuid` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`att_part_number`,`license_assignment_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_MODEL_LICENSE_FEATURES`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_MODEL_LICENSE_FEATURES` (
+ `att_part_number` varchar(255) NOT NULL,
+ `license_assignment_group` varchar(255) NOT NULL,
+ `feature` varchar(255) NOT NULL,
+ PRIMARY KEY (`att_part_number`,`license_assignment_group`,`feature`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_NAME_INDEX`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_NAME_INDEX` (
+ `vnf_name_prefix` varchar(255) NOT NULL,
+ `index_number` int(11) NOT NULL,
+ PRIMARY KEY (`vnf_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_NETWORKS`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_NETWORKS` (
+ `vnf_type` varchar(200) NOT NULL,
+ `network_role` varchar(45) NOT NULL,
+ PRIMARY KEY (`vnf_type`,`network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_NETWORK_CONNECTION`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_NETWORK_CONNECTION` (
+ `connection_uuid` varchar(80) NOT NULL,
+ `vnf_id` varchar(80) NOT NULL,
+ `connection_id` varchar(80) DEFAULT NULL,
+ `connection_type` varchar(20) DEFAULT NULL,
+ `neutron_network_id` varchar(80) DEFAULT NULL,
+ `neutron_network_name` varchar(80) DEFAULT NULL,
+ `orchestration_status` varchar(20) DEFAULT NULL,
+ `switch_id` varchar(40) DEFAULT NULL,
+ `heat_stack_id` varchar(80) DEFAULT NULL,
+ `mso_catalog_key` varchar(80) DEFAULT NULL,
+ `provider_network` varchar(80) DEFAULT NULL,
+ `port_group_id` varchar(80) DEFAULT NULL,
+ `port_group_name` varchar(80) DEFAULT NULL,
+ PRIMARY KEY (`connection_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_NETWORK_CONNECTION_VLAN`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_NETWORK_CONNECTION_VLAN` (
+ `vlan_uuid` varchar(80) NOT NULL,
+ `vlan_id` int(4) NOT NULL,
+ `vlan_type` varchar(5) NOT NULL,
+ `connection_uuid` varchar(80) DEFAULT NULL,
+ PRIMARY KEY (`vlan_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_PROFILE`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_PROFILE` (
+ `vnf_type` varchar(200) NOT NULL,
+ `availability_zone_count` int(11) NOT NULL,
+ `equipment_role` varchar(80) NOT NULL,
+ PRIMARY KEY (`vnf_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VNF_SERVICE_TO_NETWORK_ROLE_FILTER`
+--
+
+CREATE TABLE IF NOT EXISTS `VNF_SERVICE_TO_NETWORK_ROLE_FILTER` (
+ `vnf_service_type` varchar(60) NOT NULL,
+ `network_role_filter` varchar(60) NOT NULL,
+ PRIMARY KEY (`vnf_service_type`,`network_role_filter`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPE_LOCK`
+--
+
+CREATE TABLE IF NOT EXISTS `VPE_LOCK` (
+ `vpe_name` varchar(20) NOT NULL,
+ `vpn_lock` varchar(20) NOT NULL,
+ PRIMARY KEY (`vpe_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPE_MAC_ADDRESS_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `VPE_MAC_ADDRESS_POOL` (
+ `id` int(11) NOT NULL,
+ `mac_address` varchar(50) NOT NULL,
+ `sw_name` varchar(30) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPE_MAC_ADDRESS_TO_HOSTNAME_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VPE_MAC_ADDRESS_TO_HOSTNAME_MAPPING` (
+ `id` int(11) NOT NULL,
+ `hostname` varchar(50) NOT NULL,
+ `assigned_user` varchar(25) NOT NULL,
+ `assigned_date` date DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPE_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `VPE_POOL` (
+ `vpe_name` varchar(20) NOT NULL,
+ `ipv4_oam_address` varchar(20) NOT NULL,
+ `loopback0_ipv4_address` varchar(20) NOT NULL,
+ `provisioning_status` varchar(10) NOT NULL,
+ `aic_site_id` varchar(100) NOT NULL,
+ `availability_zone` varchar(100) NOT NULL,
+ `vlan_id_outer` varchar(20) NOT NULL,
+ `vendor` varchar(20) NOT NULL,
+ `physical_intf_name` varchar(40) NOT NULL,
+ `physical_intf_speed` varchar(20) NOT NULL,
+ `physical_intf_units` varchar(20) NOT NULL,
+ `vpe_uuid` varchar(80) DEFAULT NULL,
+ `vpe_id` varchar(80) NOT NULL,
+ `image_filename` varchar(100) DEFAULT NULL,
+ `as_number` varchar(20) NOT NULL,
+ `loopback5000` varchar(16) DEFAULT NULL,
+ `loopback10` varchar(16) DEFAULT NULL,
+ `aic_version` varchar(50) DEFAULT NULL,
+ `vpe_capacity` int(11) NOT NULL,
+ PRIMARY KEY (`aic_site_id`,`vpe_name`,`availability_zone`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPLSPE_POOL`
+--
+
+CREATE TABLE IF NOT EXISTS `VPLSPE_POOL` (
+ `vplspe_name` varchar(20) NOT NULL,
+ `aic_site_id` varchar(100) NOT NULL,
+ `availability_zone` varchar(100) NOT NULL,
+ `physical_intf_name` varchar(40) NOT NULL,
+ `physical_intf_speed` varchar(20) NOT NULL,
+ `physical_intf_units` varchar(20) NOT NULL,
+ `loopback0_ipv4_address` varchar(20) NOT NULL,
+ `vlan_id_outer` varchar(20) NOT NULL,
+ `vplspe_uuid` varchar(80) DEFAULT NULL,
+ `image_filename` varchar(100) DEFAULT NULL,
+ `provisioning_status` varchar(10) DEFAULT NULL,
+ `vendor` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`vplspe_name`,`aic_site_id`,`availability_zone`,`physical_intf_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VPN_BINDINGS`
+--
+
+CREATE TABLE IF NOT EXISTS `VPN_BINDINGS` (
+ `network_customization_uuid` varchar(255) NOT NULL,
+ `binding_uuid` varchar(255) NOT NULL,
+ PRIMARY KEY (`network_customization_uuid`,`binding_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VRR_FUNCTION_CODE_VMTYPE_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VRR_FUNCTION_CODE_VMTYPE_MAPPING` (
+ `ptnii_function_code` varchar(128) NOT NULL,
+ `vm_type` varchar(128) NOT NULL,
+ PRIMARY KEY (`ptnii_function_code`,`vm_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VSERVER`
+--
+
+CREATE TABLE IF NOT EXISTS `VSERVER` (
+ `tenant_id` varchar(40) NOT NULL,
+ `vserver_id` varchar(40) NOT NULL,
+ `aic_site_id` varchar(100) NOT NULL,
+ `vendor` varchar(20) NOT NULL,
+ `image_name` varchar(100) NOT NULL,
+ `vnf_type` varchar(10) NOT NULL,
+ `vnf_id` varchar(80) NOT NULL,
+ PRIMARY KEY (`tenant_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VSERVER2`
+--
+
+CREATE TABLE IF NOT EXISTS `VSERVER2` (
+ `tenant_id` varchar(255) NOT NULL,
+ `vserver_id` varchar(128) NOT NULL,
+ `vserver_name` varchar(255) NOT NULL,
+ `vserver_name2` varchar(255) DEFAULT NULL,
+ `prov_status` varchar(20) DEFAULT NULL,
+ `selflink` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`tenant_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VSERVER_PSERVER`
+--
+
+CREATE TABLE IF NOT EXISTS `VSERVER_PSERVER` (
+ `vserver_id` varchar(128) NOT NULL,
+ `pserver_hostname` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `VVIG_VM_INSTANCE_TO_CLOUD_REGION_MAPPING`
+--
+
+CREATE TABLE IF NOT EXISTS `VVIG_VM_INSTANCE_TO_CLOUD_REGION_MAPPING` (
+ `key_id` varchar(128) NOT NULL,
+ `cloud_region` varchar(128) NOT NULL,
+ `key_type` varchar(128) NOT NULL,
+ PRIMARY KEY (`key_id`,`cloud_region`,`key_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `WAN_COMBO_ALLOWABLE`
+--
+
+CREATE TABLE IF NOT EXISTS `WAN_COMBO_ALLOWABLE` (
+ `combo_sequence` int(11) NOT NULL AUTO_INCREMENT,
+ `topology` varchar(16) DEFAULT 'unknown',
+ `internet_topology` varchar(20) DEFAULT NULL,
+ `wan1` varchar(40) DEFAULT NULL,
+ `wan2` varchar(40) DEFAULT NULL,
+ `new_start_release_flexware` varchar(16) DEFAULT 'unknown',
+ `is_active_flexware` varchar(1) DEFAULT 'N',
+ `new_start_release_dhv` varchar(16) DEFAULT 'unknown',
+ `is_active_dhv` varchar(1) DEFAULT 'N',
+ `ucpe_type` varchar(32) DEFAULT 'stand-alone',
+ `description` varchar(128) NOT NULL,
+ PRIMARY KEY (`combo_sequence`),
+ UNIQUE KEY `IX1_WAN_COMBO_ALLOWABLE` (`internet_topology`,`wan1`,`wan2`)
+) ENGINE=InnoDB AUTO_INCREMENT=147 DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `DHCP_MAP` (
+ `mac_addr` varchar(128) NOT NULL,
+ `ip_addr` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`mac_addr`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_GROUP_TO_TARGET_NODE_MAPPING` (
+ `group_uuid` varchar(255) NOT NULL,
+ `parent_uuid` varchar(255) NOT NULL,
+ `target_node_uuid` varchar(255) NOT NULL,
+ `target_type` varchar(255) NULL,
+ `table_name` varchar(255) NULL,
+ PRIMARY KEY (`group_uuid`, `parent_uuid`, `target_node_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+
+CREATE TABLE IF NOT EXISTS `ATTRIBUTE_VALUE_PAIR` (
+ `resource_uuid` varchar(255) NOT NULL,
+ `attribute_name` varchar(255) NOT NULL,
+ `resource_type` varchar(255) NOT NULL,
+ `attribute_value` varchar(255) DEFAULT NULL,
+ `resource_customization_uuid` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`resource_uuid`,`attribute_name`,`resource_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `COMPLEX_RESOURCE` (
+ `uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob,
+ `invariant_uuid` varchar(255) NOT NULL,
+ `customization_uuid` varchar(255) NOT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(255) DEFAULT NULL,
+ `type` varchar(255) NOT NULL,
+ PRIMARY KEY (`uuid`,`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `NODE_CAPABILITY` (
+ `capability_id` int(11) NOT NULL AUTO_INCREMENT,
+ `capability_provider_uuid` varchar(255) NOT NULL,
+ `capability_provider_customization_uuid` varchar(255) NOT NULL,
+ `capability_name` varchar(255) DEFAULT NULL,
+ `capability_type` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`capability_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `NODE_REQUIREMENT` (
+ `requirement_id` int(11) NOT NULL AUTO_INCREMENT,
+ `capability_id` int(11) DEFAULT NULL,
+ `capability_provider_uuid` varchar(255) DEFAULT NULL,
+ `capability_provider_customization_uuid` varchar(255) DEFAULT NULL,
+ `capability_consumer_uuid` varchar(255) NOT NULL,
+ `capability_consumer_customization_uuid` varchar(255) NOT NULL,
+ `requirement_name` varchar(255) NOT NULL,
+ PRIMARY KEY (`requirement_id`),
+ KEY `NODE_REQUIREMENT_TO_NODE_CAPABILITY` (`capability_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `RELATED_NETWORK_ROLE` (
+ `network_model_customization_uuid` varchar(255) NOT NULL,
+ `related_network_role` varchar(255) NOT NULL,
+ PRIMARY KEY (`network_model_customization_uuid`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_GROUP` (
+ `resource_uuid` varchar(255) NOT NULL,
+ `group_uuid` varchar(255) NOT NULL,
+ `group_customization_uuid` varchar(255) DEFAULT NULL,
+ `group_invariant_uuid` varchar(255) NOT NULL,
+ `group_name` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `group_type` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`resource_uuid`,`group_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_POLICY` (
+ `resource_uuid` varchar(255) NOT NULL,
+ `policy_uuid` varchar(255) NOT NULL,
+ `policy_customization_uuid` varchar(255) DEFAULT NULL,
+ `policy_invariant_uuid` varchar(255) NOT NULL,
+ `policy_name` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ `policy_type` varchar(255) DEFAULT NULL,
+ `property_type` varchar(255) DEFAULT NULL,
+ `property_source` varchar(255) DEFAULT NULL,
+ `property_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`resource_uuid`,`policy_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `RESOURCE_POLICY_TO_TARGET_NODE_MAPPING` (
+ `policy_uuid` varchar(255) NOT NULL,
+ `parent_uuid` varchar(255) NOT NULL,
+ `target_node_uuid` varchar(255) NOT NULL,
+ `target_type` varchar(255) DEFAULT NULL,
+ `target_node_customization_uuid` varchar(255) DEFAULT NULL,
+ `policy_customization_uuid` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`policy_uuid`,`parent_uuid`,`target_node_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+CREATE TABLE IF NOT EXISTS `SERVICE_MODEL_TO_COMPLEX_RESOURCE_MAPPING` (
+ `service_uuid` varchar(255) NOT NULL,
+ `complex_resource_uuid` varchar(255) NOT NULL,
+ `complex_resource_customization_uuid` varchar(255) NOT NULL,
+ PRIMARY KEY (`service_uuid`,`complex_resource_uuid`,`complex_resource_customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `VFC_RELATED_NETWORK_ROLE` (
+ `vfc_customization_uuid` varchar(255) NOT NULL,
+ `vm_type` varchar(255) NOT NULL,
+ `network_role` varchar(255) NOT NULL,
+ `related_network_role` varchar(255) NOT NULL,
+ PRIMARY KEY (`vfc_customization_uuid`,`vm_type`,`network_role`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `VNF_RELATED_NETWORK_ROLE` (
+ `vnf_customization_uuid` varchar(255) NOT NULL,
+ `network_role` varchar(255) NOT NULL,
+ `related_network_role` varchar(255) NOT NULL,
+ PRIMARY KEY (`vnf_customization_uuid`,`network_role`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE CONFIG_GRA_SERVICES (
+ svcInstanceId varchar(255) not null,
+ serviceStatusAction varchar(255),
+ serviceStatusFinalIndicator varchar(255),
+ serviceStatusRequestStatus varchar(255),
+ serviceStatusResponseCode varchar(255),
+ serviceStatusResponseMessage varchar(255),
+ serviceStatusResponseTimestamp varchar(255),
+ serviceStatusRpcAction varchar(255),
+ serviceStatusRpcName varchar(255),
+ svcData longtext, primary key (svcInstanceId)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE OPERATIONAL_GRA_SERVICES (
+ svcInstanceId varchar(255) not null,
+ serviceStatusAction varchar(255),
+ serviceStatusFinalIndicator varchar(255),
+ serviceStatusRequestStatus varchar(255),
+ serviceStatusResponseCode varchar(255),
+ serviceStatusResponseMessage varchar(255),
+ serviceStatusResponseTimestamp varchar(255),
+ serviceStatusRpcAction varchar(255),
+ serviceStatusRpcName varchar(255),
+ svcData longtext,
+ primary key (svcInstanceId)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE CONFIG_GRA_PORT_MIRROR_CONFIGURATIONS (
+ configurationId varchar(255) not null,
+ portMirrorConfigurationStatusAction varchar(255),
+ portMirrorConfigurationStatusFinalIndicator varchar(255),
+ portMirrorConfigurationStatusRequestStatus varchar(255),
+ portMirrorConfigurationStatusResponseCode varchar(255),
+ portMirrorConfigurationStatusResponseMessage varchar(255),
+ portMirrorConfigurationStatusResponseTimestamp varchar(255),
+ portMirrorConfigurationStatusRpcAction varchar(255),
+ portMirrorConfigurationStatusRpcName varchar(255),
+ pmcData longtext, primary key (configurationId)
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE OPERATIONAL_GRA_PORT_MIRROR_CONFIGURATIONS (
+ configurationId varchar(255) not null,
+ portMirrorConfigurationStatusAction varchar(255),
+ portMirrorConfigurationStatusFinalIndicator varchar(255),
+ portMirrorConfigurationStatusRequestStatus varchar(255),
+ portMirrorConfigurationStatusResponseCode varchar(255),
+ portMirrorConfigurationStatusResponseMessage varchar(255),
+ portMirrorConfigurationStatusResponseTimestamp varchar(255),
+ portMirrorConfigurationStatusRpcAction varchar(255),
+ portMirrorConfigurationStatusRpcName varchar(255),
+ pmcData longtext,
+ primary key (configurationId)
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE CONFIG_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES (
+ allottedResourceId varchar(255) not null,
+ allottedResourceStatusAction varchar(255),
+ allottedResourceStatusFinalIndicator varchar(255),
+ allottedResourceStatusRequestStatus varchar(255),
+ allottedResourceStatusResponseCode varchar(255),
+ allottedResourceStatusResponseMessage varchar(255),
+ allottedResourceStatusResponseTimestamp varchar(255),
+ allottedResourceStatusRpcAction varchar(255),
+ allottedResourceStatusRpcName varchar(255),
+ arData longtext, primary key (allottedResourceId)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE OPERATIONAL_GRA_CONTRAIL_ROUTE_ALLOTTED_RESOURCES (
+ allottedResourceId varchar(255) not null,
+ allottedResourceStatusAction varchar(255),
+ allottedResourceStatusFinalIndicator varchar(255),
+ allottedResourceStatusRequestStatus varchar(255),
+ allottedResourceStatusResponseCode varchar(255),
+ allottedResourceStatusResponseMessage varchar(255),
+ allottedResourceStatusResponseTimestamp varchar(255),
+ allottedResourceStatusRpcAction varchar(255),
+ allottedResourceStatusRpcName varchar(255),
+ arData longtext,
+ primary key (allottedResourceId)
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
diff --git a/ms/gra/gra-docker/src/main/resources/startGra.sh b/ms/gra/gra-docker/src/main/resources/startGra.sh
new file mode 100644
index 0000000..6bca0e0
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/startGra.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDNC
+# ================================================================================
+# Copyright (C) 2020 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+export SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+export GRA_JAR=${GRA_JAR:-@sdnc.gra.jar@}
+export SVCLOGIC_DIR=${SVCLOGIC_DIR:-opt/onap/sdnc/svclogic/graphs}
+export LOG_PATH=${LOG_PATH:-/var/log/onap/sdnc}
+export SDNC_CONFIG_DIR=${SDNC_CONFIG_DIR:-/opt/onap/sdnc/config}
+export MYSQL_DB_HOST=${MYSQL_DB_HOST:-dbhost}
+export SVCLOGIC_PROPERTIES=${SVCLOGIC_PROPERTIES:-${SDNC_CONFIG_DIR}/svclogic.properties}
+
+cd $SDNC_HOME
+
+ echo "Waiting for mysql"
+ until mysql -h ${MYSQL_DB_HOST} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} &> /dev/null
+ do
+ printf "."
+ sleep 1
+ done
+ echo -e "\nmysql ready"
+
+java -DserviceLogicDirectory=${SVCLOGIC_DIR} -DLOG_PATH=${LOG_PATH} -jar ${SDNC_HOME}/lib/${GRA_JAR}
diff --git a/ms/gra/gra-docker/src/main/resources/svclogic.properties b/ms/gra/gra-docker/src/main/resources/svclogic.properties
new file mode 100644
index 0000000..8e49400
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/svclogic.properties
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : CCSDK
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.dbtype = jdbc
+org.onap.ccsdk.sli.jdbc.url=jdbc:mariadb://dbhost:3306/${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database = ${MYSQL_DATABASE}
+org.onap.ccsdk.sli.jdbc.user = ${MYSQL_USER}
+org.onap.ccsdk.sli.jdbc.password = ${MYSQL_PASSWORD}
+
+sliapi.serviceLogicDirectory=/opt/onap/sdnc/svclogic/graphs
diff --git a/ms/gra/gra-docker/src/main/resources/truststoreONAPall.jks b/ms/gra/gra-docker/src/main/resources/truststoreONAPall.jks
new file mode 100644
index 0000000..ff844b1
--- /dev/null
+++ b/ms/gra/gra-docker/src/main/resources/truststoreONAPall.jks
Binary files differ
diff --git a/ms/gra/pom.xml b/ms/gra/pom.xml
new file mode 100644
index 0000000..8a421db
--- /dev/null
+++ b/ms/gra/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * ============LICENSE_START=======================================================
+ * ONAP : CCSDK.apps
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.sdnc.apps</groupId>
+ <artifactId>sdnc-apps-ms</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>gra</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>sdnc-apps :: ms :: ${project.artifactId}</name>
+ <description>Generic Resource API microservice</description>
+
+ <properties>
+ <aaf.cadi.version>2.1.21</aaf.cadi.version>
+ <ccsdk.apps.version>1.2.0-SNAPSHOT</ccsdk.apps.version>
+ <ccsdk.docker.version>1.1-STAGING-latest</ccsdk.docker.version>
+ <sdnc.northbound.version>2.2.0-SNAPSHOT</sdnc.northbound.version>
+ <sdnc.oam.version>2.2.0-SNAPSHOT</sdnc.oam.version>
+ <gratest.mysql.database>testdb</gratest.mysql.database>
+ <gratest.mysql.root.password>itsASecret</gratest.mysql.root.password>
+ <gratest.mysql.user>testdb</gratest.mysql.user>
+ <gratest.mysql.password>test123</gratest.mysql.password>
+ </properties>
+
+ <modules>
+ <module>gra-app</module>
+ <module>gra-docker</module>
+ </modules>
+</project>