SO Distribution Error on Allotted Resource 63/96663/1
authorsarada prasad sahoo <sarada.prasad.sahoo@huawei.com>
Mon, 7 Oct 2019 07:04:49 +0000 (12:34 +0530)
committersarada prasad sahoo <sarada.prasad.sahoo@huawei.com>
Mon, 7 Oct 2019 07:04:49 +0000 (12:34 +0530)
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

asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.env [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/base_vcpe_vgw.yaml [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/demo-vcpe-rescust-notification.json [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csar [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-template.yml [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vcpe_vgwbf175ab04fa20_modules.json [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vendor-license-model.xml [new file with mode: 0644]
asdc-controller/src/test/resources/resource-examples/vcpe-rescust/vf-license-model.xml [new file with mode: 0644]

index b2dbcb4..d96a82c 100644 (file)
@@ -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);
+                }
             }
         }
     }
index 7171fff..9294677 100644 (file)
@@ -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 (file)
index 0000000..5cdbc9b
--- /dev/null
@@ -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 (file)
index 0000000..74fa490
--- /dev/null
@@ -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 (file)
index 0000000..f4f4fcc
--- /dev/null
@@ -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 (file)
index 0000000..29d2d72
Binary files /dev/null and b/asdc-controller/src/test/resources/resource-examples/vcpe-rescust/service-Vcperescust201910012364-csar.csar 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 (file)
index 0000000..1fe6117
--- /dev/null
@@ -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 (file)
index 0000000..e74c3c0
--- /dev/null
@@ -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 (file)
index 0000000..67bbea4
--- /dev/null
@@ -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 (file)
index 0000000..fb15c3a
--- /dev/null
@@ -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