From 0f65f07915ae81528fa40ab90087ef4987be26ee Mon Sep 17 00:00:00 2001 From: eeginux Date: Thu, 7 Nov 2019 15:19:58 +0000 Subject: [PATCH] SO CDS Metadata ingestion Add support for controller_actor ingestion Add support for blueprint in service Add support for skip conf flag in vf module Ingest new properties into SO database Sample csar files are cleaned without comment and description Issue-ID: SO-2313 Change-Id: I657f997faf33a366f3c234c3e41b164275beedac Signed-off-by: eeginux --- .../V8.1__AddControllerActorAndBlueprint.sql | 23 +++ .../src/test/resources/schema.sql | 7 + .../so/asdc/installer/ToscaResourceStructure.java | 3 +- .../installer/heat/ToscaResourceInstaller.java | 23 ++- .../onap/so/asdc/client/ASDCControllerITTest.java | 205 ++++++++++++++++++--- .../resources/download/service-pnfservice.csar | Bin 0 -> 27525 bytes .../resources/download/service-vnfservice.csar | Bin 0 -> 27602 bytes asdc-controller/src/test/resources/schema.sql | 9 +- .../src/test/resources/schema.sql | 7 + .../db/catalog/beans/PnfResourceCustomization.java | 12 +- .../java/org/onap/so/db/catalog/beans/Service.java | 43 +++++ .../so/db/catalog/beans/VfModuleCustomization.java | 11 ++ .../db/catalog/beans/VnfResourceCustomization.java | 12 +- mso-catalog-db/src/test/resources/schema.sql | 7 + 14 files changed, 325 insertions(+), 37 deletions(-) create mode 100644 adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.1__AddControllerActorAndBlueprint.sql create mode 100644 asdc-controller/src/test/resources/download/service-pnfservice.csar create mode 100644 asdc-controller/src/test/resources/download/service-vnfservice.csar diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.1__AddControllerActorAndBlueprint.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.1__AddControllerActorAndBlueprint.sql new file mode 100644 index 0000000000..5560dcc0de --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.1__AddControllerActorAndBlueprint.sql @@ -0,0 +1,23 @@ +use catalogdb; + +ALTER TABLE service +ADD CONTROLLER_ACTOR varchar(200) null; + +ALTER TABLE service +ADD CDS_BLUEPRINT_NAME varchar(200) null; + +ALTER TABLE service +ADD CDS_BLUEPRINT_VERSION varchar(20) null; + +ALTER TABLE service +ADD SKIP_POST_INSTANTIATION_CONFIGURATION boolean default true; + +ALTER TABLE vnf_resource_customization +ADD CONTROLLER_ACTOR varchar(200) null; + +ALTER TABLE pnf_resource_customization +ADD CONTROLLER_ACTOR varchar(200) null; + +ALTER TABLE vf_module_customization +ADD SKIP_POST_INSTANTIATION_CONFIGURATION boolean default true; + diff --git a/adapters/mso-openstack-adapters/src/test/resources/schema.sql b/adapters/mso-openstack-adapters/src/test/resources/schema.sql index 9406bc445d..b96d58f419 100644 --- a/adapters/mso-openstack-adapters/src/test/resources/schema.sql +++ b/adapters/mso-openstack-adapters/src/test/resources/schema.sql @@ -806,6 +806,10 @@ CREATE TABLE `service` ( `OVERALL_DISTRIBUTION_STATUS` varchar(45), `ONAP_GENERATED_NAMING` TINYINT(1) DEFAULT NULL, `NAMING_POLICY` varchar(200) DEFAULT NULL, + `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL, + `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, + `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, PRIMARY KEY (`MODEL_UUID`), KEY `fk_service__tosca_csar1_idx` (`TOSCA_CSAR_ARTIFACT_UUID`), CONSTRAINT `fk_service__tosca_csar1` FOREIGN KEY (`TOSCA_CSAR_ARTIFACT_UUID`) REFERENCES `tosca_csar` (`ARTIFACT_UUID`) ON DELETE CASCADE ON UPDATE CASCADE @@ -960,6 +964,7 @@ CREATE TABLE `vf_module_customization` ( `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `VF_MODULE_MODEL_UUID` varchar(200) NOT NULL, `VNF_RESOURCE_CUSTOMIZATION_ID` int(13) DEFAULT NULL, + `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, PRIMARY KEY (`ID`), KEY `fk_vf_module_customization__vf_module1_idx` (`VF_MODULE_MODEL_UUID`), KEY `fk_vf_module_customization__heat_env__heat_environment1_idx` (`HEAT_ENVIRONMENT_ARTIFACT_UUID`), @@ -1111,6 +1116,7 @@ CREATE TABLE `vnf_resource_customization` ( `SERVICE_MODEL_UUID` varchar(200) NOT NULL, `NF_DATA_VALID` tinyint(1) DEFAULT '0', `VNFCINSTANCEGROUP_ORDER` varchar(200) default NULL, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `UK_vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`,`SERVICE_MODEL_UUID`), KEY `fk_vnf_resource_customization__vnf_resource1_idx` (`VNF_RESOURCE_MODEL_UUID`), @@ -1192,6 +1198,7 @@ CREATE TABLE IF NOT EXISTS `pnf_resource_customization` ( `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL, `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL, `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, PRIMARY KEY (`MODEL_CUSTOMIZATION_UUID`), KEY `fk_pnf_resource_customization__pnf_resource1_idx` (`PNF_RESOURCE_MODEL_UUID`), CONSTRAINT `fk_pnf_resource_customization__pnf_resource1` FOREIGN KEY (`PNF_RESOURCE_MODEL_UUID`) REFERENCES `pnf_resource` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/ToscaResourceStructure.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/ToscaResourceStructure.java index 3f1b080ec1..dcb49478f4 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/ToscaResourceStructure.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/ToscaResourceStructure.java @@ -25,7 +25,6 @@ package org.onap.so.asdc.installer; import java.io.File; import java.nio.file.Paths; import java.util.List; -import org.onap.so.logger.LoggingAnchor; import org.onap.sdc.api.notification.IArtifactInfo; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; @@ -52,10 +51,10 @@ import org.onap.so.db.catalog.beans.VfModule; import org.onap.so.db.catalog.beans.VfModuleCustomization; import org.onap.so.db.catalog.beans.VnfResourceCustomization; import org.onap.so.logger.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; public class ToscaResourceStructure { diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java index 8d51d5b894..5987c5ad93 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java @@ -182,6 +182,12 @@ public class ToscaResourceInstaller { protected static final String SKIP_POST_INST_CONF = "skip_post_instantiation_configuration"; + private static final String CONTROLLER_ACTOR = "controller_actor"; + + private static final String CDS_MODEL_NAME = "cds_model_name"; + + private static final String CDS_MODEL_VERSION = "cds_model_version"; + @Autowired protected ServiceRepository serviceRepo; @@ -975,8 +981,8 @@ public class ToscaResourceInstaller { pnfResourceCustomization.setBlueprintName(getStringValue(properties.get(SDNC_MODEL_NAME))); pnfResourceCustomization.setBlueprintVersion(getStringValue(properties.get(SDNC_MODEL_VERSION))); pnfResourceCustomization.setSkipPostInstConf(getBooleanValue(properties.get(SKIP_POST_INST_CONF))); + pnfResourceCustomization.setControllerActor(getStringValue(properties.get(CONTROLLER_ACTOR))); pnfResourceCustomization.setPnfResources(pnfResource); - return pnfResourceCustomization; } @@ -1401,7 +1407,6 @@ public class ToscaResourceInstaller { ResourceStructure resourceStructure) { Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata(); - List services = serviceRepo.findByModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); Service service; @@ -1438,6 +1443,10 @@ public class ToscaResourceInstaller { generateNamingValue = "true".equalsIgnoreCase(generateNaming); } service.setOnapGeneratedNaming(generateNamingValue); + service.setBlueprintName(serviceMetadata.getValue(CDS_MODEL_NAME)); + service.setBlueprintVersion(serviceMetadata.getValue(CDS_MODEL_VERSION)); + service.setSkipPostInstConf(Boolean.valueOf(serviceMetadata.getValue(SKIP_POST_INST_CONF))); + service.setControllerActor(serviceMetadata.getValue(CONTROLLER_ACTOR)); } @@ -2382,6 +2391,14 @@ public class ToscaResourceInstaller { if (minInstances != null && minInstances.length() > 0) { vfModuleCustomization.setMinInstances(Integer.valueOf(minInstances)); } + + String skipPostInstConfText = getLeafPropertyValue(vfModuleEntityDetails, SKIP_POST_INST_CONF); + + if (skipPostInstConfText != null) { + vfModuleCustomization.setSkipPostInstConf( + Boolean.parseBoolean(getLeafPropertyValue(vfModuleEntityDetails, SKIP_POST_INST_CONF))); + } + return vfModuleCustomization; } @@ -2576,7 +2593,7 @@ public class ToscaResourceInstaller { Boolean.parseBoolean(getLeafPropertyValue(entityDetails, SKIP_POST_INST_CONF))); } - + vnfResourceCustomization.setControllerActor(getLeafPropertyValue(entityDetails, CONTROLLER_ACTOR)); vnfResourceCustomization.setVnfResources(vnfResource); vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger( entityDetails.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT))); diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java index 0c7f97759b..3db017cac5 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java @@ -1,15 +1,20 @@ -/* - * ============LICENSE_START======================================================= Copyright (C) 2019 Nordix - * Foundation. ================================================================================ 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 +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix + * ================================================================================ + * 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. + * 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. * - * SPDX-License-Identifier: Apache-2.0 ============LICENSE_END========================================================= + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= */ package org.onap.so.asdc.client; @@ -20,6 +25,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; 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 static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Collections; @@ -29,7 +35,6 @@ import java.util.UUID; import javax.persistence.EntityNotFoundException; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; @@ -64,7 +69,10 @@ import org.springframework.transaction.annotation.Transactional; * This is used to run some basic integration test(BIT) for ASDC controller. It will test the csar install and all the * testing csar files are located underneath src/main/resources/download folder, * - * PNF csar: service-Testservice140-csar.csar VNF csar: service-Svc140-VF-csar.csar + * PNF csar: service-pnfservice.csar VNF csar: service-Svc140-VF-csar.csar + * + * All the csar files are cleaned, i.e, removing the comments and most of the description to avoid violation of + * security. */ @Transactional public class ASDCControllerITTest extends BaseTest { @@ -141,12 +149,148 @@ public class ASDCControllerITTest extends BaseTest { * Mock the AAI using wireshark. */ private void initMockAaiServer(final String serviceUuid, final String serviceInvariantUuid) { - String modelEndpoint = "/aai/v15/service-design-and-creation/models/model/" + serviceInvariantUuid + String modelEndpoint = "/aai/v17/service-design-and-creation/models/model/" + serviceInvariantUuid + "/model-vers/model-ver/" + serviceUuid + "?depth=0"; wireMockServer.stubFor(post(urlEqualTo(modelEndpoint)).willReturn(ok())); } + /** + * Test with service-pnfservice.csar. + */ + @Test + public void treatNotification_ValidPnfResource_ExpectedOutput() { + + /** + * service UUID/invariantUUID from global metadata in service-PnfServiceTestCds-template.yml. + */ + String serviceUuid = "77cf276e-905c-43f6-8d54-dda474be2f2e"; + String serviceInvariantUuid = "913e6776-4bc3-49b9-b399-b5bb4690f0c7"; + + initMockAaiServer(serviceUuid, serviceInvariantUuid); + + NotificationDataImpl notificationData = new NotificationDataImpl(); + notificationData.setServiceUUID(serviceUuid); + notificationData.setDistributionID(distributionId); + notificationData.setServiceInvariantUUID(serviceInvariantUuid); + notificationData.setServiceVersion("1.0"); + + ResourceInfoImpl resourceInfo = constructPnfResourceInfo(); + List resourceInfoList = new ArrayList<>(); + resourceInfoList.add(resourceInfo); + notificationData.setResources(resourceInfoList); + + ArtifactInfoImpl artifactInfo = constructPnfServiceArtifact(); + List artifactInfoList = new ArrayList<>(); + artifactInfoList.add(artifactInfo); + notificationData.setServiceArtifacts(artifactInfoList); + + try { + asdcController.treatNotification(notificationData); + + logger.info("Checking the database for PNF ingestion"); + + /** + * Check the tosca csar entity, it should be the same as provided from NotficationData. + */ + ToscaCsar toscaCsar = toscaCsarRepository.findById(artifactUuid) + .orElseThrow(() -> new EntityNotFoundException("Tosca csar: " + artifactUuid + " not found")); + assertEquals("tosca csar UUID", artifactUuid, toscaCsar.getArtifactUUID()); + assertEquals("tosca csar name", "service-pnfservice.csar", toscaCsar.getName()); + assertEquals("tosca csar version", "1.0", toscaCsar.getVersion()); + assertNull("tosca csar descrption", toscaCsar.getDescription()); + assertEquals("tosca csar checksum", "MANUAL_RECORD", toscaCsar.getArtifactChecksum()); + assertEquals("toscar csar URL", "/download/service-pnfservice.csar", toscaCsar.getUrl()); + + /** + * Check the service entity, it should be the same as global metadata information in + * service-Testservice140-template.yml inside csar. + */ + Service service = serviceRepository.findById(serviceUuid) + .orElseThrow(() -> new EntityNotFoundException("Service: " + serviceUuid + " not found")); + assertEquals("model UUID", serviceUuid, service.getModelUUID()); + assertEquals("model name", "PNF Service Test CDS", service.getModelName()); + assertEquals("model invariantUUID", serviceInvariantUuid, service.getModelInvariantUUID()); + assertEquals("model version", "1.0", service.getModelVersion()); + assertEquals("description", "123123", service.getDescription().trim()); + assertEquals("tosca csar artifact UUID", artifactUuid, service.getCsar().getArtifactUUID()); + assertEquals("service type", "", service.getServiceType()); + assertEquals("service role", "", service.getServiceRole()); + assertEquals("environment context", "General_Revenue-Bearing", service.getEnvironmentContext()); + assertEquals("service category", "Network L1-3", service.getCategory()); + assertNull("workload context", service.getWorkloadContext()); + assertEquals("resource order", "PNF CDS Test", service.getResourceOrder()); + assertEquals("CDS blueprint name", "Blueprint140", service.getBlueprintName()); + assertEquals("CDS blueprint version", "v1.4.0", service.getBlueprintVersion()); + assertEquals("controller actor", "SO-REF-DATA", service.getControllerActor()); + + /** + * Check PNF resource, it should be the same as metadata in the topology template in + * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml + */ + String pnfResourceKey = "aa5d0562-80e7-43e9-af74-3085e57ab09f"; + PnfResource pnfResource = pnfResourceRepository.findById(pnfResourceKey) + .orElseThrow(() -> new EntityNotFoundException("PNF resource:" + pnfResourceKey + " not found")); + assertNull("orchestration mode", pnfResource.getOrchestrationMode()); + assertEquals("Description", "123123", pnfResource.getDescription().trim()); + assertEquals("model UUID", pnfResourceKey, pnfResource.getModelUUID()); + assertEquals("model invariant UUID", "17d9d183-cee5-4a46-b5c4-6d5203f7d2e8", + pnfResource.getModelInvariantUUID()); + assertEquals("model version", "1.0", pnfResource.getModelVersion()); + assertEquals("model name", "PNF CDS Test", pnfResource.getModelName()); + assertEquals("tosca node type", "org.openecomp.resource.pnf.PnfCdsTest", pnfResource.getToscaNodeType()); + assertEquals("resource category", "Application L4+", pnfResource.getCategory()); + assertEquals("resource sub category", "Firewall", pnfResource.getSubCategory()); + + /** + * Check PNF resource customization, it should be the same as metadata in the topology template in + * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml + */ + String pnfCustomizationKey = "9f01263a-eaf7-4d98-a37b-3785f751903e"; + PnfResourceCustomization pnfCustomization = pnfCustomizationRepository.findById(pnfCustomizationKey) + .orElseThrow(() -> new EntityNotFoundException( + "PNF resource customization: " + pnfCustomizationKey + " not found")); + assertEquals("model customizationUUID", pnfCustomizationKey, pnfCustomization.getModelCustomizationUUID()); + assertEquals("model instance name", "PNF CDS Test 0", pnfCustomization.getModelInstanceName()); + assertEquals("NF type", "", pnfCustomization.getNfType()); + assertEquals("NF Role", "nf", pnfCustomization.getNfRole()); + assertEquals("NF function", "nf", pnfCustomization.getNfFunction()); + assertEquals("NF naming code", "", pnfCustomization.getNfNamingCode()); + assertEquals("PNF resource model UUID", pnfResourceKey, pnfCustomization.getPnfResources().getModelUUID()); + assertEquals("Multi stage design", "", pnfCustomization.getMultiStageDesign()); + assertNull("resource input", pnfCustomization.getResourceInput()); + assertEquals("cds blueprint name(sdnc_model_name property)", "Blueprint140", + pnfCustomization.getBlueprintName()); + assertEquals("cds blueprint version(sdnc_model_version property)", "v1.4.0", + pnfCustomization.getBlueprintVersion()); + assertTrue("skip post instantiation configuration", pnfCustomization.isSkipPostInstConf()); + assertEquals("controller actor", "SO-REF-DATA", pnfCustomization.getControllerActor()); + + /** + * Check the pnf resource customization with service mapping + */ + List pnfCustList = service.getPnfCustomizations(); + assertEquals("PNF resource customization entity", 1, pnfCustList.size()); + assertEquals(pnfCustomizationKey, pnfCustList.get(0).getModelCustomizationUUID()); + + /** + * Check the watchdog for component distribution status + */ + List distributionList = + watchdogCDStatusRepository.findByDistributionId(this.distributionId); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals("COMPONENT_DONE_OK", distributionStatus.getComponentDistributionStatus()); + assertEquals("SO", distributionStatus.getComponentName()); + + + } catch (Exception e) { + logger.info(e.getMessage(), e); + fail(e.getMessage()); + } + } + /** * Test to check RequestId is being set using the DistributionID. */ @@ -179,8 +323,8 @@ public class ASDCControllerITTest extends BaseTest { private ArtifactInfoImpl constructPnfServiceArtifact() { ArtifactInfoImpl artifactInfo = new ArtifactInfoImpl(); artifactInfo.setArtifactType(ASDCConfiguration.TOSCA_CSAR); - artifactInfo.setArtifactURL("/download/service-Testservice140-csar.csar"); - artifactInfo.setArtifactName("service-Testservice140-csar.csar"); + artifactInfo.setArtifactURL("/download/service-pnfservice.csar"); + artifactInfo.setArtifactName("service-pnfservice.csar"); artifactInfo.setArtifactVersion("1.0"); artifactInfo.setArtifactUUID(artifactUuid); return artifactInfo; @@ -192,13 +336,13 @@ public class ASDCControllerITTest extends BaseTest { */ private ResourceInfoImpl constructPnfResourceInfo() { ResourceInfoImpl resourceInfo = new ResourceInfoImpl(); - resourceInfo.setResourceInstanceName("Test140PNF"); - resourceInfo.setResourceInvariantUUID("d832a027-75f3-455d-9de4-f02fcdee7e7e"); + resourceInfo.setResourceInstanceName("PNF CDS Test"); + resourceInfo.setResourceInvariantUUID("17d9d183-cee5-4a46-b5c4-6d5203f7d2e8"); resourceInfo.setResoucreType("PNF"); resourceInfo.setCategory("Application L4+"); - resourceInfo.setSubcategory("Call Control"); - resourceInfo.setResourceUUID("9c54e269-122b-4e8a-8b2a-6eac849b441a"); - resourceInfo.setResourceCustomizationUUID("428a3d73-f962-4cc2-ba62-2483c45d6b12"); + resourceInfo.setSubcategory("Firewall"); + resourceInfo.setResourceUUID("aa5d0562-80e7-43e9-af74-3085e57ab09f"); + resourceInfo.setResourceCustomizationUUID("9f01263a-eaf7-4d98-a37b-3785f751903e"); resourceInfo.setResourceVersion("1.0"); return resourceInfo; } @@ -207,7 +351,6 @@ public class ASDCControllerITTest extends BaseTest { * Testing with the service-Svc140-VF-csar.csar. */ @Test - @Ignore public void treatNotification_ValidVnfResource_ExpectedOutput() { /** @@ -244,11 +387,11 @@ public class ASDCControllerITTest extends BaseTest { ToscaCsar toscaCsar = toscaCsarRepository.findById(artifactUuid) .orElseThrow(() -> new EntityNotFoundException("Tosca csar: " + artifactUuid + " not found")); assertEquals("tosca csar UUID", artifactUuid, toscaCsar.getArtifactUUID()); - assertEquals("tosca csar name", "service-Svc140-VF-csar.csar", toscaCsar.getName()); + assertEquals("tosca csar name", "service-vnfservice.csar", toscaCsar.getName()); assertEquals("tosca csar version", "1.0", toscaCsar.getVersion()); assertNull("tosca csar descrption", toscaCsar.getDescription()); assertEquals("tosca csar checksum", "MANUAL_RECORD", toscaCsar.getArtifactChecksum()); - assertEquals("toscar csar URL", "/download/service-Svc140-VF-csar.csar", toscaCsar.getUrl()); + assertEquals("toscar csar URL", "/download/service-vnfservice.csar", toscaCsar.getUrl()); /** * Check the service entity, it should be the same as global metadata information in @@ -268,6 +411,9 @@ public class ASDCControllerITTest extends BaseTest { assertEquals("service category", "Network Service", service.getCategory()); assertNull("workload context", service.getWorkloadContext()); assertEquals("resource order", "TestVF140", service.getResourceOrder()); + assertEquals("CDS blueprint name", "BP140", service.getBlueprintName()); + assertEquals("CDS blueprint version", "v1.4.0", service.getBlueprintVersion()); + assertEquals("controller actor", "SO-REF-DATA", service.getControllerActor()); /** * Check VNF resource, it should be the same as metadata in the topology template in @@ -304,11 +450,12 @@ public class ASDCControllerITTest extends BaseTest { assertNull("NF naming code", vnfCustomization.getNfNamingCode()); assertEquals("VNF resource model UUID", vnfResourceKey, vnfCustomization.getVnfResources().getModelUUID()); assertEquals("Multi stage design", "false", vnfCustomization.getMultiStageDesign()); - assertNull("resource input", vnfCustomization.getResourceInput()); - assertEquals("cds blueprint name(sdnc_model_name property)", vnfCustomization.getBlueprintName(), - vnfCustomization.getBlueprintName()); - assertEquals("cds blueprint version(sdnc_model_version property)", vnfCustomization.getBlueprintVersion(), + assertNotNull("resource input", vnfCustomization.getResourceInput()); + assertEquals("cds blueprint name(sdnc_model_name property)", "BP140", vnfCustomization.getBlueprintName()); + assertEquals("cds blueprint version(sdnc_model_version property)", "v1.4.0", vnfCustomization.getBlueprintVersion()); + assertEquals("controller actor", "SO-REF-DATA", vnfCustomization.getControllerActor()); + /** * Check the vnf resource customization with service mapping */ @@ -335,8 +482,8 @@ public class ASDCControllerITTest extends BaseTest { private ArtifactInfoImpl constructVnfServiceArtifact() { ArtifactInfoImpl artifactInfo = new ArtifactInfoImpl(); artifactInfo.setArtifactType(ASDCConfiguration.TOSCA_CSAR); - artifactInfo.setArtifactURL("/download/service-Svc140-VF-csar.csar"); - artifactInfo.setArtifactName("service-Svc140-VF-csar.csar"); + artifactInfo.setArtifactURL("/download/service-vnfservice.csar"); + artifactInfo.setArtifactName("service-vnfservice.csar"); artifactInfo.setArtifactVersion("1.0"); artifactInfo.setArtifactUUID(artifactUuid); return artifactInfo; diff --git a/asdc-controller/src/test/resources/download/service-pnfservice.csar b/asdc-controller/src/test/resources/download/service-pnfservice.csar new file mode 100644 index 0000000000000000000000000000000000000000..89d24a18ee075f284a2c7f8614261aed0e5b8aa6 GIT binary patch literal 27525 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 W5bh=0Fff?+KZ5&~JL<*{d;bAT1d@*c literal 0 HcmV?d00001 diff --git a/asdc-controller/src/test/resources/download/service-vnfservice.csar b/asdc-controller/src/test/resources/download/service-vnfservice.csar new file mode 100644 index 0000000000000000000000000000000000000000..25d2ebd6c678abcac3ecdd55f10d181a877a980c GIT binary patch literal 27602 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 cvnfcCustomization; + @Column(name = "SKIP_POST_INSTANTIATION_CONFIGURATION") + private Boolean skipPostInstConf; + @Override public boolean equals(final Object other) { if (!(other instanceof VfModuleCustomization)) { @@ -239,4 +242,12 @@ public class VfModuleCustomization implements Serializable { public void setCvnfcCustomization(Set cvnfcCustomization) { this.cvnfcCustomization = cvnfcCustomization; } + + public Boolean isSkipPostInstConf() { + return skipPostInstConf; + } + + public void setSkipPostInstConf(Boolean skipPostInstConf) { + this.skipPostInstConf = skipPostInstConf; + } } diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResourceCustomization.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResourceCustomization.java index aec1c7fb22..094a1f0bf3 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResourceCustomization.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResourceCustomization.java @@ -124,6 +124,9 @@ public class VnfResourceCustomization implements Serializable { @Column(name = "NF_DATA_VALID") private Boolean nfDataValid; + @Column(name = "CONTROLLER_ACTOR") + private String controllerActor; + @Override public boolean equals(final Object other) { if (!(other instanceof VnfResourceCustomization)) { @@ -152,7 +155,8 @@ public class VnfResourceCustomization implements Serializable { .append("multiStageDesign", multiStageDesign).append("vnfResources", vnfResources) .append("vfModuleCustomizations", vfModuleCustomizations) .append("vnfcInstanceGroupOrder", vnfcInstanceGroupOrder) - .append("vnfcInstanceGroupCustomizations", vnfcInstanceGroupCustomizations).toString(); + .append("vnfcInstanceGroupCustomizations", vnfcInstanceGroupCustomizations) + .append("controllerActor", controllerActor).toString(); } @PrePersist @@ -345,5 +349,11 @@ public class VnfResourceCustomization implements Serializable { this.nfDataValid = nfDataValid; } + public String getControllerActor() { + return controllerActor; + } + public void setControllerActor(String controllerActor) { + this.controllerActor = controllerActor; + } } diff --git a/mso-catalog-db/src/test/resources/schema.sql b/mso-catalog-db/src/test/resources/schema.sql index 73370e1078..67584133f8 100644 --- a/mso-catalog-db/src/test/resources/schema.sql +++ b/mso-catalog-db/src/test/resources/schema.sql @@ -807,6 +807,10 @@ CREATE TABLE `service` ( `OVERALL_DISTRIBUTION_STATUS` varchar(45), `ONAP_GENERATED_NAMING` TINYINT(1) DEFAULT NULL, `NAMING_POLICY` varchar(200) DEFAULT NULL, + `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL, + `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, + `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, PRIMARY KEY (`MODEL_UUID`), KEY `fk_service__tosca_csar1_idx` (`TOSCA_CSAR_ARTIFACT_UUID`), CONSTRAINT `fk_service__tosca_csar1` FOREIGN KEY (`TOSCA_CSAR_ARTIFACT_UUID`) REFERENCES `tosca_csar` (`ARTIFACT_UUID`) ON DELETE CASCADE ON UPDATE CASCADE @@ -961,6 +965,7 @@ CREATE TABLE `vf_module_customization` ( `CREATION_TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `VF_MODULE_MODEL_UUID` varchar(200) NOT NULL, `VNF_RESOURCE_CUSTOMIZATION_ID` int(13) DEFAULT NULL, + `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, PRIMARY KEY (`ID`), KEY `fk_vf_module_customization__vf_module1_idx` (`VF_MODULE_MODEL_UUID`), KEY `fk_vf_module_customization__heat_env__heat_environment1_idx` (`HEAT_ENVIRONMENT_ARTIFACT_UUID`), @@ -1112,6 +1117,7 @@ CREATE TABLE `vnf_resource_customization` ( `SERVICE_MODEL_UUID` varchar(200) NOT NULL, `NF_DATA_VALID` tinyint(1) DEFAULT '0', `VNFCINSTANCEGROUP_ORDER` varchar(200) default NULL, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `UK_vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`,`SERVICE_MODEL_UUID`), KEY `fk_vnf_resource_customization__vnf_resource1_idx` (`VNF_RESOURCE_MODEL_UUID`), @@ -1193,6 +1199,7 @@ CREATE TABLE IF NOT EXISTS `pnf_resource_customization` ( `CDS_BLUEPRINT_NAME` varchar(200) DEFAULT NULL, `CDS_BLUEPRINT_VERSION` varchar(20) DEFAULT NULL, `SKIP_POST_INSTANTIATION_CONFIGURATION` boolean default true, + `CONTROLLER_ACTOR` varchar(200) DEFAULT NULL, PRIMARY KEY (`MODEL_CUSTOMIZATION_UUID`), KEY `fk_pnf_resource_customization__pnf_resource1_idx` (`PNF_RESOURCE_MODEL_UUID`), CONSTRAINT `fk_pnf_resource_customization__pnf_resource1` FOREIGN KEY (`PNF_RESOURCE_MODEL_UUID`) REFERENCES `pnf_resource` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE -- 2.16.6