From 164596ffc56c1f9a4418a2f3b8f3941896b124f7 Mon Sep 17 00:00:00 2001 From: Mateusz Gołuchowski Date: Thu, 5 Nov 2020 15:47:23 +0100 Subject: Update VID SO API call generation - include PNF instanceName parameter in SO API call (macro) Creation of functionality to prepare service with PNF request which call SO. Issue-ID: VID-695 Signed-off-by: Mateusz Goluchowski Change-Id: I5285ac2ab5e95665244ca18c6549249d9330b1ed --- .../java/org/onap/vid/aai/model/ResourceType.java | 1 + .../org/onap/vid/aai/util/AAITreeConverter.java | 1 + .../src/main/java/org/onap/vid/job/JobType.java | 1 + .../org/onap/vid/job/command/MsoRequestBuilder.kt | 44 ++++++++-- .../java/org/onap/vid/job/command/PnfCommand.kt | 60 ++++++++++++++ .../model/aaiTree/ExistingElementsCounterMaps.java | 2 + .../main/java/org/onap/vid/model/aaiTree/Pnf.java | 41 ++++++++++ .../onap/vid/model/aaiTree/ServiceInstance.java | 19 +++++ .../onap/vid/model/serviceInstantiation/Pnf.java | 95 ++++++++++++++++++++++ .../serviceInstantiation/ServiceInstantiation.java | 8 ++ .../ServiceInstantiationTemplate.java | 10 ++- .../java/org/onap/vid/mso/model/Resources.java | 43 ++++++++++ .../model/ServiceInstantiationRequestDetails.java | 38 +++++++-- .../services/InstantiationTemplatesService.java | 1 + .../onap/vid/job/command/ResourceCommandTest.java | 1 + .../impl/AsyncInstantiationIntegrationTest.java | 2 +- .../InstantiationModelSerializationTest.java | 1 + .../vid/services/AsyncInstantiationBaseTest.java | 60 ++++++++++---- .../AsyncInstantiationBusinessLogicTest.java | 16 ++-- .../onap/vid/services/MsoRequestBuilderTest.java | 15 ++-- .../serviceWithCR/getTopologyWithCR.json | 2 + .../payload_jsons/bulk_macro_service_request.json | 24 +++++- .../payload_jsons/bulk_service_no_homing.json | 3 +- .../bulk_service_request_ecomp_naming.json | 3 +- ...k_service_request_no_vfmodule_ecomp_naming.json | 3 +- .../bulk_service_request_unique_names.json | 3 +- 26 files changed, 446 insertions(+), 51 deletions(-) create mode 100644 vid-app-common/src/main/java/org/onap/vid/job/command/PnfCommand.kt create mode 100644 vid-app-common/src/main/java/org/onap/vid/model/aaiTree/Pnf.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/Pnf.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/mso/model/Resources.java diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/ResourceType.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/ResourceType.java index 4d49b5806..0c1e3c11e 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/model/ResourceType.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/model/ResourceType.java @@ -32,6 +32,7 @@ public enum ResourceType { SERVICE_INSTANCE("service-instances", "service-instance-name"), GENERIC_VNF("generic-vnfs", "vnf-name"), + PNF("pnfs", "pnf-name"), L3_NETWORK("l3-networks", "network-name"), VF_MODULE("vf-modules", "vf-module-name"), INSTANCE_GROUP("instance-groups", "instance-group-name"), diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/util/AAITreeConverter.java b/vid-app-common/src/main/java/org/onap/vid/aai/util/AAITreeConverter.java index 111a260e1..b68050d31 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/util/AAITreeConverter.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/util/AAITreeConverter.java @@ -42,6 +42,7 @@ import org.springframework.stereotype.Component; public class AAITreeConverter { public static final String VNF_TYPE = "vnf-type"; + public static final String PNF_TYPE = "pnf-type"; public static final String NETWORK_TYPE = "network-type"; public static final String NETWORK_ROLE = "network-role"; public static final String PHYSICAL_NETWORK_NAME = "physical-network-name"; diff --git a/vid-app-common/src/main/java/org/onap/vid/job/JobType.java b/vid-app-common/src/main/java/org/onap/vid/job/JobType.java index b0cfa7a58..7be286be7 100644 --- a/vid-app-common/src/main/java/org/onap/vid/job/JobType.java +++ b/vid-app-common/src/main/java/org/onap/vid/job/JobType.java @@ -37,6 +37,7 @@ public enum JobType { ALaCarteServiceInstantiation(ALaCarteServiceCommand.class), ALaCarteService(ALaCarteServiceCommand.class), VnfInstantiation(VnfCommand.class), + PnfInstantiation(PnfCommand.class), VfmoduleInstantiation(VfmoduleCommand.class), VolumeGroupInstantiation(VolumeGroupCommand.class), NetworkInstantiation(NetworkCommand.class), diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/MsoRequestBuilder.kt b/vid-app-common/src/main/java/org/onap/vid/job/command/MsoRequestBuilder.kt index c31e69300..17948d4b6 100644 --- a/vid-app-common/src/main/java/org/onap/vid/job/command/MsoRequestBuilder.kt +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/MsoRequestBuilder.kt @@ -65,7 +65,6 @@ class MsoRequestBuilder val serviceInstantiationServiceList = generateMacroServiceInstantiationRequestParams(payload, serviceInstanceName, jobId) - val requestParameters = ServiceInstantiationRequestDetails.RequestParameters(payload.subscriptionServiceType, false, serviceInstantiationServiceList) val requestDetails = generateServiceInstantiationRequestDetails(payload, requestParameters, serviceInstanceName, userId) @@ -221,7 +220,7 @@ class MsoRequestBuilder return !aaiClient.isNodeTypeExistsByName(name, resourceType) } - private fun generateServiceInstantiationServicesList(payload: ServiceInstantiation, serviceInstanceName: String?, vnfList: ServiceInstantiationRequestDetails.ServiceInstantiationVnfList): List { + private fun generateServiceInstantiationServicesList(payload: ServiceInstantiation, serviceInstanceName: String?, vnfList: List, pnfList: List): List { val serviceInstantiationServiceList = LinkedList() val unFilteredInstanceParams = defaultIfNull>>(payload.instanceParams, emptyList()) val filteredInstanceParams = removeUnNeededParams(unFilteredInstanceParams) @@ -229,7 +228,8 @@ class MsoRequestBuilder payload.modelInfo, serviceInstanceName, filteredInstanceParams, - vnfList + vnfList, + pnfList ) serviceInstantiationServiceList.add(serviceInstantiationService) return serviceInstantiationServiceList @@ -255,7 +255,7 @@ class MsoRequestBuilder return if (result.isEmpty()) emptyList() else listOf(result) } - private fun createServiceInstantiationVnfList(jobId: UUID?, payload: ServiceInstantiation): ServiceInstantiationRequestDetails.ServiceInstantiationVnfList { + private fun createServiceInstantiationVnfList(jobId: UUID?, payload: ServiceInstantiation): List { val cloudConfiguration = generateCloudConfiguration(payload.lcpCloudRegionId, payload.tenantId) val isBulk = asyncInstantiationBL.isPartOfBulk(jobId) @@ -278,7 +278,27 @@ class MsoRequestBuilder vnfList.add(serviceInstantiationVnf) } - return ServiceInstantiationRequestDetails.ServiceInstantiationVnfList(vnfList) + return vnfList; + } + + private fun createServiceInstantiationPnfList(jobId: UUID?, payload: ServiceInstantiation): List { + val isBulk = asyncInstantiationBL.isPartOfBulk(jobId) + + val pnfs = payload.pnfs + val pnfList = mutableListOf() + for (pnf in pnfs.values) { + val serviceInstantiationPnf = ServiceInstantiationRequestDetails.ServiceInstantiationPnf( + pnf.modelInfo, + pnf.platformName, + pnf.lineOfBusiness, + payload.productFamilyId, + buildPnfInstanceParams(pnf.instanceParams), + getUniqueNameIfNeeded(pnf.instanceName, ResourceType.PNF, isBulk) + ) + pnfList.add(serviceInstantiationPnf) + } + + return pnfList; } private fun convertVfModuleMapToList(vfModules: Map>): List { @@ -323,6 +343,13 @@ class MsoRequestBuilder return if (vnfInstanceParams.isEmpty()) emptyList() else ImmutableList.of(vnfInstanceParams) } + fun buildPnfInstanceParams(currentPnfInstanceParams: List>): List> { + val filteredPnfInstanceParams = removeUnNeededParams(currentPnfInstanceParams) + + val pnfInstanceParams = extractActualInstanceParams(filteredPnfInstanceParams) + return if (pnfInstanceParams.isEmpty()) emptyList() else ImmutableList.of(pnfInstanceParams) + } + private fun generateServiceInstantiationRequestDetails(payload: ServiceInstantiation, requestParameters: ServiceInstantiationRequestDetails.RequestParameters, serviceInstanceName: String?, userId: String): ServiceInstantiationRequestDetails { val requestInfo = ServiceInstantiationRequestDetails.RequestInfo(serviceInstanceName, payload.productFamilyId, @@ -422,7 +449,12 @@ class MsoRequestBuilder } private fun generateMacroServiceInstantiationRequestParams(payload: ServiceInstantiation, serviceInstanceName: String?, jobId: UUID?): List { - val userParams = generateServiceInstantiationServicesList(payload, serviceInstanceName, createServiceInstantiationVnfList(jobId, payload)) + val userParams = generateServiceInstantiationServicesList( + payload, + serviceInstanceName, + createServiceInstantiationVnfList(jobId, payload), + createServiceInstantiationPnfList(jobId, payload) + ) return userParams.plus(homingSolution()) } diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/PnfCommand.kt b/vid-app-common/src/main/java/org/onap/vid/job/command/PnfCommand.kt new file mode 100644 index 000000000..26bd5704a --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/PnfCommand.kt @@ -0,0 +1,60 @@ +package org.onap.vid.job.command + +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate +import org.onap.vid.job.Job +import org.onap.vid.job.JobAdapter +import org.onap.vid.job.JobCommand +import org.onap.vid.job.JobsBrokerService +import org.onap.vid.job.impl.JobSharedData +import org.onap.vid.model.serviceInstantiation.Pnf +import org.onap.vid.mso.RestMsoImplementation +import org.onap.vid.services.AsyncInstantiationBusinessLogic +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.config.ConfigurableBeanFactory +import org.springframework.context.annotation.Scope +import org.springframework.http.HttpMethod +import org.springframework.stereotype.Component +import org.togglz.core.manager.FeatureManager +import java.util.Optional; + +@Component +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) +class PnfCommand @Autowired constructor( + private val asyncInstantiationBL: AsyncInstantiationBusinessLogic, + restMso: RestMsoImplementation, + private val msoRequestBuilder: MsoRequestBuilder, + msoResultHandlerService: MsoResultHandlerService, + inProgressStatusService:InProgressStatusService, + watchChildrenJobsBL: WatchChildrenJobsBL, + jobsBrokerService: JobsBrokerService, + jobAdapter: JobAdapter, + private val featureManager: FeatureManager +) : ResourceCommand(restMso, inProgressStatusService, msoResultHandlerService, + watchChildrenJobsBL, jobsBrokerService, jobAdapter, featureManager), JobCommand { + + override fun getData(): Map { + return super.getData(); + } + + override fun init(sharedData: JobSharedData, commandData: Map): ResourceCommand { + super.init(sharedData, commandData) + return this + } + + override fun createChildren(): Job.JobStatus { + TODO("Not yet implemented") + } + + override fun planCreateMyselfRestCall(commandParentData: CommandParentData, request: JobAdapter.AsyncJobRequest, userId: String, testApi: String?): MsoRestCallPlan { + return MsoRestCallPlan(HttpMethod.POST, "", Optional.empty(), Optional.empty(), ""); + } + + override fun planDeleteMyselfRestCall(commandParentData: CommandParentData, request: JobAdapter.AsyncJobRequest, userId: String): MsoRestCallPlan { + TODO("Not yet implemented") + } + + override fun getRequest(): Pnf { + return sharedData.request as Pnf + } + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ExistingElementsCounterMaps.java b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ExistingElementsCounterMaps.java index de63c2c94..f3466f364 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ExistingElementsCounterMaps.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ExistingElementsCounterMaps.java @@ -26,6 +26,8 @@ public interface ExistingElementsCounterMaps { Map getExistingVNFCounterMap(); + Map getExistingPNFCounterMap(); + Map getExistingNetworksCounterMap(); Map getExistingVnfGroupCounterMap(); diff --git a/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/Pnf.java b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/Pnf.java new file mode 100644 index 000000000..7f483d7d7 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/Pnf.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.model.aaiTree; + +import static org.onap.vid.aai.util.AAITreeConverter.PNF_TYPE; + +public class Pnf extends Node { + + public Pnf(AAITreeNode node) { + super(node); + fillCloudConfigurationProperties(this, node.getCloudConfiguration()); + } + + public static Pnf from(AAITreeNode node) { + Pnf pnf = new Pnf(node); + + if (node.getAdditionalProperties().get(PNF_TYPE) != null) { + pnf.setInstanceType(node.getAdditionalProperties().get(PNF_TYPE).toString()); + } + + return pnf; + } +} diff --git a/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ServiceInstance.java b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ServiceInstance.java index 78afe1d45..b9a62ced5 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ServiceInstance.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/ServiceInstance.java @@ -41,6 +41,7 @@ public class ServiceInstance extends AbstractNode implements ExistingElementsCou private boolean isALaCarte; private Map vnfs = new HashMap<>(); + private Map pnfs = new HashMap<>(); private Map networks = new HashMap<>(); private Map vrfs = new HashMap<>(); @@ -50,6 +51,7 @@ public class ServiceInstance extends AbstractNode implements ExistingElementsCou private int validationCounter; private Map existingVNFCounterMap; + private Map existingPNFCounterMap; private Map existingNetworksCounterMap; private Map existingVnfGroupCounterMap; private Map existingVRFCounterMap; @@ -170,6 +172,14 @@ public class ServiceInstance extends AbstractNode implements ExistingElementsCou this.vnfs = vnfs; } + public Map getPnfs() { + return pnfs; + } + + public void setPnfs(Map pnfs) { + this.pnfs = pnfs; + } + public Map getNetworks() { return networks; } @@ -207,6 +217,15 @@ public class ServiceInstance extends AbstractNode implements ExistingElementsCou this.existingVNFCounterMap = existingVNFCounterMap; } + @Override + public Map getExistingPNFCounterMap() { + return existingPNFCounterMap; + } + + public void setExistingPNFCounterMap(Map existingPNFCounterMap) { + this.existingPNFCounterMap = existingPNFCounterMap; + } + @Override public Map getExistingNetworksCounterMap() { return existingNetworksCounterMap; diff --git a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/Pnf.java b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/Pnf.java new file mode 100644 index 000000000..e2bf5794e --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/Pnf.java @@ -0,0 +1,95 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.model.serviceInstantiation; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.onap.vid.job.JobAdapter; +import org.onap.vid.job.JobType; +import org.onap.vid.mso.model.ModelInfo; + +import java.util.*; + +import static java.util.stream.Collectors.toList; + +/** + * The Class VNF. + */ +public class Pnf extends BaseResource implements JobAdapter.AsyncJobRequest { + + private final String productFamilyId; + + private final String platformName; + + private final String lineOfBusiness; + + public Pnf(@JsonProperty("modelInfo") ModelInfo modelInfo, + @JsonProperty("productFamilyId") String productFamilyId, + @JsonProperty("instanceName") String instanceName, + @JsonProperty("action") String action, + @JsonProperty("platformName") String platformName, + @JsonProperty("lcpCloudRegionId") String lcpCloudRegionId, + @JsonProperty("legacyRegion") String legacyRegion, + @JsonProperty("tenantId") String tenantId, + @JsonProperty("instanceParams") List> instanceParams, + @JsonProperty("lineOfBusinessName") String lineOfBusiness, + @JsonProperty("rollbackOnFailure") boolean rollbackOnFailure, + @JsonProperty("instanceId") String instanceId, + @JsonProperty("trackById") String trackById, + @JsonProperty("isFailed") Boolean isFailed, + @JsonProperty("statusMessage") String statusMessage, + @JsonProperty("position") Integer position, + @JsonProperty("originalName") String originalName) { + + super(modelInfo, instanceName, action, lcpCloudRegionId, legacyRegion, tenantId, instanceParams, rollbackOnFailure, instanceId, trackById, isFailed, statusMessage, + position, null, originalName); + this.productFamilyId = productFamilyId; + this.platformName = platformName; + this.lineOfBusiness = lineOfBusiness; + } + + public String getProductFamilyId() { + return productFamilyId; + } + + public String getPlatformName() { + return platformName; + } + + public String getLineOfBusiness() { + return lineOfBusiness; + } + + @Override + protected String getModelType() { + return "pnf"; + } + + @Override + public Collection getChildren() { + return null; + } + + @Override + public JobType getJobType() { + return JobType.VnfInstantiation; + } +} diff --git a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiation.java b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiation.java index cae28f7a3..4f47d7b1a 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiation.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiation.java @@ -59,6 +59,8 @@ public class ServiceInstantiation extends BaseResource implements JobAdapter.Asy private final Map vnfs; + private final Map pnfs; + private final Map networks; private final Map vnfGroups; @@ -90,6 +92,7 @@ public class ServiceInstantiation extends BaseResource implements JobAdapter.Asy @JsonProperty("aicZoneId") String aicZoneId, @JsonProperty("aicZoneName") String aicZoneName, @JsonProperty("vnfs") Map vnfs, + @JsonProperty("pnfs") Map pnfs, @JsonProperty("networks") Map networks, @JsonProperty("vnfGroups") Map vnfGroups, @JsonProperty("vrfs") Map vrfs, @@ -119,6 +122,7 @@ public class ServiceInstantiation extends BaseResource implements JobAdapter.Asy this.aicZoneId = aicZoneId; this.aicZoneName = aicZoneName; this.vnfs = vnfs; + this.pnfs = pnfs; this.networks = networks; this.vnfGroups = vnfGroups; this.vrfs = vrfs; @@ -181,6 +185,10 @@ public class ServiceInstantiation extends BaseResource implements JobAdapter.Asy return emptyMapIfNull(vnfs); } + public Map getPnfs() { + return emptyMapIfNull(pnfs); + } + public Map getNetworks() { return emptyMapIfNull(networks); } diff --git a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiationTemplate.java b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiationTemplate.java index 9499beb50..ed2ed1610 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiationTemplate.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/ServiceInstantiationTemplate.java @@ -29,6 +29,7 @@ import org.onap.vid.model.aaiTree.ExistingElementsCounterMaps; public class ServiceInstantiationTemplate extends ServiceInstantiation implements ExistingElementsCounterMaps { private final Map existingVNFCounterMap; + private final Map existingPNFCounterMap; private final Map existingNetworksCounterMap; private final Map existingVnfGroupCounterMap; private final Map existingVRFCounterMap; @@ -37,6 +38,7 @@ public class ServiceInstantiationTemplate extends ServiceInstantiation implement public ServiceInstantiationTemplate( ServiceInstantiation baseService, Map vnfCounterMap, + Map pnfCounterMap, Map networksCounterMap, Map vnfGroupCounterMap, Map VRFCounterMap @@ -47,7 +49,7 @@ public class ServiceInstantiationTemplate extends ServiceInstantiation implement baseService.getProductFamilyId(), baseService.getInstanceName(), baseService.getSubscriptionServiceType(), baseService.getLcpCloudRegionId(), baseService.getLcpCloudRegionId(), baseService.getTenantId(), baseService.getTenantName(), baseService.getAicZoneId(), baseService.getAicZoneName(), - baseService.getVnfs(), baseService.getNetworks(), baseService.getVnfGroups(), baseService.getVrfs(), + baseService.getVnfs(), baseService.getPnfs(), baseService.getNetworks(), baseService.getVnfGroups(), baseService.getVrfs(), baseService.getInstanceParams(), baseService.isPause(), baseService.getBulkSize(), baseService.isRollbackOnFailure(), baseService.isALaCarte(), baseService.getTestApi(), baseService.getInstanceId(), Objects.toString(baseService.getAction(), null), @@ -57,6 +59,7 @@ public class ServiceInstantiationTemplate extends ServiceInstantiation implement ); this.existingVNFCounterMap = vnfCounterMap; + this.existingPNFCounterMap = pnfCounterMap; this.existingNetworksCounterMap = networksCounterMap; this.existingVnfGroupCounterMap = vnfGroupCounterMap; this.existingVRFCounterMap = VRFCounterMap; @@ -67,6 +70,11 @@ public class ServiceInstantiationTemplate extends ServiceInstantiation implement return existingVNFCounterMap; } + @Override + public Map getExistingPNFCounterMap() { + return existingPNFCounterMap; + } + @Override public Map getExistingNetworksCounterMap() { return existingNetworksCounterMap; diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/model/Resources.java b/vid-app-common/src/main/java/org/onap/vid/mso/model/Resources.java new file mode 100644 index 000000000..f0504cdde --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/mso/model/Resources.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.mso.model; + +import java.util.List; + +public class Resources { + + private final List vnfs; + private final List pnfs; + + public Resources(List vnfs, List pnfs) { + this.vnfs = vnfs; + this.pnfs = pnfs; + } + + public List getVnfs() { + return vnfs; + } + + public List getPnfs() { + return pnfs; + } +} + diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/model/ServiceInstantiationRequestDetails.java b/vid-app-common/src/main/java/org/onap/vid/mso/model/ServiceInstantiationRequestDetails.java index acbf778ea..d769aac54 100644 --- a/vid-app-common/src/main/java/org/onap/vid/mso/model/ServiceInstantiationRequestDetails.java +++ b/vid-app-common/src/main/java/org/onap/vid/mso/model/ServiceInstantiationRequestDetails.java @@ -175,8 +175,8 @@ public class ServiceInstantiationRequestDetails { public static class ServiceInstantiationService implements UserParamTypes { private final ServiceInstantiationServiceInner serviceInstantiationServiceInner; - public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List> instanceParams, ServiceInstantiationVnfList vnfs) { - serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs); + public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List> instanceParams, List vnfs, List pnfs) { + serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs, pnfs); } @JsonProperty("service") @@ -189,15 +189,15 @@ public class ServiceInstantiationRequestDetails { @JsonInclude(NON_EMPTY) public String instanceName; public List> instanceParams; - public ServiceInstantiationVnfList resources; + public Resources resources; - public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List> instanceParams, ServiceInstantiationVnfList vnfs) { + public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List> instanceParams, List vnfs, List pnfs) { this.modelInfo.setModelType(modelInfo.getModelType()); this.modelInfo.setModelName(modelInfo.getModelName()); this.modelInfo.setModelVersionId(modelInfo.getModelVersionId()); this.instanceName = instanceName; this.instanceParams = instanceParams; - this.resources = vnfs; + this.resources = new Resources(vnfs, pnfs); } } } @@ -210,6 +210,15 @@ public class ServiceInstantiationRequestDetails { } } + public static class ServiceInstantiationPnfList{ + + public final List pnfs; + + public ServiceInstantiationPnfList(List pnfList) { + this.pnfs = pnfList; + } + } + public static class ServiceInstantiationVnf{ public final ModelInfo modelInfo; public final CloudConfiguration cloudConfiguration; @@ -232,6 +241,25 @@ public class ServiceInstantiationRequestDetails { } } + public static class ServiceInstantiationPnf{ + + public final ModelInfo modelInfo; + public final Platform platform; + public final LineOfBusiness lineOfBusiness; + public final String productFamilyId; + public final List> instanceParams; + @JsonInclude(NON_EMPTY) public final String instanceName; + + public ServiceInstantiationPnf(ModelInfo modelInfo, String platform, String lineOfBusiness, String productFamilyId, List> instanceParams, String instanceName) { + this.modelInfo = modelInfo; + this.platform = new Platform(platform); + this.lineOfBusiness = new LineOfBusiness(lineOfBusiness); + this.productFamilyId = productFamilyId; + this.instanceParams = instanceParams; + this.instanceName = instanceName; + } + } + public static class Platform{ public final String platformName; diff --git a/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java b/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java index 8837798ef..8c8c1909a 100644 --- a/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java +++ b/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java @@ -63,6 +63,7 @@ public class InstantiationTemplatesService { return new ServiceInstantiationTemplate( jobRequest, counterMap(jobRequest.getVnfs()), + counterMap(jobRequest.getPnfs()), counterMap(jobRequest.getNetworks()), counterMap(jobRequest.getVnfGroups()), emptyMap() // model info for VRF is not stored diff --git a/vid-app-common/src/test/java/org/onap/vid/job/command/ResourceCommandTest.java b/vid-app-common/src/test/java/org/onap/vid/job/command/ResourceCommandTest.java index 85faaab28..6d9ae13de 100644 --- a/vid-app-common/src/test/java/org/onap/vid/job/command/ResourceCommandTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/job/command/ResourceCommandTest.java @@ -286,6 +286,7 @@ public class ResourceCommandTest { static ServiceInstantiation createService(List vnfs, List networks, List vnfGroups) { return new ServiceInstantiation(mock(ModelInfo.class), null, null, null, null, null, null, null, null, null, null, null, null, null, null, convertToMap(vnfs), + convertToMap(null), convertToMap(networks), convertToMap(vnfGroups), null, diff --git a/vid-app-common/src/test/java/org/onap/vid/job/impl/AsyncInstantiationIntegrationTest.java b/vid-app-common/src/test/java/org/onap/vid/job/impl/AsyncInstantiationIntegrationTest.java index ce94a7096..62108d5aa 100644 --- a/vid-app-common/src/test/java/org/onap/vid/job/impl/AsyncInstantiationIntegrationTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/job/impl/AsyncInstantiationIntegrationTest.java @@ -213,7 +213,7 @@ public class AsyncInstantiationIntegrationTest extends AsyncInstantiationBaseTes private List pushMacroBulk() { ServiceInstantiation serviceInstantiation = generateMockMacroServiceInstantiationPayload(false, createVnfList(instanceParamsMapWithoutParams, Collections.EMPTY_LIST, true), - 3, true,PROJECT_NAME, true); + createPnfList(), 3, true,PROJECT_NAME, true); return asyncInstantiationBL.pushBulkJob(serviceInstantiation, USER_ID); } diff --git a/vid-app-common/src/test/java/org/onap/vid/model/serviceInstantiation/InstantiationModelSerializationTest.java b/vid-app-common/src/test/java/org/onap/vid/model/serviceInstantiation/InstantiationModelSerializationTest.java index 81ba9578f..632552e75 100644 --- a/vid-app-common/src/test/java/org/onap/vid/model/serviceInstantiation/InstantiationModelSerializationTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/model/serviceInstantiation/InstantiationModelSerializationTest.java @@ -81,6 +81,7 @@ public class InstantiationModelSerializationTest { emptyMap(), emptyMap(), emptyMap(), + emptyMap(), instanceParams, true, 1, diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java index 738af18cf..7ed3e6795 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBaseTest.java @@ -57,13 +57,10 @@ import org.onap.vid.model.Action; import org.onap.vid.model.ServiceInfo; import org.onap.vid.model.ServiceInfo.ServiceAction; import org.onap.vid.model.VidNotions; -import org.onap.vid.model.serviceInstantiation.InstanceGroup; -import org.onap.vid.model.serviceInstantiation.Network; -import org.onap.vid.model.serviceInstantiation.ServiceInstantiation; -import org.onap.vid.model.serviceInstantiation.VfModule; -import org.onap.vid.model.serviceInstantiation.Vnf; +import org.onap.vid.model.serviceInstantiation.*; import org.onap.vid.mso.RestObject; import org.onap.vid.mso.model.ModelInfo; +import org.onap.vid.mso.model.ServiceInstantiationRequestDetails; import org.onap.vid.mso.model.ServiceInstantiationRequestDetails.UserParamNameAndValue; import org.onap.vid.mso.rest.AsyncRequestStatus; import org.onap.vid.mso.rest.RequestStatus; @@ -190,22 +187,22 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests } - public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map vnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) { - return generateMockServiceInstantiationPayload(isPause, vnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null); + public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map vnfs, Map pnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) { + return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null); } public ServiceInstantiation generateMockALaCarteServiceInstantiationPayload(boolean isPause, Map vnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi) { - return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null); + return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null); } public ServiceInstantiation generateMockAlaCarteServiceDeletionPayload(boolean isPause, Map vnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi, String instanceId) { - return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId); + return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId); } - public ServiceInstantiation generateMockServiceDeletionPayload(boolean isPause, Map vnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi, String instanceId) { - return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId); + public ServiceInstantiation generateMockServiceDeletionPayload(boolean isPause, Map vnfs, Map pnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, String testApi, String instanceId) { + return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId); } - private ServiceInstantiation generateMockServiceInstantiationPayload(boolean isPause, Map vnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, boolean isAlacarte, String testApi, Action action, String instanceId) { + private ServiceInstantiation generateMockServiceInstantiationPayload(boolean isPause, Map vnfs, Map pnfs, Map networks, Map vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, boolean isAlacarte, String testApi, Action action, String instanceId) { ModelInfo modelInfo = createModelInfo(); List> instanceParams = createInstanceParams(); @@ -226,6 +223,7 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID, AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME, vnfs, + pnfs, networks, vnfGroups, null, @@ -304,6 +302,26 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName); } + protected ModelInfo createPnfModelInfo() { + ModelInfo modelInfo = new ModelInfo(); + modelInfo.setModelCustomizationName("modelCustomizationName"); + modelInfo.setModelCustomizationId("modelCustomizationId"); + modelInfo.setModelInvariantId("modelInvariantId"); + modelInfo.setModelVersionId("modelVersionId"); + modelInfo.setModelName("modelName"); + modelInfo.setModelType("pnf"); + modelInfo.setModelVersion("1.0"); + return modelInfo; + } + + protected Pnf createPnf() { + ModelInfo modelInfo = createPnfModelInfo(); + List> instanceParams = new ArrayList<>(); + + return new Pnf(modelInfo, "productFamilyId", "instanceName", null, "platformName", null, null, + null, instanceParams, "lineOfBusinessName", true,null, null, null, null, null, null); + } + private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId) { ModelInfo modelInfo = new ModelInfo(); @@ -373,6 +391,16 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests return vnfs; } + protected Map createPnfList() { + Map pnfs = new HashMap<>(); + Pnf pnf = createPnf(); + + pnfs.put(pnf.getModelInfo().getModelName(), pnf); + + + return pnfs; + } + protected void mockAaiClientAaiStatusOK() { when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false); } @@ -387,8 +415,8 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests enableAddCloudOwnerOnMsoRequest(true); } - protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map vnfs) { - return generateMockMacroServiceInstantiationPayload(isPause, vnfs, 1, true, PROJECT_NAME, false); + protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map vnfs, Map pnfs) { + return generateMockMacroServiceInstantiationPayload(isPause, vnfs, pnfs,1, true, PROJECT_NAME, false); } protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) { @@ -397,7 +425,7 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489", "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId, - null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false, + null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false, null, null, null, null, null, null, new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro), "originalName" ); @@ -516,7 +544,7 @@ public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests "foo:002", instanceGroup2, "foo:003", instanceGroup3 ); - return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), groups, + return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), emptyMap(), groups, 1, true, PROJECT_NAME, false, true, "VNF_API", Action.None, "1234567890"); } diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java index 284efce45..5ff05a471 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java @@ -409,7 +409,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT @Test(dataProvider = "pauseAndInstanceParams") public void createMacroServiceInstantiationMsoRequestUniqueName(Boolean isPause, HashMap vfModuleInstanceParamsMap, List vnfInstanceParams) throws Exception { defineMocks(); - ServiceInstantiation serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(isPause, createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, true), 2, true, PROJECT_NAME, false); + ServiceInstantiation serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(isPause, createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, true), null, 2, true, PROJECT_NAME, false); final URL resource = this.getClass().getResource("/payload_jsons/bulk_service_request_unique_names.json"); when(jobAdapterMock.createServiceInstantiationJob(any(), any(), any(), any(), any(), anyString(), any())).thenAnswer(invocation -> { Object[] args = invocation.getArguments(); @@ -481,7 +481,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT final ServiceInstantiation request = generateMockMacroServiceInstantiationPayload( false, createVnfList(instanceParamsMapWithoutParams, Collections.EMPTY_LIST, true), - bulkSize, isUserProvidedNaming, projectName, true + createPnfList(), bulkSize, isUserProvidedNaming, projectName, true ); // in "createServiceInstantiationJob()" we will probe the service, with the generated names @@ -618,7 +618,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT ServiceInstantiation macroPayload = generateMockMacroServiceInstantiationPayload( false, createVnfList(instanceParamsMapWithoutParams, ImmutableList.of(vnfInstanceParamsMapWithParamsToRemove, vnfInstanceParamsMapWithParamsToRemove), true), - 2, false,PROJECT_NAME, false); + createPnfList(), 2, false,PROJECT_NAME, false); ServiceInstantiation aLaCartePayload = generateALaCarteServiceInstantiationPayload(); return new Object[][]{ @@ -733,7 +733,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT @Test(dataProvider = "isPauseAndPropertyDataProvider") public void testServiceInstantiationPath_RequestPathIsAsExpected(boolean isPause, String expectedProperty) { - ServiceInstantiation serviceInstantiationPauseFlagTrue = generateMacroMockServiceInstantiationPayload(isPause, createVnfList(instanceParamsMapWithoutParams, Collections.EMPTY_LIST, true)); + ServiceInstantiation serviceInstantiationPauseFlagTrue = generateMacroMockServiceInstantiationPayload(isPause, createVnfList(instanceParamsMapWithoutParams, Collections.EMPTY_LIST, true), createPnfList()); String path = asyncInstantiationBL.getServiceInstantiationPath(serviceInstantiationPauseFlagTrue); Assert.assertEquals(path, SystemProperties.getProperty(expectedProperty)); } @@ -752,7 +752,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT final ServiceInstantiation request = generateMockMacroServiceInstantiationPayload( false, createVnfList(instanceParamsMapWithoutParams, Collections.EMPTY_LIST, true), - 100, true,PROJECT_NAME, true + createPnfList(), 100, true,PROJECT_NAME, true ); pushJobAndAssertDates(startTestDate, request); @@ -1013,7 +1013,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT @Test public void pushBulkJob_verifyMacroFlow_useMacroServiceInstantiationJobType(){ - final ServiceInstantiation request = generateMacroMockServiceInstantiationPayload(false, Collections.emptyMap()); + final ServiceInstantiation request = generateMacroMockServiceInstantiationPayload(false, Collections.emptyMap(), Collections.emptyMap()); // in "createServiceInstantiationJob()" we will probe the service, with the generated names configureMockitoWithMockedJob(); @@ -1064,7 +1064,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT public void whenLcpRegionNotEmpty_thenCloudRegionIdOfServiceIsLegacy() { String legacyCloudRegion = "legacyCloudRegion"; ServiceInstantiation service = new ServiceInstantiation(new ModelInfo(), null, null, null, null, null, null, - null, null, "anyCloudRegion", legacyCloudRegion, null, null, null, null, null, null, null, null, null, + null, null, "anyCloudRegion", legacyCloudRegion, null, null, null, null, null, null, null, null, null, null, false, 1,false, false, null, null, Action.Create.name(), UUID.randomUUID().toString(), null, null, null, "originalName"); assertThat(service.getLcpCloudRegionId(), equalTo(legacyCloudRegion)); } @@ -1087,7 +1087,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT @NotNull protected ServiceInstantiation createServiceWithIsALaCarteAndAction(boolean isALaCarte, Action action) { return new ServiceInstantiation(new ModelInfo(), null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, false, 1, false, isALaCarte, null, null, action.name(), UUID.randomUUID().toString(), null, null, null, "originalName"); } diff --git a/vid-app-common/src/test/java/org/onap/vid/services/MsoRequestBuilderTest.java b/vid-app-common/src/test/java/org/onap/vid/services/MsoRequestBuilderTest.java index ef2a6a5fb..1fc3879a4 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/MsoRequestBuilderTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/MsoRequestBuilderTest.java @@ -137,7 +137,7 @@ public class MsoRequestBuilderTest extends AsyncInstantiationBaseTest { @Test(dataProvider = "pauseAndInstanceParams", enabled = false) //Test is irrelevant with unique names feature public void createMacroServiceInstantiationMsoRequest(Boolean isPause, HashMap vfModuleInstanceParamsMap, List vnfInstanceParams) throws Exception { - ServiceInstantiation serviceInstantiationPayload = generateMacroMockServiceInstantiationPayload(isPause, createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, true)); + ServiceInstantiation serviceInstantiationPayload = generateMacroMockServiceInstantiationPayload(isPause, createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, true), createPnfList()); final URL resource = this.getClass().getResource("/payload_jsons/bulk_macro_service_request.json"); RequestDetailsWrapper result = msoRequestBuilder.generateMacroServiceInstantiationRequest(null, serviceInstantiationPayload, serviceInstantiationPayload.getInstanceName(), "az2016"); @@ -166,9 +166,8 @@ public class MsoRequestBuilderTest extends AsyncInstantiationBaseTest { private void createMacroServiceInfo_WithUserProvidedNamingFalse_ServiceInfoIsAsExpected(boolean withVfmodules, boolean disabledHoming) throws IOException { ServiceInstantiation serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(true, - createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, EMPTY_LIST, false), - 1, - false, PROJECT_NAME, true); + createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, EMPTY_LIST, false), null, + 1, false, PROJECT_NAME, true); URL resource; if (disabledHoming) { resource = this.getClass().getResource("/payload_jsons/bulk_service_no_homing.json"); @@ -258,7 +257,7 @@ public class MsoRequestBuilderTest extends AsyncInstantiationBaseTest { } private ServiceInstantiation generateServiceDeletionPayload() { - return generateMockServiceDeletionPayload(false, EMPTY_MAP, EMPTY_MAP, EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API", "1234567890"); + return generateMockServiceDeletionPayload(false, EMPTY_MAP, EMPTY_MAP, EMPTY_MAP, EMPTY_MAP,1, true, PROJECT_NAME, false, "VNF_API", "1234567890"); } @DataProvider @@ -484,16 +483,14 @@ public class MsoRequestBuilderTest extends AsyncInstantiationBaseTest { public void checkIfNullProjectNameSentToMso() { ServiceInstantiation serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(true, createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, EMPTY_LIST, false), - 1, - false, null, false); + createPnfList(), 1, false, null, false); RequestDetailsWrapper result = msoRequestBuilder.generateMacroServiceInstantiationRequest(null, serviceInstantiationPayload, serviceInstantiationPayload.getInstanceName(), "az2016"); JsonNode jsonNode = new ObjectMapper().valueToTree(result.requestDetails); Assert.assertTrue(jsonNode.get("project").isNull()); serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(true, createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, EMPTY_LIST, false), - 1, - false, "not null", false); + createPnfList(), 1, false, "not null", false); result = msoRequestBuilder.generateMacroServiceInstantiationRequest(null, serviceInstantiationPayload, serviceInstantiationPayload.getInstanceName(), "az2016"); jsonNode = new ObjectMapper().valueToTree(result.requestDetails); Assert.assertTrue(jsonNode.get("project").get("projectName").asText().equalsIgnoreCase("not null")); diff --git a/vid-app-common/src/test/resources/getTopology/serviceWithCR/getTopologyWithCR.json b/vid-app-common/src/test/resources/getTopology/serviceWithCR/getTopologyWithCR.json index f038427c5..cba323c7e 100644 --- a/vid-app-common/src/test/resources/getTopology/serviceWithCR/getTopologyWithCR.json +++ b/vid-app-common/src/test/resources/getTopology/serviceWithCR/getTopologyWithCR.json @@ -25,6 +25,7 @@ "rollbackOnFailure": null, "isALaCarte": false, "vnfs": {}, + "pnfs": {}, "networks": {}, "vrfs": {}, "vnfGroups": {}, @@ -89,6 +90,7 @@ }, "validationCounter": 0, "existingVNFCounterMap": {}, + "existingPNFCounterMap": null, "existingNetworksCounterMap": {}, "existingVnfGroupCounterMap": {}, "existingVRFCounterMap": {} diff --git a/vid-app-common/src/test/resources/payload_jsons/bulk_macro_service_request.json b/vid-app-common/src/test/resources/payload_jsons/bulk_macro_service_request.json index c0315d015..4c0740ad5 100644 --- a/vid-app-common/src/test/resources/payload_jsons/bulk_macro_service_request.json +++ b/vid-app-common/src/test/resources/payload_jsons/bulk_macro_service_request.json @@ -88,7 +88,29 @@ "vre_a_volume_size_0": "100" }] }] - }] + }], + "pnfs": [ + { + "modelInfo": { + "modelCustomizationName": "modelCustomizationName", + "modelCustomizationId": "modelCustomizationId", + "modelInvariantId": "modelInvariantId", + "modelVersionId": "modelVersionId", + "modelName": "modelName", + "modelType": "pnf", + "modelVersion": "1.0" + }, + "platform": { + "platformName": "platformName" + }, + "lineOfBusiness": { + "lineOfBusinessName": "lineOfBusinessName" + }, + "productFamilyId": "productFamilyId", + "instanceParams": [], + "instanceName": "instanceName" + } + ] } } }] diff --git a/vid-app-common/src/test/resources/payload_jsons/bulk_service_no_homing.json b/vid-app-common/src/test/resources/payload_jsons/bulk_service_no_homing.json index f61280024..4c8b4cd96 100644 --- a/vid-app-common/src/test/resources/payload_jsons/bulk_service_no_homing.json +++ b/vid-app-common/src/test/resources/payload_jsons/bulk_service_no_homing.json @@ -88,7 +88,8 @@ "vre_a_volume_size_0": "100" }] }] - }] + }], + "pnfs": [] } } }, diff --git a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_ecomp_naming.json b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_ecomp_naming.json index dd343f46e..8676d53d2 100644 --- a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_ecomp_naming.json +++ b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_ecomp_naming.json @@ -88,7 +88,8 @@ "vre_a_volume_size_0": "100" }] }] - }] + }], + "pnfs": [] } } }] diff --git a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_no_vfmodule_ecomp_naming.json b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_no_vfmodule_ecomp_naming.json index 0ef15d790..22ac8951c 100644 --- a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_no_vfmodule_ecomp_naming.json +++ b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_no_vfmodule_ecomp_naming.json @@ -59,7 +59,8 @@ }, "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", "instanceParams": [] - }] + }], + "pnfs": [] } } }] diff --git a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_unique_names.json b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_unique_names.json index c4f40a9c0..fe89a62ad 100644 --- a/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_unique_names.json +++ b/vid-app-common/src/test/resources/payload_jsons/bulk_service_request_unique_names.json @@ -94,7 +94,8 @@ "vre_a_volume_size_0": "100" }] }] - }] + }], + "pnfs": [] } } }] -- cgit 1.2.3-korg