aboutsummaryrefslogtreecommitdiffstats
path: root/asdc-controller
diff options
context:
space:
mode:
authorsarada prasad sahoo <sarada.prasad.sahoo@huawei.com>2019-10-07 12:34:49 +0530
committersarada prasad sahoo <sarada.prasad.sahoo@huawei.com>2019-10-07 12:34:49 +0530
commit6392515d91c00df8cb925ec9e99273a2f9e4744f (patch)
tree7877fd63f456ddfc7e23d64a89138c0d3d02f64e /asdc-controller
parent6f8ed4f558226640d00b2069ae3e8d254364f80a (diff)
SO Distribution Error on Allotted Resource
SO Distribution Error on Allotted Resource - duplicate primary Issue-ID: SO-2351 Signed-off-by: sarada prasad sahoo <sarada.prasad.sahoo@huawei.com> Change-Id: Iae7bda27ac4975b5ede657ac485472bbc6e88c56
Diffstat (limited to 'asdc-controller')
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java4
-rw-r--r--asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java24
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.env27
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.yaml243
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/demo-vcpe-rescust-notification.json108
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csarbin0 -> 84583 bytes
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-template.yml822
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vcpe_vgwbf175ab04fa20_modules.json25
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vendor-license-model.xml1
-rw-r--r--asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vf-license-model.xml1
10 files changed, 1254 insertions, 1 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
index b2dbcb4639..d96a82c77f 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
@@ -706,7 +706,9 @@ public class ToscaResourceInstaller {
if (!"{}".equals(resourceInput)) {
allottedResource.setResourceInput(resourceInput);
}
- service.getAllottedCustomizations().add(allottedResource);
+ if (!service.getAllottedCustomizations().contains(allottedResource)) {
+ service.getAllottedCustomizations().add(allottedResource);
+ }
}
}
}
diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java
index 7171fff812..9294677b95 100644
--- a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java
+++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java
@@ -366,6 +366,30 @@ public class ASDCRestInterfaceTest extends BaseTest {
assertEquals("PublicNS", service.get().getModelName());
}
+ @Test
+ public void test_Vcperescust_Distribution() throws Exception {
+ wireMockServer.stubFor(post(urlPathMatching("/aai/.*"))
+ .willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json")));
+
+ wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec"))
+ .willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.ACCEPTED.value())));
+
+ String resourceLocation = "src/test/resources/resource-examples/vcpe-rescust/";
+ ObjectMapper mapper = new ObjectMapper();
+ NotificationDataImpl request = mapper.readValue(
+ new File(resourceLocation + "demo-vcpe-rescust-notification.json"), NotificationDataImpl.class);
+ headers.add("resource-location", resourceLocation);
+ HttpEntity<NotificationDataImpl> entity = new HttpEntity<NotificationDataImpl>(request, headers);
+ ResponseEntity<String> response = restTemplate.exchange(createURLWithPort("test/treatNotification/v1"),
+ HttpMethod.POST, entity, String.class);
+ assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
+
+ Optional<Service> service = serviceRepo.findById("d3aac917-543d-4421-b6d7-ba2b65884eb7");
+ assertTrue(service.isPresent());
+ assertEquals("vCPEResCust 2019-10-01 _2364", service.get().getModelName());
+ }
+
protected String createURLWithPort(String uri) {
return "http://localhost:" + port + uri;
}
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.env b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.env
new file mode 100644
index 0000000000..5cdbc9b882
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.env
@@ -0,0 +1,27 @@
+parameters:
+ cloud_env: "PUT THE CLOUD PROVIDED HERE (openstack or rackspace)"
+ cpe_public_net_cidr: "10.2.0.0/24"
+ cpe_public_net_id: "zdfw1cpe01_public"
+ cpe_public_subnet_id: "zdfw1cpe01_sub_public"
+ dcae_collector_ip: "10.0.4.1"
+ dcae_collector_port: "8081"
+ key_name: "vgw_key"
+ mux_gw_private_net_cidr: "10.5.0.0/24"
+ mux_gw_private_net_id: "zdfw1muxgw01_private"
+ mux_gw_private_subnet_id: "zdfw1muxgw01_sub_private"
+ mux_ip_addr: "10.5.0.20"
+ nexus_artifact_repo: "https://nexus.onap.org"
+ onap_private_net_cidr: "10.0.0.0/16"
+ onap_private_net_id: "PUT THE ONAP PRIVATE NETWORK NAME HERE"
+ onap_private_subnet_id: "PUT THE ONAP PRIVATE SUBNETWORK NAME HERE"
+ pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN"
+ public_net_id: "PUT THE PUBLIC NETWORK ID HERE"
+ script_version: "1.5.0-SNAPSHOT"
+ vcpe_flavor_name: "PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)"
+ vcpe_image_name: "PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)"
+ vf_module_id: "vCPE_Customer_GW"
+ vg_vgmux_tunnel_vni: 100
+ vgw_name_0: "zdcpe1cpe01gw01"
+ vgw_private_ip_0: "10.5.0.21"
+ vgw_private_ip_1: "10.0.101.30"
+ vnf_id: "vCPE_Infrastructure_GW_demo_app"
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.yaml b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.yaml
new file mode 100644
index 0000000000..74fa490b23
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.yaml
@@ -0,0 +1,243 @@
+##########################################################################
+#
+#==================LICENSE_START==========================================
+#
+#
+# Copyright 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============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+##########################################################################
+
+heat_template_version: 2013-05-23
+
+description: Heat template to deploy vCPE vGateway (vG)
+
+##############
+# #
+# PARAMETERS #
+# #
+##############
+
+parameters:
+ vcpe_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ vcpe_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ public_net_id:
+ type: string
+ label: Public network name or ID
+ description: Public network that enables remote connection to VNF
+ mux_gw_private_net_id:
+ type: string
+ label: vGMUX private network name or ID
+ description: Private network that connects vGMUX to vGWs
+ mux_gw_private_subnet_id:
+ type: string
+ label: vGMUX private sub-network name or ID
+ description: vGMUX private sub-network name or ID
+ mux_gw_private_net_cidr:
+ type: string
+ label: vGMUX private network CIDR
+ description: The CIDR of the vGMUX private network
+ onap_private_net_id:
+ type: string
+ label: ONAP management network name or ID
+ description: Private network that connects ONAP components and the VNF
+ onap_private_subnet_id:
+ type: string
+ label: ONAP management sub-network name or ID
+ description: Private sub-network that connects ONAP components and the VNF
+ onap_private_net_cidr:
+ type: string
+ label: ONAP private network CIDR
+ description: The CIDR of the protected private network
+ cpe_public_net_id:
+ type: string
+ label: vCPE network that emulates internetmanagement name or ID
+ description: Private network that connects vGW to emulated internet
+ cpe_public_subnet_id:
+ type: string
+ label: vCPE Public subnet
+ description: vCPE Public subnet
+ cpe_public_net_cidr:
+ type: string
+ label: vCPE public network CIDR
+ description: The CIDR of the vCPE public
+ vgw_private_ip_0:
+ type: string
+ label: vGW private IP address towards the vGMUX
+ description: Private IP address that is assigned to the vGW to communicate with vGMUX
+ vgw_private_ip_1:
+ type: string
+ label: vGW private IP address towards the ONAP management network
+ description: Private IP address that is assigned to the vGW to communicate with ONAP components
+ ## VPP will use DHCP to get the vgw_private_ip_2 on the CPE_PUBLIC subnet
+ #vgw_private_ip_2:
+ # type: string
+ # label: vGW private IP address towards the vCPE public network
+ # description: Private IP address that is assigned to the vGW to communicate with vCPE public network
+ vgw_name_0:
+ type: string
+ label: vGW name
+ description: Name of the vGW
+ vnf_id:
+ type: string
+ label: VNF ID
+ description: The VNF ID is provided by ONAP
+ vf_module_id:
+ type: string
+ label: vCPE module ID
+ description: The vCPE Module ID is provided by ONAP
+ dcae_collector_ip:
+ type: string
+ label: DCAE collector IP address
+ description: IP address of the DCAE collector
+ dcae_collector_port:
+ type: string
+ label: DCAE collector port
+ description: Port of the DCAE collector
+ key_name:
+ type: string
+ label: Key pair name
+ description: Public/Private key pair name
+ pub_key:
+ type: string
+ label: Public key
+ description: Public key to be installed on the compute instance
+ script_version:
+ type: string
+ label: Script version number
+ description: Version number of the scripts that install the vGW
+ nexus_artifact_repo:
+ type: string
+ description: Root URL for the Nexus repository for Maven artifacts.
+ default: "https://nexus.onap.org"
+ cloud_env:
+ type: string
+ label: Cloud environment
+ description: Cloud environment (e.g., openstack, rackspace)
+ mux_ip_addr:
+ type: string
+ label: vGMUX IP address
+ description: IP address of vGMUX
+ vg_vgmux_tunnel_vni:
+ type: number
+ label: vG-vGMUX tunnel vni
+ description: vni value of vG-vGMUX vxlan tunnel
+
+#############
+# #
+# RESOURCES #
+# #
+#############
+
+resources:
+
+ random-str:
+ type: OS::Heat::RandomString
+ properties:
+ length: 4
+
+ my_keypair:
+ type: OS::Nova::KeyPair
+ properties:
+ name:
+ str_replace:
+ template: base_rand
+ params:
+ base: { get_param: key_name }
+ rand: { get_resource: random-str }
+ public_key: { get_param: pub_key }
+ save_private_key: false
+
+ # Virtual GW Instantiation
+ vgw_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: mux_gw_private_net_id }
+ fixed_ips: [{"subnet": { get_param: mux_gw_private_subnet_id }, "ip_address": { get_param: vgw_private_ip_0 }}]
+
+ vgw_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: onap_private_net_id }
+ fixed_ips: [{"subnet": { get_param: onap_private_subnet_id }, "ip_address": { get_param: vgw_private_ip_1 }}]
+
+ vgw_private_2_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: cpe_public_net_id}
+ fixed_ips: [{"subnet": { get_param: cpe_public_subnet_id }}]
+ ##fixed_ips: [{"subnet": { get_param: cpe_public_subnet_id }, "ip_address": { get_param: vgw_private_ip_2 }}]
+
+ vgw_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vcpe_image_name }
+ flavor: { get_param: vcpe_flavor_name }
+ name: { get_param: vgw_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vgw_private_0_port }
+ - port: { get_resource: vgw_private_1_port }
+ - port: { get_resource: vgw_private_2_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __mux_gw_private_net_ipaddr__ : { get_param: vgw_private_ip_0 }
+ __oam_ipaddr__ : { get_param: vgw_private_ip_1 }
+ __oam_cidr__ : { get_param: onap_private_net_cidr }
+ __cpe_public_net_cidr__ : { get_param: cpe_public_net_cidr }
+ __mux_gw_private_net_cidr__ : { get_param: mux_gw_private_net_cidr }
+ __script_version__ : { get_param: script_version }
+ __cloud_env__ : { get_param: cloud_env }
+ __mux_ip_addr__: { get_param: mux_ip_addr }
+ __vg_vgmux_tunnel_vni__: { get_param: vg_vgmux_tunnel_vni }
+ __nexus_artifact_repo__: { get_param: nexus_artifact_repo }
+ template: |
+ #!/bin/bash
+
+ # Create configuration files
+ mkdir /opt/config
+ echo "__oam_ipaddr__" > /opt/config/oam_ipaddr.txt
+ echo "__oam_cidr__" > /opt/config/oam_cidr.txt
+ echo "__cpe_public_net_cidr__" > /opt/config/cpe_public_net_cidr.txt
+ echo "__mux_gw_private_net_ipaddr__" > /opt/config/mux_gw_private_net_ipaddr.txt
+ echo "__mux_gw_private_net_cidr__" > /opt/config/mux_gw_private_net_cidr.txt
+ echo "__script_version__" > /opt/config/script_version.txt
+ echo "__cloud_env__" > /opt/config/cloud_env.txt
+ echo "__mux_ip_addr__" > /opt/config/mux_ip_addr.txt
+ echo "__vg_vgmux_tunnel_vni__" > /opt/config/vg_vgmux_tunnel_vni.txt
+ echo "__nexus_artifact_repo__" > /opt/config/nexus_artifact_repo.txt
+
+ # Download and run install script
+ apt-get update
+ apt-get -y install unzip
+ if [[ "__script_version__" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi
+ curl -k -L "__nexus_artifact_repo__/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=__script_version__" -o /opt/vcpe-scripts-__script_version__.zip
+ unzip -j /opt/vcpe-scripts-__script_version__.zip -d /opt v_gw_install.sh
+ cd /opt
+ chmod +x v_gw_install.sh
+ ./v_gw_install.sh
+
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/demo-vcpe-rescust-notification.json b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/demo-vcpe-rescust-notification.json
new file mode 100644
index 0000000000..f4f4fcc0de
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/demo-vcpe-rescust-notification.json
@@ -0,0 +1,108 @@
+{
+ "distributionID": "5ea97d50-9e1d-4b2c-aa47-2523e35e2120",
+ "serviceName": "vCPEResCust 2019-10-01 _2364",
+ "serviceVersion": "1.0",
+ "serviceUUID": "d3aac917-543d-4421-b6d7-ba2b65884eb7",
+ "serviceDescription": "catalog service description",
+ "serviceInvariantUUID": "d0568a10-a0e0-4efa-b698-ad3772f2e30f",
+ "resources": [{
+ "resourceInstanceName": "TunnelXConn_2019-10-01 03:23:27.409 0",
+ "resourceName": "TunnelXConn_2019-10-01 03:23:27.409",
+ "resourceVersion": "1.0",
+ "resoucreType": "VF",
+ "resourceUUID": "629f9662-55bb-430c-8f22-5204c37c9898",
+ "resourceInvariantUUID": "3a367ac8-5dff-4325-a0e7-9e0299d22152",
+ "resourceCustomizationUUID": "4e0249f0-5118-4323-b5e9-0783ad1123ba",
+ "category": "Allotted Resource",
+ "subcategory": "TunnelXConn",
+ "artifacts": []
+ }, {
+ "resourceInstanceName": "BRG_2019-10-01 03:23:27.409 0",
+ "resourceName": "BRG_2019-10-01 03:23:27.409",
+ "resourceVersion": "1.0",
+ "resoucreType": "VF",
+ "resourceUUID": "abafad1c-47fc-4d30-a079-be14871f0c6a",
+ "resourceInvariantUUID": "05a482b5-ec0d-45cb-ae95-397ce6765c9e",
+ "resourceCustomizationUUID": "aff592e4-cfc7-43ce-abea-f026b56995ab",
+ "category": "Allotted Resource",
+ "subcategory": "BRG",
+ "artifacts": []
+ }, {
+ "resourceInstanceName": "vCPE_vgw bf175ab0-4fa2 0",
+ "resourceName": "vCPE_vgw bf175ab0-4fa2",
+ "resourceVersion": "1.0",
+ "resoucreType": "VF",
+ "resourceUUID": "df1ce337-78b2-4e43-afb8-081d5ca175fc",
+ "resourceInvariantUUID": "1d2b0362-af54-43b9-9a5b-2dba408742b2",
+ "resourceCustomizationUUID": "6f2c39b3-d14f-4575-97b3-c93a7620591e",
+ "category": "Generic",
+ "subcategory": "Abstract",
+ "artifacts": [{
+ "artifactName": "vf-license-model.xml",
+ "artifactType": "VF_LICENSE",
+ "artifactURL": "/vf-license-model.xml",
+ "artifactChecksum": "YjBlNjhjNGU0ZjZkYzUwYjlhODg2NDMzZjk0MGNjMzM\u003d",
+ "artifactDescription": "VF license file",
+ "artifactTimeout": 120,
+ "artifactUUID": "2f362774-ac17-48a9-9c93-632b661ea689",
+ "artifactVersion": "1"
+ }, {
+ "artifactName": "vcpe_vgwbf175ab04fa20_modules.json",
+ "artifactType": "VF_MODULES_METADATA",
+ "artifactURL": "/vcpe_vgwbf175ab04fa20_modules.json",
+ "artifactChecksum": "NTg2NjQxOWNkNmNjY2EzY2M3ZGJjM2YyOTI2ZjlkNzU\u003d",
+ "artifactDescription": "Auto-generated VF Modules information artifact",
+ "artifactTimeout": 120,
+ "artifactUUID": "b02ab2a2-a657-44c4-ae88-578fe0caa30d",
+ "artifactVersion": "1"
+ }, {
+ "artifactName": "base_vcpe_vgw.yaml",
+ "artifactType": "HEAT",
+ "artifactURL": "/base_vcpe_vgw.yaml",
+ "artifactChecksum": "OTI1ODIwZTFhMjc3ZDVhYWU4ZjJjMTEzZGZiZTY4Zjg\u003d",
+ "artifactDescription": "created from csar",
+ "artifactTimeout": 120,
+ "artifactUUID": "e3a33b76-1f8a-44ba-808b-8a4c79e4b44a",
+ "artifactVersion": "2"
+ }, {
+ "artifactName": "vendor-license-model.xml",
+ "artifactType": "VENDOR_LICENSE",
+ "artifactURL": "/vendor-license-model.xml",
+ "artifactChecksum": "YThkMTY5ZWU5MDg5YmI5MWNiY2M5OTg1MTdjMzQzNWM\u003d",
+ "artifactDescription": " Vendor license file",
+ "artifactTimeout": 120,
+ "artifactUUID": "3eae4c31-394f-497b-83e9-110e87e40964",
+ "artifactVersion": "1"
+ }, {
+ "artifactName": "base_vcpe_vgw.env",
+ "artifactType": "HEAT_ENV",
+ "artifactURL": "/base_vcpe_vgw.env",
+ "artifactChecksum": "MTY4ZDUxYTUwNjExN2JhZjQzNGE5ZWQ3MGUxM2IyYWM\u003d",
+ "artifactDescription": "Auto-generated HEAT Environment deployment artifact",
+ "artifactTimeout": 120,
+ "artifactUUID": "9b73763b-0f60-47c3-8939-cf2f819bc75a",
+ "artifactVersion": "2",
+ "generatedFromUUID": "e3a33b76-1f8a-44ba-808b-8a4c79e4b44a"
+ }]
+ }],
+ "serviceArtifacts": [{
+ "artifactName": "service-Vcperescust201910012364-template.yml",
+ "artifactType": "TOSCA_TEMPLATE",
+ "artifactURL": "/service-Vcperescust201910012364-template.yml",
+ "artifactChecksum": "ZDRmZTZkNTkyNTBhMjM1Nzk1NzBiMjdkYmVjMWJiZjI\u003d",
+ "artifactDescription": "TOSCA representation of the asset",
+ "artifactTimeout": 0,
+ "artifactUUID": "50f4eed5-3330-46c3-89e8-a56d2de4354b",
+ "artifactVersion": "1"
+ }, {
+ "artifactName": "service-Vcperescust201910012364-csar.csar",
+ "artifactType": "TOSCA_CSAR",
+ "artifactURL": "/service-Vcperescust201910012364-csar.csar",
+ "artifactChecksum": "ZDlmMTMyYjVjZmMxNmQ1MDM2NmIyN2ZlYWUzNjM5ODU\u003d",
+ "artifactDescription": "TOSCA definition package of the asset",
+ "artifactTimeout": 0,
+ "artifactUUID": "2da4976c-1532-4b1e-b662-d80f487d1661",
+ "artifactVersion": "1"
+ }],
+ "workloadContext": "Production"
+} \ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csar b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csar
new file mode 100644
index 0000000000..29d2d72bf1
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csar
Binary files differ
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-template.yml b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-template.yml
new file mode 100644
index 0000000000..1fe6117f59
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-template.yml
@@ -0,0 +1,822 @@
+tosca_definitions_version: tosca_simple_yaml_1_1
+metadata:
+ invariantUUID: d0568a10-a0e0-4efa-b698-ad3772f2e30f
+ UUID: d3aac917-543d-4421-b6d7-ba2b65884eb7
+ name: vCPEResCust 2019-10-01 _2364
+ description: catalog service description
+ type: Service
+ category: Network L1-3
+ serviceType: ''
+ serviceRole: ''
+ instantiationType: A-la-carte
+ serviceEcompNaming: true
+ ecompGeneratedNaming: true
+ namingPolicy: ''
+ environmentContext: General_Revenue-Bearing
+imports:
+- nodes:
+ file: nodes.yml
+- datatypes:
+ file: data.yml
+- capabilities:
+ file: capabilities.yml
+- relationships:
+ file: relationships.yml
+- groups:
+ file: groups.yml
+- policies:
+ file: policies.yml
+- annotations:
+ file: annotations.yml
+- service-vCPEResCust 2019-10-01 _2364-interface:
+ file: service-Vcperescust201910012364-template-interface.yml
+- resource-TunnelXConn_2019-10-01 03:23:27.409:
+ file: resource-Tunnelxconn20191001032327409-template.yml
+- resource-TunnelXConn_2019-10-01 03:23:27.409-interface:
+ file: resource-Tunnelxconn20191001032327409-template-interface.yml
+- resource-BRG_2019-10-01 03:23:27.409:
+ file: resource-Brg20191001032327409-template.yml
+- resource-BRG_2019-10-01 03:23:27.409-interface:
+ file: resource-Brg20191001032327409-template-interface.yml
+- resource-vCPE_vgw bf175ab0-4fa2:
+ file: resource-VcpeVgwBf175ab04fa2-template.yml
+- resource-vCPE_vgw bf175ab0-4fa2-interface:
+ file: resource-VcpeVgwBf175ab04fa2-template-interface.yml
+topology_template:
+ node_templates:
+ vCPE_vgw bf175ab0-4fa2 0:
+ type: org.openecomp.resource.vf.VcpeVgwBf175ab04fa2
+ metadata:
+ invariantUUID: 1d2b0362-af54-43b9-9a5b-2dba408742b2
+ UUID: d9f21a73-33cb-49b5-9e5c-87c2c7dd93dc
+ customizationUUID: 6f2c39b3-d14f-4575-97b3-c93a7620591e
+ version: '1.0'
+ name: vCPE_vgw bf175ab0-4fa2
+ description: vendor software product
+ type: VF
+ category: Generic
+ subcategory: Abstract
+ resourceVendor: 6dccd115-ce6a-4b1a-88aa
+ resourceVendorRelease: '1.0'
+ resourceVendorModelNumber: ''
+ properties:
+ vf_module_id: vCPE_Customer_GW
+ vcpe_image_name: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)
+ skip_post_instantiation_configuration: true
+ vgw_name_0: zdcpe1cpe01gw01
+ public_net_id: PUT THE PUBLIC NETWORK ID HERE
+ onap_private_subnet_id: PUT THE ONAP PRIVATE SUBNETWORK NAME HERE
+ nexus_artifact_repo: https://nexus.onap.org
+ onap_private_net_cidr: 10.0.0.0/16
+ cpe_public_net_id: zdfw1cpe01_public
+ mux_ip_addr: 10.5.0.20
+ mux_gw_private_net_id: zdfw1muxgw01_private
+ dcae_collector_ip: 10.0.4.1
+ vnf_id: vCPE_Infrastructure_GW_demo_app
+ cpe_public_net_cidr: 10.2.0.0/24
+ vg_vgmux_tunnel_vni: 100.0
+ dcae_collector_port: '8081'
+ mux_gw_private_net_cidr: 10.5.0.0/24
+ mux_gw_private_subnet_id: zdfw1muxgw01_sub_private
+ nf_naming:
+ ecomp_generated_naming: true
+ multi_stage_design: 'false'
+ onap_private_net_id: PUT THE ONAP PRIVATE NETWORK NAME HERE
+ availability_zone_max_count: 1
+ vgw_private_ip_0: 10.5.0.21
+ pub_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN
+ vgw_private_ip_1: 10.0.101.30
+ key_name: vgw_key
+ vcpe_flavor_name: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)
+ script_version: 1.5.0-SNAPSHOT
+ cpe_public_subnet_id: zdfw1cpe01_sub_public
+ cloud_env: PUT THE CLOUD PROVIDED HERE (openstack or rackspace)
+ capabilities:
+ abstract_vgw.network.incoming.packets_vgw_vgw_private_0_port:
+ properties:
+ unit: packet
+ description: Number of incoming packets
+ type: Cumulative
+ category: network
+ abstract_vgw.disk.read.bytes_vgw:
+ properties:
+ unit: B
+ description: Volume of reads
+ type: Cumulative
+ category: compute
+ abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_0_port:
+ properties:
+ unit: B/s
+ description: Average rate of incoming bytes
+ type: Gauge
+ category: network
+ abstract_vgw.disk.read.requests_vgw:
+ properties:
+ unit: request
+ description: Number of read requests
+ type: Cumulative
+ category: compute
+ abstract_vgw.disk.write.bytes_vgw:
+ properties:
+ unit: B
+ description: Volume of writes
+ type: Cumulative
+ category: compute
+ abstract_vgw.disk.capacity_vgw:
+ properties:
+ unit: B
+ description: The amount of disk that the instance can see
+ type: Gauge
+ category: disk
+ abstract_vgw.network.incoming.bytes_vgw_vgw_private_1_port:
+ properties:
+ unit: B
+ description: Number of incoming bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.port_mirroring_vgw_vgw_private_2_port:
+ properties:
+ connection_point:
+ network_role:
+ get_input: port_vgw_private_2_port_network_role
+ nfc_naming_code: vgw
+ abstract_vgw.disk.write.requests_vgw:
+ properties:
+ unit: request
+ description: Number of write requests
+ type: Cumulative
+ category: compute
+ abstract_vgw.disk.device.read.requests.rate_vgw:
+ properties:
+ unit: request/s
+ description: Average rate of read requests
+ type: Gauge
+ category: disk
+ abstract_vgw.port_mirroring_vgw_vgw_private_1_port:
+ properties:
+ connection_point:
+ network_role:
+ get_input: port_vgw_private_1_port_network_role
+ nfc_naming_code: vgw
+ abstract_vgw.network.outpoing.packets_vgw_vgw_private_0_port:
+ properties:
+ unit: packet
+ description: Number of outgoing packets
+ type: Cumulative
+ category: network
+ abstract_vgw.memory.resident_vgw:
+ properties:
+ unit: MB
+ description: Volume of RAM used by the instance on the physical machine
+ type: Gauge
+ category: compute
+ abstract_vgw.disk.allocation_vgw:
+ properties:
+ unit: B
+ description: The amount of disk occupied by the instance on the host machine
+ type: Gauge
+ category: disk
+ abstract_vgw.network.incoming.bytes_vgw_vgw_private_0_port:
+ properties:
+ unit: B
+ description: Number of incoming bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.cpu_vgw:
+ properties:
+ unit: ns
+ description: CPU time used
+ type: Cumulative
+ category: compute
+ abstract_vgw.network.incoming.bytes_vgw_vgw_private_2_port:
+ properties:
+ unit: B
+ description: Number of incoming bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.network.outpoing.packets_vgw_vgw_private_1_port:
+ properties:
+ unit: packet
+ description: Number of outgoing packets
+ type: Cumulative
+ category: network
+ abstract_vgw.disk.device.read.bytes_vgw:
+ properties:
+ unit: B
+ description: Volume of reads
+ type: Cumulative
+ category: disk
+ abstract_vgw.disk.device.write.bytes.rate_vgw:
+ properties:
+ unit: B/s
+ description: Average rate of writes
+ type: Gauge
+ category: disk
+ abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_2_port:
+ properties:
+ unit: B/s
+ description: Average rate of incoming bytes
+ type: Gauge
+ category: network
+ abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_0_port:
+ properties:
+ unit: packet/s
+ description: Average rate of incoming packets
+ type: Gauge
+ category: network
+ abstract_vgw.disk.device.iops_vgw:
+ properties:
+ unit: count/s
+ description: Average disk iops per device
+ type: Gauge
+ category: disk
+ abstract_vgw.disk.latency_vgw:
+ properties:
+ unit: ms
+ description: Average disk latency
+ type: Gauge
+ category: disk
+ abstract_vgw.network.incoming.packets_vgw_vgw_private_2_port:
+ properties:
+ unit: packet
+ description: Number of incoming packets
+ type: Cumulative
+ category: network
+ abstract_vgw.disk.device.allocation_vgw:
+ properties:
+ unit: B
+ description: The amount of disk per device occupied by the instance on the host machine
+ type: Gauge
+ category: disk
+ abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_0_port:
+ properties:
+ unit: B/s
+ description: Average rate of outgoing bytes
+ type: Gauge
+ category: network
+ abstract_vgw.instance_vgw:
+ properties:
+ unit: instance
+ description: Existence of instance
+ type: Gauge
+ category: compute
+ abstract_vgw.memory_vgw:
+ properties:
+ unit: MB
+ description: Volume of RAM allocated to the instance
+ type: Gauge
+ category: compute
+ abstract_vgw.disk.device.write.requests_vgw:
+ properties:
+ unit: request
+ description: Number of write requests
+ type: Cumulative
+ category: disk
+ abstract_vgw.cpu.delta_vgw:
+ properties:
+ unit: ns
+ description: CPU time used since previous datapoint
+ type: Delta
+ category: compute
+ abstract_vgw.disk.device.latency_vgw:
+ properties:
+ unit: ms
+ description: Average disk latency per device
+ type: Gauge
+ category: disk
+ abstract_vgw.port_mirroring_vgw_vgw_private_0_port:
+ properties:
+ connection_point:
+ network_role:
+ get_input: port_vgw_private_0_port_network_role
+ nfc_naming_code: vgw
+ abstract_vgw.disk.iops_vgw:
+ properties:
+ unit: count/s
+ description: Average disk iops
+ type: Gauge
+ category: disk
+ abstract_vgw.cpu_util_vgw:
+ properties:
+ unit: '%'
+ description: Average CPU utilization
+ type: Gauge
+ category: compute
+ abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_2_port:
+ properties:
+ unit: B/s
+ description: Average rate of outgoing bytes
+ type: Gauge
+ category: network
+ abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_1_port:
+ properties:
+ unit: packet/s
+ description: Average rate of incoming packets
+ type: Gauge
+ category: network
+ abstract_vgw.network.outgoing.bytes_vgw_vgw_private_0_port:
+ properties:
+ unit: B
+ description: Number of outgoing bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_1_port:
+ properties:
+ unit: packet/s
+ description: Average rate of outgoing packets
+ type: Gauge
+ category: network
+ abstract_vgw.disk.usage_vgw:
+ properties:
+ unit: B
+ description: The physical size in bytes of the image container on the host
+ type: Gauge
+ category: disk
+ abstract_vgw.disk.write.requests.rate_vgw:
+ properties:
+ unit: request/s
+ description: Average rate of write requests
+ type: Gauge
+ category: compute
+ abstract_vgw.network.outgoing.bytes_vgw_vgw_private_1_port:
+ properties:
+ unit: B
+ description: Number of outgoing bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.scalable_vgw:
+ properties:
+ max_instances: 1
+ min_instances: 1
+ abstract_vgw.disk.device.read.bytes.rate_vgw:
+ properties:
+ unit: B/s
+ description: Average rate of reads
+ type: Gauge
+ category: disk
+ abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_0_port:
+ properties:
+ unit: packet/s
+ description: Average rate of outgoing packets
+ type: Gauge
+ category: network
+ abstract_vgw.disk.device.read.requests_vgw:
+ properties:
+ unit: request
+ description: Number of read requests
+ type: Cumulative
+ category: disk
+ abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_1_port:
+ properties:
+ unit: B/s
+ description: Average rate of outgoing bytes
+ type: Gauge
+ category: network
+ abstract_vgw.disk.device.write.requests.rate_vgw:
+ properties:
+ unit: request/s
+ description: Average rate of write requests
+ type: Gauge
+ category: disk
+ abstract_vgw.disk.device.usage_vgw:
+ properties:
+ unit: B
+ description: The physical size in bytes of the image container on the host per device
+ type: Gauge
+ category: disk
+ abstract_vgw.disk.write.bytes.rate_vgw:
+ properties:
+ unit: B/s
+ description: Average rate of writes
+ type: Gauge
+ category: compute
+ abstract_vgw.disk.device.write.bytes_vgw:
+ properties:
+ unit: B
+ description: Volume of writes
+ type: Cumulative
+ category: disk
+ abstract_vgw.memory.usage_vgw:
+ properties:
+ unit: MB
+ description: Volume of RAM used by the instance from the amount of its allocated memory
+ type: Gauge
+ category: compute
+ abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_2_port:
+ properties:
+ unit: packet/s
+ description: Average rate of outgoing packets
+ type: Gauge
+ category: network
+ abstract_vgw.disk.root.size_vgw:
+ properties:
+ unit: GB
+ description: Size of root disk
+ type: Gauge
+ category: compute
+ abstract_vgw.disk.ephemeral.size_vgw:
+ properties:
+ unit: GB
+ description: Size of ephemeral disk
+ type: Gauge
+ category: compute
+ abstract_vgw.disk.device.capacity_vgw:
+ properties:
+ unit: B
+ description: The amount of disk per device that the instance can see
+ type: Gauge
+ category: disk
+ abstract_vgw.disk.read.bytes.rate_vgw:
+ properties:
+ unit: B/s
+ description: Average rate of reads
+ type: Gauge
+ category: compute
+ abstract_vgw.endpoint_vgw:
+ properties:
+ secure: true
+ abstract_vgw.network.outpoing.packets_vgw_vgw_private_2_port:
+ properties:
+ unit: packet
+ description: Number of outgoing packets
+ type: Cumulative
+ category: network
+ abstract_vgw.vcpus_vgw:
+ properties:
+ unit: vcpu
+ description: Number of virtual CPUs allocated to the instance
+ type: Gauge
+ category: compute
+ abstract_vgw.network.outgoing.bytes_vgw_vgw_private_2_port:
+ properties:
+ unit: B
+ description: Number of outgoing bytes
+ type: Cumulative
+ category: network
+ abstract_vgw.network.incoming.packets_vgw_vgw_private_1_port:
+ properties:
+ unit: packet
+ description: Number of incoming packets
+ type: Cumulative
+ category: network
+ abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_2_port:
+ properties:
+ unit: packet/s
+ description: Average rate of incoming packets
+ type: Gauge
+ category: network
+ abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_1_port:
+ properties:
+ unit: B/s
+ description: Average rate of incoming bytes
+ type: Gauge
+ category: network
+ BRG_2019-10-01 03:23:27.409 0:
+ type: org.openecomp.resource.vf.Brg2019100103:23:27409
+ metadata:
+ invariantUUID: 05a482b5-ec0d-45cb-ae95-397ce6765c9e
+ UUID: 12519dd0-46ca-46da-9dcc-c6155b2a6d15
+ customizationUUID: aff592e4-cfc7-43ce-abea-f026b56995ab
+ version: '1.0'
+ name: BRG_2019-10-01 03:23:27.409
+ description: Alloted Resource BRG
+ type: VF
+ category: Allotted Resource
+ subcategory: BRG
+ resourceVendor: ONAP
+ resourceVendorRelease: '1.0'
+ resourceVendorModelNumber: ''
+ properties:
+ nf_naming:
+ ecomp_generated_naming: true
+ skip_post_instantiation_configuration: true
+ multi_stage_design: 'false'
+ availability_zone_max_count: 1
+ nf_role: BRG
+ nf_type: BRG
+ TunnelXConn_2019-10-01 03:23:27.409 0:
+ type: org.openecomp.resource.vf.Tunnelxconn2019100103:23:27409
+ metadata:
+ invariantUUID: 3a367ac8-5dff-4325-a0e7-9e0299d22152
+ UUID: 93d3e01d-4f8c-4a60-99f2-26b64c69bc11
+ customizationUUID: 4e0249f0-5118-4323-b5e9-0783ad1123ba
+ version: '1.0'
+ name: TunnelXConn_2019-10-01 03:23:27.409
+ description: Alloted Resource TunnelXConn
+ type: VF
+ category: Allotted Resource
+ subcategory: TunnelXConn
+ resourceVendor: ONAP
+ resourceVendorRelease: '1.0'
+ resourceVendorModelNumber: ''
+ properties:
+ nf_naming:
+ ecomp_generated_naming: true
+ skip_post_instantiation_configuration: true
+ multi_stage_design: 'false'
+ availability_zone_max_count: 1
+ nf_role: TunnelXConn
+ nf_type: TunnelXConn
+ groups:
+ vcpe_vgwbf175ab04fa20..VcpeVgwBf175ab04fa2..base_vcpe_vgw..module-0:
+ type: org.openecomp.groups.VfModule
+ metadata:
+ vfModuleModelName: VcpeVgwBf175ab04fa2..base_vcpe_vgw..module-0
+ vfModuleModelInvariantUUID: 7caf746f-46c6-4e47-bbfc-9374b1c17ba1
+ vfModuleModelUUID: a4654496-9862-47e4-9640-d84708ea8bfb
+ vfModuleModelVersion: '1'
+ vfModuleModelCustomizationUUID: ddd095d2-c2ba-48fe-90f4-e3f6fc806d7e
+ properties:
+ min_vf_module_instances: 1
+ vf_module_label: base_vcpe_vgw
+ max_vf_module_instances: 1
+ vf_module_type: Base
+ isBase: true
+ initial_count: 1
+ volume_group: false
+ substitution_mappings:
+ node_type: org.openecomp.service.Vcperescust201910012364
+ capabilities:
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.feature_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.feature_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.write.requests.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.write.requests.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.iops_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.iops_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.read.requests.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.read.requests.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.attachment_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.attachment_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.write.requests_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.write.requests_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.endpoint_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.endpoint_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.latency_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.latency_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.write.bytes_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.write.bytes_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.memory_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.memory_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.write.requests.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.write.requests.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.read.bytes.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.read.bytes.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outpoing.packets_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outpoing.packets_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.feature_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.feature_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.port_mirroring_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.port_mirroring_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.binding_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.binding_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.attachment_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.attachment_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.iops_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.iops_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.forwarder_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.forwarder_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.ephemeral.size_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.ephemeral.size_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.port_mirroring_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.port_mirroring_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.host_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.host_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.memory.usage_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.memory.usage_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outpoing.packets_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outpoing.packets_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.write.bytes.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.write.bytes.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.attachment_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.attachment_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.binding_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.binding_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.read.bytes_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.read.bytes_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.usage_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.usage_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.cpu_util_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.cpu_util_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.memory.resident_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.memory.resident_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.read.requests_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.read.requests_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.binding_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.binding_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.usage_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.usage_vgw
+ brg_2019100103:23:274090.brg.feature:
+ - BRG_2019-10-01 03:23:27.409 0
+ - brg.feature
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.latency_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.latency_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.cpu_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.cpu_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.instance_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.instance_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.allocation_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.allocation_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.write.bytes.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.write.bytes.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes.rate_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.capacity_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.capacity_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.forwarder_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.forwarder_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.read.requests_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.read.requests_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.allocation_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.allocation_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.root.size_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.root.size_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.feature_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.feature_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outpoing.packets_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outpoing.packets_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.bytes.rate_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.packets.rate_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.incoming.packets.rate_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.write.requests_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.write.requests_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.binding_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.binding_vgw_vgw_private_2_port
+ tunnelxconn_2019100103:23:274090.tunnelxconn.feature:
+ - TunnelXConn_2019-10-01 03:23:27.409 0
+ - tunnelxconn.feature
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.read.bytes_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.read.bytes_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.network.outgoing.bytes_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.network.outgoing.bytes_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.scalable_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.scalable_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.write.bytes_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.write.bytes_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.device.read.bytes.rate_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.device.read.bytes.rate_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.feature_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.feature_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.os_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.os_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.vcpus_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.vcpus_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.forwarder_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.forwarder_vgw_vgw_private_0_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.port_mirroring_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.port_mirroring_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.cpu.delta_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.cpu.delta_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.disk.capacity_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.disk.capacity_vgw
+ requirements:
+ vcpe_vgwbf175ab04fa20.abstract_vgw.dependency_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.dependency_vgw_vgw_private_1_port
+ tunnelxconn_2019100103:23:274090.tunnelxconn.service_dependency:
+ - TunnelXConn_2019-10-01 03:23:27.409 0
+ - tunnelxconn.service_dependency
+ vcpe_vgwbf175ab04fa20.abstract_vgw.local_storage_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.local_storage_vgw
+ vcpe_vgwbf175ab04fa20.abstract_vgw.dependency_vgw:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.dependency_vgw
+ brg_2019100103:23:274090.brg.service_dependency:
+ - BRG_2019-10-01 03:23:27.409 0
+ - brg.service_dependency
+ vcpe_vgwbf175ab04fa20.abstract_vgw.link_vgw_vgw_private_1_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.link_vgw_vgw_private_1_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.dependency_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.dependency_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.link_vgw_vgw_private_2_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.link_vgw_vgw_private_2_port
+ vcpe_vgwbf175ab04fa20.abstract_vgw.link_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.link_vgw_vgw_private_0_port
+ tunnelxconn_2019100103:23:274090.tunnelxconn.dependency:
+ - TunnelXConn_2019-10-01 03:23:27.409 0
+ - tunnelxconn.dependency
+ brg_2019100103:23:274090.brg.dependency:
+ - BRG_2019-10-01 03:23:27.409 0
+ - brg.dependency
+ vcpe_vgwbf175ab04fa20.abstract_vgw.dependency_vgw_vgw_private_0_port:
+ - vCPE_vgw bf175ab0-4fa2 0
+ - abstract_vgw.dependency_vgw_vgw_private_0_port
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vcpe_vgwbf175ab04fa20_modules.json b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vcpe_vgwbf175ab04fa20_modules.json
new file mode 100644
index 0000000000..e74c3c05a8
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vcpe_vgwbf175ab04fa20_modules.json
@@ -0,0 +1,25 @@
+[
+ {
+ "vfModuleModelName": "VcpeVgwBf175ab04fa2..base_vcpe_vgw..module-0",
+ "vfModuleModelInvariantUUID": "7caf746f-46c6-4e47-bbfc-9374b1c17ba1",
+ "vfModuleModelVersion": "1",
+ "vfModuleModelUUID": "a4654496-9862-47e4-9640-d84708ea8bfb",
+ "vfModuleModelCustomizationUUID": "ddd095d2-c2ba-48fe-90f4-e3f6fc806d7e",
+ "isBase": true,
+ "artifacts": [
+ "e3a33b76-1f8a-44ba-808b-8a4c79e4b44a",
+ "9b73763b-0f60-47c3-8939-cf2f819bc75a"
+ ],
+ "properties": {
+ "min_vf_module_instances": "1",
+ "vf_module_label": "base_vcpe_vgw",
+ "max_vf_module_instances": "1",
+ "vfc_list": "",
+ "vf_module_description": "",
+ "vf_module_type": "Base",
+ "availability_zone_count": "",
+ "volume_group": "false",
+ "initial_count": "1"
+ }
+ }
+] \ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vendor-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vendor-license-model.xml
new file mode 100644
index 0000000000..67bbea4677
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vendor-license-model.xml
@@ -0,0 +1 @@
+<vendor-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>6dccd115-ce6a-4b1a-88aa</vendor-name><entitlement-pool-list><entitlement-pool><entitlement-pool-invariant-uuid>40d4819966b04a28aac2db35f2d84755</entitlement-pool-invariant-uuid><entitlement-pool-uuid>86EFCDA3995C4232B96C833E97804D4F</entitlement-pool-uuid><version>1.0</version><name>ce52c558-b095-4a8f-84f3</name><description>vendor entitlement pool</description><increments/><manufacturer-reference-number>111111</manufacturer-reference-number><threshold-value><unit>Percentage</unit><value>100</value></threshold-value><sp-limits/><vendor-limits/><operational-scope><value/></operational-scope><start-date>2019-10-01T00:00:00Z</start-date><expiry-date>2020-09-30T23:59:59Z</expiry-date></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><version>1.0</version><name>c712eb11-eddd-459f-a383</name><description>vendor license key group</description><type>Universal</type><increments/><manufacturerReferenceNumber>11111</manufacturerReferenceNumber><license-key-group-invariant-uuid>fc8a672de0d041ecb7637b1ae5446e99</license-key-group-invariant-uuid><license-key-group-uuid>DF4EA9695A4943ABB8437F244FC6623B</license-key-group-uuid><threshold-value><unit>Percentage</unit><value>100</value></threshold-value><sp-limits/><vendor-limits/><operational-scope><value/></operational-scope><start-date>2019-10-01T00:00:00Z</start-date><expiry-date>2020-09-30T23:59:59Z</expiry-date></license-key-group></license-key-group-list></vendor-license-model> \ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vf-license-model.xml
new file mode 100644
index 0000000000..fb15c3aa16
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vf-license-model.xml
@@ -0,0 +1 @@
+<vf-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>6dccd115-ce6a-4b1a-88aa</vendor-name><vf-id>8228aa3775634529bb6f86e77b0e40d7</vf-id><feature-group-list><feature-group><entitlement-pool-list><entitlement-pool><name>ce52c558-b095-4a8f-84f3</name><description>vendor entitlement pool</description><increments/><entitlement-pool-invariant-uuid>40d4819966b04a28aac2db35f2d84755</entitlement-pool-invariant-uuid><entitlement-pool-uuid>86EFCDA3995C4232B96C833E97804D4F</entitlement-pool-uuid><manufacturer-reference-number>111111</manufacturer-reference-number><threshold-value><unit>Percentage</unit><value>100</value></threshold-value><version>1.0</version><sp-limits/><vendor-limits/><operational-scope><value/></operational-scope><start-date>2019-10-01T00:00:00Z</start-date><expiry-date>2020-09-30T23:59:59Z</expiry-date></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><name>c712eb11-eddd-459f-a383</name><description>vendor license key group</description><type>Universal</type><increments/><license-key-group-invariant-uuid>fc8a672de0d041ecb7637b1ae5446e99</license-key-group-invariant-uuid><license-key-group-uuid>DF4EA9695A4943ABB8437F244FC6623B</license-key-group-uuid><manufacturer-reference-number>11111</manufacturer-reference-number><threshold-value><unit>Percentage</unit><value>100</value></threshold-value><version>1.0</version><sp-limits/><vendor-limits/><operational-scope><value/></operational-scope><start-date>2019-10-01T00:00:00Z</start-date><expiry-date>2020-09-30T23:59:59Z</expiry-date></license-key-group></license-key-group-list><name>ec13e8a7-f181-4d96-b821</name><part-number>123abc456</part-number><feature-group-uuid>7b85e31faa0541afa21a60b85907aa40</feature-group-uuid><description>vendor feature group</description></feature-group></feature-group-list></vf-license-model> \ No newline at end of file