From 2fcd0d81688ca3dbde9c3853a0eca5aed9e4da7d Mon Sep 17 00:00:00 2001 From: Ramesh Parthasarathy Date: Thu, 16 May 2019 21:15:29 -0700 Subject: [PATCH] Addressed vCPE-Infra processing issue ASDC Controller code was modified to address vCPE-infra notification received from SDC. Also added unit tests to ensure that the code works as expected. Change-Id: I217e2dfed9548bfb0e9b93c96aaf75afc1d4171c Issue-ID: SO-1861 Signed-off-by: Ramesh Parthasarathy(rp6768) --- .../org/onap/so/asdc/client/ASDCController.java | 24 +- .../client/test/rest/ASDCRestInterfaceTest.java | 46 +++ asdc-controller/src/test/resources/data.sql | 2 + .../vcpe-infra/base_vcpe_infra.env | 37 ++ .../vcpe-infra/base_vcpe_infra.yaml | 460 +++++++++++++++++++++ .../vcpe-infra/demovcpeinfra-notification.json | 111 +++++ .../vcpe-infra/service-Demovcpeinfra-csar.csar | Bin 0 -> 115651 bytes .../vcpe_infrabf35304fe92f0_modules.json | 25 ++ .../vcpe-infra/vendor-license-model.xml | 1 + .../vcpe-infra/vf-license-model.xml | 1 + 10 files changed, 695 insertions(+), 12 deletions(-) create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.env create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.yaml create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/demovcpeinfra-notification.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/vcpe_infrabf35304fe92f0_modules.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/vendor-license-model.xml create mode 100644 asdc-controller/src/test/resources/resource-examples/vcpe-infra/vf-license-model.xml diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java index 9597158cb6..c0f403f388 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java @@ -784,24 +784,24 @@ public class ASDCController { errorMessage = e.getMessage(); logger.error("Exception occurred", e); } + } - if (!hasVFResource) { + if (!hasVFResource) { - logger.debug("No resources found for Service: " + iNotif.getServiceUUID()); + logger.debug("No resources found for Service: " + iNotif.getServiceUUID()); - logger.debug("Preparing to deploy Service: {}", iNotif.getServiceUUID()); - try { - this.deployResourceStructure(resourceStructure, toscaResourceStructure); - } catch (ArtifactInstallerException e) { - deployStatus = DistributionStatusEnum.DEPLOY_ERROR; - errorMessage = e.getMessage(); - logger.error("Exception occurred", e); - } + logger.debug("Preparing to deploy Service: {}", iNotif.getServiceUUID()); + try { + this.deployResourceStructure(resourceStructure, toscaResourceStructure); + } catch (ArtifactInstallerException e) { + deployStatus = DistributionStatusEnum.DEPLOY_ERROR; + errorMessage = e.getMessage(); + logger.error("Exception occurred", e); } - this.sendCsarDeployNotification(iNotif, resourceStructure, toscaResourceStructure, deployStatus, - errorMessage); } + this.sendCsarDeployNotification(iNotif, resourceStructure, toscaResourceStructure, deployStatus, + errorMessage); } catch (ASDCDownloadException | UnsupportedEncodingException e) { logger.error("{} {} {} {} {} {}", MessageEnum.ASDC_GENERAL_EXCEPTION_ARG.toString(), 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 ac107f6449..2c520a3bba 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 @@ -27,11 +27,15 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; import static com.shazam.shazamcrest.MatcherAssert.assertThat; import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashSet; +import java.util.List; +import java.util.Optional; import java.util.Set; import javax.transaction.Transactional; import javax.ws.rs.core.Response; @@ -45,11 +49,15 @@ import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator; import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; import org.onap.so.db.catalog.beans.AllottedResource; import org.onap.so.db.catalog.beans.AllottedResourceCustomization; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; import org.onap.so.db.catalog.beans.Service; +import org.onap.so.db.catalog.beans.ToscaCsar; import org.onap.so.db.catalog.beans.Workflow; import org.onap.so.db.catalog.data.repository.AllottedResourceRepository; import org.onap.so.db.catalog.data.repository.NetworkResourceRepository; import org.onap.so.db.catalog.data.repository.ServiceRepository; +import org.onap.so.db.catalog.data.repository.ToscaCsarRepository; import org.onap.so.db.catalog.data.repository.WorkflowRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -74,6 +82,9 @@ public class ASDCRestInterfaceTest extends BaseTest { @Autowired private WorkflowRepository workflowRepo; + @Autowired + private ToscaCsarRepository toscaCsarRepo; + @Autowired private ASDCRestInterface asdcRestInterface; @@ -244,6 +255,41 @@ public class ASDCRestInterfaceTest extends BaseTest { } + + @Test + public void test_Vcpe_Infra_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-infra/"; + + ObjectMapper mapper = new ObjectMapper(); + NotificationDataImpl request = mapper.readValue(new File(resourceLocation + "demovcpeinfra-notification.json"), + NotificationDataImpl.class); + headers.add("resource-location", resourceLocation); + HttpEntity entity = new HttpEntity(request, headers); + + ResponseEntity response = restTemplate.exchange(createURLWithPort("test/treatNotification/v1"), + HttpMethod.POST, entity, String.class); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value()); + + Optional toscaCsar = toscaCsarRepo.findById("144606d8-a505-4ba0-90a9-6d1c6219fc6b"); + assertTrue(toscaCsar.isPresent()); + assertEquals("service-Demovcpeinfra-csar.csar", toscaCsar.get().getName()); + + Optional service = serviceRepo.findById("8a77cbbb-9850-40bb-a42f-7aec8e3e6ab7"); + assertTrue(service.isPresent()); + assertEquals("demoVCPEInfra", service.get().getModelName()); + + Optional networkResource = networkRepo.findById("89789b26-a46b-4cee-aed0-d46e21f93a5e"); + assertTrue(networkResource.isPresent()); + assertEquals("Generic NeutronNet", networkResource.get().getModelName()); + } + protected String createURLWithPort(String uri) { return "http://localhost:" + port + uri; } diff --git a/asdc-controller/src/test/resources/data.sql b/asdc-controller/src/test/resources/data.sql index c9179fe65f..bc97b1e54a 100644 --- a/asdc-controller/src/test/resources/data.sql +++ b/asdc-controller/src/test/resources/data.sql @@ -21,6 +21,8 @@ INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_ ('TENANT_OAM_NETWORK', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL); INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_TEMPLATE_ARTIFACT_UUID, AIC_VERSION_MIN, AIC_VERSION_MAX) VALUES ('SRIOV_PROVIDER_NETWORK', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL); +INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_TEMPLATE_ARTIFACT_UUID, AIC_VERSION_MIN, AIC_VERSION_MAX) VALUES +('Generic NeutronNet', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL); insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values ('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002671', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '1.0', 'vSAMP10a', 'VF', null); diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.env b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.env new file mode 100644 index 0000000000..85d3ea19a3 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.env @@ -0,0 +1,37 @@ +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" + cpe_signal_net_cidr: "10.4.0.0/24" + cpe_signal_net_id: "zdfw1cpe01_private" + cpe_signal_subnet_id: "zdfw1cpe01_sub_private" + dcae_collector_ip: "10.0.4.1" + dcae_collector_port: "8081" + demo_artifacts_version: "1.4.0" + install_script_version: "1.4.0" + key_name: "vaaa_key" + mr_ip_addr: "10.0.11.1" + mr_ip_port: "3904" + 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" + vaaa_name_0: "zdcpe1cpe01aaa01" + vaaa_private_ip_0: "10.4.0.4" + vaaa_private_ip_1: "10.0.101.2" + vcpe_flavor_name: "PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED)" + vcpe_image_name: "PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED)" + vdhcp_name_0: "zdcpe1cpe01dhcp01" + vdhcp_private_ip_0: "10.4.0.1" + vdhcp_private_ip_1: "10.0.101.1" + vdns_name_0: "zdcpe1cpe01dns01" + vdns_private_ip_0: "10.2.0.1" + vdns_private_ip_1: "10.0.101.3" + vf_module_id: "vCPE_Intrastructure" + vnf_id: "vCPE_Infrastructure_demo_app" + vweb_name_0: "zdcpe1cpe01web01" + vweb_private_ip_0: "10.2.0.10" + vweb_private_ip_1: "10.0.101.40" diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.yaml b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.yaml new file mode 100644 index 0000000000..9f3bf27492 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/base_vcpe_infra.yaml @@ -0,0 +1,460 @@ +########################################################################## +# +#==================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 Infrastructue emlements (vAAA, vDHCP, vDNS_DHCP, webServer) + +############## +# # +# 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 + 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_signal_net_id: + type: string + label: vAAA private network name or ID + description: Private network that connects vAAA with vDNSs + cpe_signal_subnet_id: + type: string + label: CPE Signal subnet + description: CPE Signal subnet + cpe_signal_net_cidr: + type: string + label: vAAA private network CIDR + description: The CIDR of the vAAA private network + cpe_public_net_id: + type: string + label: vCPE Public network (emulates internet) name or ID + description: Private network that connects vGW to emulated internet + cpe_public_subnet_id: + type: string + label: CPE Public subnet + description: CPE Public subnet + cpe_public_net_cidr: + type: string + label: vCPE public network CIDR + description: The CIDR of the vCPE public + vaaa_private_ip_0: + type: string + label: vAAA private IP address towards the CPE_SIGNAL private network + description: Private IP address that is assigned to the vAAA to communicate with the vCPE components + vaaa_private_ip_1: + type: string + label: vAAA private IP address towards the ONAP management network + description: Private IP address that is assigned to the vAAA to communicate with ONAP components + vdns_private_ip_0: + type: string + label: vDNS private IP address towards the CPE_PUBLIC private network + description: Private IP address that is assigned to the vDNS to communicate with the vCPE components + vdns_private_ip_1: + type: string + label: vDNS private IP address towards the ONAP management network + description: Private IP address that is assigned to the vDNS to communicate with ONAP components + vdhcp_private_ip_0: + type: string + label: vDHCP private IP address towards the CPE_SIGNAL private network + description: Private IP address that is assigned to the vDHCP to communicate with the vCPE components + vdhcp_private_ip_1: + type: string + label: vDNS private IP address towards the ONAP management network + description: Private IP address that is assigned to the vDHCP to communicate with ONAP components + vweb_private_ip_0: + type: string + label: vWEB private IP address towards the CPE_PUBLIC private network + description: Private IP address that is assigned to the vWEB to communicate with the vGWs + vweb_private_ip_1: + type: string + label: vWEB private IP address towards the ONAP management network + description: Private IP address that is assigned to the vWEB to communicate with ONAP components + vaaa_name_0: + type: string + label: vAAA name + description: Name of the vAAA + vdns_name_0: + type: string + label: vDNS name + description: Name of the vDNS + vdhcp_name_0: + type: string + label: vDHCP name + description: Name of the vDHCP + vweb_name_0: + type: string + label: vWEB name + description: Name of the vWEB + vnf_id: + type: string + label: VNF ID + description: The VNF ID is provided by ONAP + vf_module_id: + type: string + label: vFirewall module ID + description: The vAAA 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 + mr_ip_addr: + type: string + label: Message Router IP address + description: IP address of the Message Router that for vDHCP configuration + mr_ip_port: + type: string + label: Message Router Port + description: IP port of the Message Router that for vDHCP configuration + 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 + install_script_version: + type: string + label: Installation script version number + description: Version number of the scripts that install the vFW demo app + demo_artifacts_version: + type: string + label: Artifacts version used in demo vnfs + description: Artifacts (jar, tar.gz) version used in demo vnfs + 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) + +############# +# # +# 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 AAA server Instantiation + vaaa_private_0_port: + type: OS::Neutron::Port + properties: + network: { get_param: cpe_signal_net_id } + fixed_ips: [{"subnet": { get_param: cpe_signal_subnet_id }, "ip_address": { get_param: vaaa_private_ip_0 }}] + + vaaa_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: vaaa_private_ip_1 }}] + + vaaa_0: + type: OS::Nova::Server + properties: + image: { get_param: vcpe_image_name } + flavor: { get_param: vcpe_flavor_name } + name: { get_param: vaaa_name_0 } + key_name: { get_resource: my_keypair } + networks: + - network: { get_param: public_net_id } + - port: { get_resource: vaaa_private_0_port } + - port: { get_resource: vaaa_private_1_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: + __dcae_collector_ip__: { get_param: dcae_collector_ip } + __dcae_collector_port__: { get_param: dcae_collector_port } + __cpe_signal_net_ipaddr__: { get_param: vaaa_private_ip_0 } + __oam_ipaddr__: { get_param: vaaa_private_ip_1 } + __oam_cidr__: { get_param: onap_private_net_cidr } + __cpe_signal_net_cidr__: { get_param: cpe_signal_net_cidr } + __demo_artifacts_version__ : { get_param: demo_artifacts_version } + __install_script_version__ : { get_param: install_script_version } + __cloud_env__ : { get_param: cloud_env } + __nexus_artifact_repo__: { get_param: nexus_artifact_repo } + template: | + #!/bin/bash + + # Create configuration files + mkdir /opt/config + echo "__dcae_collector_ip__" > /opt/config/dcae_collector_ip.txt + echo "__dcae_collector_port__" > /opt/config/dcae_collector_port.txt + echo "__cpe_signal_net_ipaddr__" > /opt/config/cpe_signal_net_ipaddr.txt + echo "__oam_ipaddr__" > /opt/config/oam_ipaddr.txt + echo "__oam_cidr__" > /opt/config/oam_cidr.txt + echo "__cpe_signal_net_cidr__" > /opt/config/cpe_signal_net_cidr.txt + echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt + echo "__install_script_version__" > /opt/config/install_script_version.txt + echo "__cloud_env__" > /opt/config/cloud_env.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 [[ "__install_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=__install_script_version__" -o /opt/vcpe-scripts-__install_script_version__.zip + unzip -j /opt/vcpe-scripts-__install_script_version__.zip -d /opt v_aaa_install.sh + cd /opt + chmod +x v_aaa_install.sh + ./v_aaa_install.sh + + + # Virtual DNS Instantiation + vdns_private_0_port: + type: OS::Neutron::Port + properties: + network: { get_param: cpe_public_net_id } + fixed_ips: [{"subnet": { get_param: cpe_public_subnet_id }, "ip_address": { get_param: vdns_private_ip_0 }}] + + vdns_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: vdns_private_ip_1 }}] + + vdns_0: + type: OS::Nova::Server + properties: + image: { get_param: vcpe_image_name } + flavor: { get_param: vcpe_flavor_name } + name: { get_param: vdns_name_0 } + key_name: { get_resource: my_keypair } + networks: + - network: { get_param: public_net_id } + - port: { get_resource: vdns_private_0_port } + - port: { get_resource: vdns_private_1_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: + __oam_ipaddr__ : { get_param: vdns_private_ip_1 } + __cpe_public_net_ipaddr__: { get_param: vdns_private_ip_0 } + __oam_cidr__: { get_param: onap_private_net_cidr } + __cpe_public_net_cidr__: { get_param: cpe_public_net_cidr } + __demo_artifacts_version__ : { get_param: demo_artifacts_version } + __install_script_version__ : { get_param: install_script_version } + __cloud_env__ : { get_param: cloud_env } + __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 "__cpe_public_net_ipaddr__" > /opt/config/cpe_public_net_ipaddr.txt + echo "__oam_cidr__" > /opt/config/oam_cidr.txt + echo "__cpe_public_net_cidr__" > /opt/config/cpe_public_net_cidr.txt + echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt + echo "__install_script_version__" > /opt/config/install_script_version.txt + echo "__cloud_env__" > /opt/config/cloud_env.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 [[ "__install_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=__install_script_version__" -o /opt/vcpe-scripts-__install_script_version__.zip + unzip -j /opt/vcpe-scripts-__install_script_version__.zip -d /opt v_dns_install.sh + cd /opt + chmod +x v_dns_install.sh + ./v_dns_install.sh + + + # Virtual DHCP Instantiation + vdhcp_private_0_port: + type: OS::Neutron::Port + properties: + network: { get_param: cpe_signal_net_id } + fixed_ips: [{"subnet": { get_param: cpe_signal_subnet_id }, "ip_address": { get_param: vdhcp_private_ip_0 }}] + + vdhcp_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: vdhcp_private_ip_1 }}] + + vdhcp_0: + type: OS::Nova::Server + properties: + image: { get_param: vcpe_image_name } + flavor: { get_param: vcpe_flavor_name } + name: { get_param: vdhcp_name_0 } + key_name: { get_resource: my_keypair } + networks: + - network: { get_param: public_net_id } + - port: { get_resource: vdhcp_private_0_port } + - port: { get_resource: vdhcp_private_1_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: + __oam_ipaddr__ : { get_param: vdhcp_private_ip_1 } + __cpe_signal_ipaddr__ : { get_param: vdhcp_private_ip_0 } + __oam_cidr__ : { get_param: onap_private_net_cidr } + __cpe_signal_net_cidr__ : { get_param: cpe_signal_net_cidr } + __mr_ip_addr__ : { get_param: mr_ip_addr } + __mr_ip_port__ : { get_param: mr_ip_port } + __demo_artifacts_version__ : { get_param: demo_artifacts_version } + __install_script_version__ : { get_param: install_script_version } + __cloud_env__ : { get_param: cloud_env } + __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 "__cpe_signal_ipaddr__" > /opt/config/cpe_signal_ipaddr.txt + echo "__oam_cidr__" > /opt/config/oam_cidr.txt + echo "__cpe_signal_net_cidr__" > /opt/config/cpe_signal_net_cidr.txt + echo "__mr_ip_addr__" > /opt/config/mr_ip_addr.txt + echo "__mr_ip_port__" > /opt/config/mr_ip_port.txt + echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt + echo "__install_script_version__" > /opt/config/install_script_version.txt + echo "__cloud_env__" > /opt/config/cloud_env.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 [[ "__install_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=__install_script_version__" -o /opt/vcpe-scripts-__install_script_version__.zip + unzip -j /opt/vcpe-scripts-__install_script_version__.zip -d /opt v_dhcp_install.sh + cd /opt + chmod +x v_dhcp_install.sh + ./v_dhcp_install.sh + + # vWEB instantiaion + vweb_private_0_port: + type: OS::Neutron::Port + properties: + network: { get_param: cpe_public_net_id } + fixed_ips: [{"subnet": { get_param: cpe_public_subnet_id }, "ip_address": { get_param: vweb_private_ip_0 }}] + + vweb_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: vweb_private_ip_1 }}] + + + vweb_0: + type: OS::Nova::Server + properties: + image: { get_param: vcpe_image_name } + flavor: { get_param: vcpe_flavor_name } + name: { get_param: vweb_name_0 } + key_name: { get_resource: my_keypair } + networks: + - network: { get_param: public_net_id } + - port: { get_resource: vweb_private_0_port } + - port: { get_resource: vweb_private_1_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: + __oam_ipaddr__ : { get_param: vweb_private_ip_1 } + __cpe_public_ipaddr__: { get_param: vweb_private_ip_0 } + __oam_cidr__: { get_param: onap_private_net_cidr } + __cpe_public_net_cidr__: { get_param: cpe_public_net_cidr } + __demo_artifacts_version__ : { get_param: demo_artifacts_version } + __install_script_version__ : { get_param: install_script_version } + __cloud_env__ : { get_param: cloud_env } + __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 "__cpe_public_ipaddr__" > /opt/config/cpe_public_ipaddr.txt + echo "__oam_cidr__" > /opt/config/oam_cidr.txt + echo "__cpe_public_net_cidr__" > /opt/config/cpe_public_net_cidr.txt + echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt + echo "__install_script_version__" > /opt/config/install_script_version.txt + echo "__cloud_env__" > /opt/config/cloud_env.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 [[ "__install_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=__install_script_version__" -o /opt/vcpe-scripts-__install_script_version__.zip + unzip -j /opt/vcpe-scripts-__install_script_version__.zip -d /opt v_web_install.sh + cd /opt + chmod +x v_web_install.sh + ./v_web_install.sh diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/demovcpeinfra-notification.json b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/demovcpeinfra-notification.json new file mode 100644 index 0000000000..61468a74f7 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/demovcpeinfra-notification.json @@ -0,0 +1,111 @@ +{ + "distributionID": "e61f72f2-eee9-4c46-bf76-ae24414c6396", + "serviceName": "demoVCPEInfra", + "serviceVersion": "1.0", + "serviceUUID": "8a77cbbb-9850-40bb-a42f-7aec8e3e6ab7", + "serviceDescription": "catalog service description", + "serviceInvariantUUID": "21c102b6-c3e6-49ca-8021-83c105a191fa", + "resources": [{ + "resourceInstanceName": "CPE_PUBLIC", + "resourceName": "Generic NeutronNet", + "resourceVersion": "1.0", + "resoucreType": "VL", + "resourceUUID": "67bf9c77-aa78-4fab-99f4-3939a6d42348", + "resourceInvariantUUID": "8917e73c-88cf-42ed-8b33-6ea8ad080285", + "resourceCustomizationUUID": "4b3bd88b-6351-4564-b1de-e01021cdb79b", + "category": "Generic", + "subcategory": "Network Elements", + "artifacts": [] + }, { + "resourceInstanceName": "vCPE_infra bf35304f-e92f 0", + "resourceName": "vCPE_infra bf35304f-e92f", + "resourceVersion": "1.0", + "resoucreType": "VF", + "resourceUUID": "9a91c854-86fb-4072-8d4d-94dc0e96a311", + "resourceInvariantUUID": "dcd9cb6c-1634-4424-86e6-b03baed3e10a", + "resourceCustomizationUUID": "01564fe7-0541-4d92-badc-464cc35f83ba", + "category": "Generic", + "subcategory": "Abstract", + "artifacts": [{ + "artifactName": "vf-license-model.xml", + "artifactType": "VF_LICENSE", + "artifactURL": "vf-license-model.xml", + "artifactChecksum": "ODc4YjdjY2M5MDE1NDcxN2JhYTA2MjdiNGUxODE2MTM=", + "artifactDescription": "VF license file", + "artifactTimeout": 120, + "artifactUUID": "7fbbb913-0309-4a8b-8596-a1faf84886e8", + "artifactVersion": "1" + }, { + "artifactName": "vcpe_infrabf35304fe92f0_modules.json", + "artifactType": "VF_MODULES_METADATA", + "artifactURL": "vcpe_infrabf35304fe92f0_modules.json", + "artifactChecksum": "OGQ2MTI5YjZjYTFlYzUyOTYyOTY4YWZkYTQxYzViYzg=", + "artifactDescription": "Auto-generated VF Modules information artifact", + "artifactTimeout": 120, + "artifactUUID": "518b313a-4484-4cfd-92f0-0b23e2a415fd", + "artifactVersion": "1" + }, { + "artifactName": "base_vcpe_infra.yaml", + "artifactType": "HEAT", + "artifactURL": "base_vcpe_infra.yaml", + "artifactChecksum": "ZGEyNDgwNmEzZDk3ODU3ZDg3YTg1MDc0NmU1ZTMwYmI=", + "artifactDescription": "created from csar", + "artifactTimeout": 120, + "artifactUUID": "183353d4-2b50-4dc1-aecc-f2818f666b70", + "artifactVersion": "2" + }, { + "artifactName": "vendor-license-model.xml", + "artifactType": "VENDOR_LICENSE", + "artifactURL": "vendor-license-model.xml", + "artifactChecksum": "OTJhOTQyNTczZGRiYTJlM2M0MDQxZTdlMTE3NDE5YTQ=", + "artifactDescription": " Vendor license file", + "artifactTimeout": 120, + "artifactUUID": "7f4577e5-9f89-4c8e-985e-500e58425276", + "artifactVersion": "1" + }, { + "artifactName": "base_vcpe_infra.env", + "artifactType": "HEAT_ENV", + "artifactURL": "base_vcpe_infra.env", + "artifactChecksum": "ZmQxYTM1Yjg0ODJmN2I0OWE4OWMxN2NjOGEwMTM5NTY=", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": 120, + "artifactUUID": "1e9e20c7-6801-4a6c-a270-c8f5cec034c0", + "artifactVersion": "2", + "generatedFromUUID": "183353d4-2b50-4dc1-aecc-f2818f666b70" + } + ] + }, { + "resourceInstanceName": "CPE_SIGNAL", + "resourceName": "Generic NeutronNet", + "resourceVersion": "1.0", + "resoucreType": "VL", + "resourceUUID": "67bf9c77-aa78-4fab-99f4-3939a6d42348", + "resourceInvariantUUID": "8917e73c-88cf-42ed-8b33-6ea8ad080285", + "resourceCustomizationUUID": "803e0da3-6c40-4a4f-918b-7f3484de61ff", + "category": "Generic", + "subcategory": "Network Elements", + "artifacts": [] + } + ], + "serviceArtifacts": [{ + "artifactName": "service-Demovcpeinfra-template.yml", + "artifactType": "TOSCA_TEMPLATE", + "artifactURL": "service-Demovcpeinfra-template.yml", + "artifactChecksum": "ZDY3ZGY4ZTM4ZDA3ZjY4M2Y2MDgxNzI0MDE3NjkzODM=", + "artifactDescription": "TOSCA representation of the asset", + "artifactTimeout": 0, + "artifactUUID": "a4180154-1279-47d5-acbc-392e87d3fc7f", + "artifactVersion": "1" + }, { + "artifactName": "service-Demovcpeinfra-csar.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "service-Demovcpeinfra-csar.csar", + "artifactChecksum": "NjlhMDk2YzNlNTI5OTg3MzE2ZmUzYjI5MTY2M2Y5YmU=", + "artifactDescription": "TOSCA definition package of the asset", + "artifactTimeout": 0, + "artifactUUID": "144606d8-a505-4ba0-90a9-6d1c6219fc6b", + "artifactVersion": "1" + } + ], + "workloadContext": "Production" +} diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..841c681088b8ace0b0837fd1fce7e437fde2eb1a GIT binary patch literal 115651 zcmb5VV~{RQ)Fs-secHBd+qT`OZQHhO+cr+ywrz9z{bnNW{c|VcRz_9S^JGM2?yStU z*V?&DUJ4il1pop90zgWkLKfivbwK{!8#x*{&{~@~89=+(FT>u!ySOYq$h&1 z>(6hkvYe8T0FBIVW5xzf26X@P^MBfwiK&Mgq=yl9^$qszlW6pi+H$dkk~yVS1O;iq zHby+}tsRYeadX|g&lo(-Dci+GneGI@46r6rv__>cxe1`)Wss9D+oKys{Sssjpa zZqH(s> zzAN=^44=aL&!h@;Ebge^4!8VYO``p+6*e)ou(5Emu(ffdb2M>qu`n{B5jL^5buqFt zv9K|9FraZVv9_}^a5ABFx3;?C(QwQhTfTXqa(knESw@L)k@9(94JQjfU~fs>L`Mxs zkr4rc#pjr={pkR#w=Ml(PO#aUoKWvOySmi!Y^k(l3Z#~vc$D67Fw@#^d-Rn>o$)=) zsC-J8)NNjJSk8Rk-1tmG&$b%%#vNiCJ^Eq&?udQ)ElH?D#!?I@A$ z_{!n@GrJ?EX}hjv{#dzt6z<|sFmvMQ%=yQ8$sqMRm-Uiv5jpx4SrE|t0r|b5xO%MI zFfRGa&EC`5ng$ze0Keus&2lEURMxDqDHkP`T}z4VU+AOCjk64(7i`X4@7c!TKNnrO zWUT$})oHmSBRQN|@V%3l?+@GUq2A54i7mR4BM+zck`X^}+njPKnI)D{qC0f8j&98z zbE*Z8f{jzFRiXhOPciEKSxAiZ(3GE(>Tc$z6+3c6Ynjm&)uDS@s|ljsE+vvzFOE(k zEko-t582aaEjiy=q6VB9o-ZL4>P*_)?C1h&X;#~x(CLf65_k=cMj!DW{$CipE6vTU zY^f-S^R>jj@OsW;^E)6fYucsTGCUA^J`R^M@724hw|5!UTug`8t+%LC4OVo1nO;

ex+3s5_sNAhnzO7+iCd|7dM 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 UihVZXDK?FJfjB+^c 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%0A&fAdYi!x*V{s0l~TDiPt87ao$gzj-3+l< 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.04e401c4f-0679-46a0-b7f1vendor entitlement pool111111Percentage1002019-05-10T00:00:00Z2020-05-09T23:59:59Z1.022353211-5524-4b26-af02vendor license key groupUniversal111114e872234ca73482da2d4efc0a7da9e0665C063A5402146DC9CEDDB7D99F9BA1APercentage1002019-05-10T00:00:00Z2020-05-09T23:59:59Z \ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/vf-license-model.xml new file mode 100644 index 0000000000..cc13fa4fea --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/vf-license-model.xml @@ -0,0 +1 @@ +4c24f75d-4191-4447-9b61b9cd64d6d4dc4a93953193ac0bc096194e401c4f-0679-46a0-b7f1vendor entitlement poolaf63f5c36c93451c99640c1b63ae5bc9187EE1211F1A437CBCC6032B60841846111111Percentage1001.02019-05-10T00:00:00Z2020-05-09T23:59:59Z22353211-5524-4b26-af02vendor license key groupUniversal4e872234ca73482da2d4efc0a7da9e0665C063A5402146DC9CEDDB7D99F9BA1A11111Percentage1001.02019-05-10T00:00:00Z2020-05-09T23:59:59Z9bc21ea0-5bcd-44d6-93f0f7fdb15660df4254b520797c59297b24123abc456vendor feature group \ No newline at end of file -- 2.16.6