Creation of functionality to prepare service with PNF request which call SO.
Issue-ID: VID-695
Signed-off-by: Mateusz Goluchowski <mateusz.goluchowski@nokia.com>
Change-Id: I5285ac2ab5e95665244ca18c6549249d9330b1ed
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"),
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";
ALaCarteServiceInstantiation(ALaCarteServiceCommand.class),
ALaCarteService(ALaCarteServiceCommand.class),
VnfInstantiation(VnfCommand.class),
+ PnfInstantiation(PnfCommand.class),
VfmoduleInstantiation(VfmoduleCommand.class),
VolumeGroupInstantiation(VolumeGroupCommand.class),
NetworkInstantiation(NetworkCommand.class),
val serviceInstantiationServiceList = generateMacroServiceInstantiationRequestParams(payload, serviceInstanceName, jobId)
-
val requestParameters = ServiceInstantiationRequestDetails.RequestParameters(payload.subscriptionServiceType, false, serviceInstantiationServiceList)
val requestDetails = generateServiceInstantiationRequestDetails(payload, requestParameters, serviceInstanceName, userId)
return !aaiClient.isNodeTypeExistsByName(name, resourceType)
}
- private fun generateServiceInstantiationServicesList(payload: ServiceInstantiation, serviceInstanceName: String?, vnfList: ServiceInstantiationRequestDetails.ServiceInstantiationVnfList): List<ServiceInstantiationRequestDetails.ServiceInstantiationService> {
+ private fun generateServiceInstantiationServicesList(payload: ServiceInstantiation, serviceInstanceName: String?, vnfList: List<ServiceInstantiationRequestDetails.ServiceInstantiationVnf>, pnfList: List<ServiceInstantiationRequestDetails.ServiceInstantiationPnf>): List<ServiceInstantiationRequestDetails.ServiceInstantiationService> {
val serviceInstantiationServiceList = LinkedList<ServiceInstantiationRequestDetails.ServiceInstantiationService>()
val unFilteredInstanceParams = defaultIfNull<List<MutableMap<String, String>>>(payload.instanceParams, emptyList())
val filteredInstanceParams = removeUnNeededParams(unFilteredInstanceParams)
payload.modelInfo,
serviceInstanceName,
filteredInstanceParams,
- vnfList
+ vnfList,
+ pnfList
)
serviceInstantiationServiceList.add(serviceInstantiationService)
return serviceInstantiationServiceList
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<ServiceInstantiationRequestDetails.ServiceInstantiationVnf> {
val cloudConfiguration = generateCloudConfiguration(payload.lcpCloudRegionId, payload.tenantId)
val isBulk = asyncInstantiationBL.isPartOfBulk(jobId)
vnfList.add(serviceInstantiationVnf)
}
- return ServiceInstantiationRequestDetails.ServiceInstantiationVnfList(vnfList)
+ return vnfList;
+ }
+
+ private fun createServiceInstantiationPnfList(jobId: UUID?, payload: ServiceInstantiation): List<ServiceInstantiationRequestDetails.ServiceInstantiationPnf> {
+ val isBulk = asyncInstantiationBL.isPartOfBulk(jobId)
+
+ val pnfs = payload.pnfs
+ val pnfList = mutableListOf<ServiceInstantiationRequestDetails.ServiceInstantiationPnf>()
+ 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<String, Map<String, VfModule>>): List<VfModuleMacro> {
return if (vnfInstanceParams.isEmpty()) emptyList() else ImmutableList.of(vnfInstanceParams)
}
+ fun buildPnfInstanceParams(currentPnfInstanceParams: List<MutableMap<String, String>>): List<Map<String, String>> {
+ 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,
}
private fun generateMacroServiceInstantiationRequestParams(payload: ServiceInstantiation, serviceInstanceName: String?, jobId: UUID?): List<UserParamTypes> {
- val userParams = generateServiceInstantiationServicesList(payload, serviceInstanceName, createServiceInstantiationVnfList(jobId, payload))
+ val userParams = generateServiceInstantiationServicesList(
+ payload,
+ serviceInstanceName,
+ createServiceInstantiationVnfList(jobId, payload),
+ createServiceInstantiationPnfList(jobId, payload)
+ )
return userParams.plus(homingSolution())
}
--- /dev/null
+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<String, Any?> {
+ return super.getData();
+ }
+
+ override fun init(sharedData: JobSharedData, commandData: Map<String, Any>): ResourceCommand {
+ super<ResourceCommand>.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
+ }
+
+}
Map<String, Long> getExistingVNFCounterMap();
+ Map<String, Long> getExistingPNFCounterMap();
+
Map<String, Long> getExistingNetworksCounterMap();
Map<String, Long> getExistingVnfGroupCounterMap();
--- /dev/null
+/*-
+ * ============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;
+ }
+}
private boolean isALaCarte;
private Map<String, Vnf> vnfs = new HashMap<>();
+ private Map<String, Pnf> pnfs = new HashMap<>();
private Map<String, Network> networks = new HashMap<>();
private Map<String, Vrf> vrfs = new HashMap<>();
private int validationCounter;
private Map<String, Long> existingVNFCounterMap;
+ private Map<String, Long> existingPNFCounterMap;
private Map<String, Long> existingNetworksCounterMap;
private Map<String, Long> existingVnfGroupCounterMap;
private Map<String, Long> existingVRFCounterMap;
this.vnfs = vnfs;
}
+ public Map<String, Pnf> getPnfs() {
+ return pnfs;
+ }
+
+ public void setPnfs(Map<String, Pnf> pnfs) {
+ this.pnfs = pnfs;
+ }
+
public Map<String, Network> getNetworks() {
return networks;
}
this.existingVNFCounterMap = existingVNFCounterMap;
}
+ @Override
+ public Map<String, Long> getExistingPNFCounterMap() {
+ return existingPNFCounterMap;
+ }
+
+ public void setExistingPNFCounterMap(Map<String, Long> existingPNFCounterMap) {
+ this.existingPNFCounterMap = existingPNFCounterMap;
+ }
+
@Override
public Map<String, Long> getExistingNetworksCounterMap() {
return existingNetworksCounterMap;
--- /dev/null
+/*-
+ * ============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<Map<String, String>> 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<? extends BaseResource> getChildren() {
+ return null;
+ }
+
+ @Override
+ public JobType getJobType() {
+ return JobType.VnfInstantiation;
+ }
+}
private final Map<String, Vnf> vnfs;
+ private final Map<String, Pnf> pnfs;
+
private final Map<String, Network> networks;
private final Map<String, InstanceGroup> vnfGroups;
@JsonProperty("aicZoneId") String aicZoneId,
@JsonProperty("aicZoneName") String aicZoneName,
@JsonProperty("vnfs") Map<String, Vnf> vnfs,
+ @JsonProperty("pnfs") Map<String, Pnf> pnfs,
@JsonProperty("networks") Map<String, Network> networks,
@JsonProperty("vnfGroups") Map<String, InstanceGroup> vnfGroups,
@JsonProperty("vrfs") Map<String, VrfEntry> vrfs,
this.aicZoneId = aicZoneId;
this.aicZoneName = aicZoneName;
this.vnfs = vnfs;
+ this.pnfs = pnfs;
this.networks = networks;
this.vnfGroups = vnfGroups;
this.vrfs = vrfs;
return emptyMapIfNull(vnfs);
}
+ public Map<String, Pnf> getPnfs() {
+ return emptyMapIfNull(pnfs);
+ }
+
public Map<String, Network> getNetworks() {
return emptyMapIfNull(networks);
}
public class ServiceInstantiationTemplate extends ServiceInstantiation implements ExistingElementsCounterMaps {
private final Map<String, Long> existingVNFCounterMap;
+ private final Map<String, Long> existingPNFCounterMap;
private final Map<String, Long> existingNetworksCounterMap;
private final Map<String, Long> existingVnfGroupCounterMap;
private final Map<String, Long> existingVRFCounterMap;
public ServiceInstantiationTemplate(
ServiceInstantiation baseService,
Map<String, Long> vnfCounterMap,
+ Map<String, Long> pnfCounterMap,
Map<String, Long> networksCounterMap,
Map<String, Long> vnfGroupCounterMap,
Map<String, Long> VRFCounterMap
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),
);
this.existingVNFCounterMap = vnfCounterMap;
+ this.existingPNFCounterMap = pnfCounterMap;
this.existingNetworksCounterMap = networksCounterMap;
this.existingVnfGroupCounterMap = vnfGroupCounterMap;
this.existingVRFCounterMap = VRFCounterMap;
return existingVNFCounterMap;
}
+ @Override
+ public Map<String, Long> getExistingPNFCounterMap() {
+ return existingPNFCounterMap;
+ }
+
@Override
public Map<String, Long> getExistingNetworksCounterMap() {
return existingNetworksCounterMap;
--- /dev/null
+/*-
+ * ============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<ServiceInstantiationRequestDetails.ServiceInstantiationVnf> vnfs;
+ private final List<ServiceInstantiationRequestDetails.ServiceInstantiationPnf> pnfs;
+
+ public Resources(List<ServiceInstantiationRequestDetails.ServiceInstantiationVnf> vnfs, List<ServiceInstantiationRequestDetails.ServiceInstantiationPnf> pnfs) {
+ this.vnfs = vnfs;
+ this.pnfs = pnfs;
+ }
+
+ public List<ServiceInstantiationRequestDetails.ServiceInstantiationVnf> getVnfs() {
+ return vnfs;
+ }
+
+ public List<ServiceInstantiationRequestDetails.ServiceInstantiationPnf> getPnfs() {
+ return pnfs;
+ }
+}
+
public static class ServiceInstantiationService implements UserParamTypes {
private final ServiceInstantiationServiceInner serviceInstantiationServiceInner;
- public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
- serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs);
+ public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, List<ServiceInstantiationVnf> vnfs, List<ServiceInstantiationPnf> pnfs) {
+ serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs, pnfs);
}
@JsonProperty("service")
@JsonInclude(NON_EMPTY)
public String instanceName;
public List<Map<String, String>> instanceParams;
- public ServiceInstantiationVnfList resources;
+ public Resources resources;
- public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
+ public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, List<ServiceInstantiationVnf> vnfs, List<ServiceInstantiationPnf> 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);
}
}
}
}
}
+ public static class ServiceInstantiationPnfList{
+
+ public final List<ServiceInstantiationPnf> pnfs;
+
+ public ServiceInstantiationPnfList(List<ServiceInstantiationPnf> pnfList) {
+ this.pnfs = pnfList;
+ }
+ }
+
public static class ServiceInstantiationVnf{
public final ModelInfo modelInfo;
public final CloudConfiguration cloudConfiguration;
}
}
+ public static class ServiceInstantiationPnf{
+
+ public final ModelInfo modelInfo;
+ public final Platform platform;
+ public final LineOfBusiness lineOfBusiness;
+ public final String productFamilyId;
+ public final List<Map<String, String>> instanceParams;
+ @JsonInclude(NON_EMPTY) public final String instanceName;
+
+ public ServiceInstantiationPnf(ModelInfo modelInfo, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> 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;
return new ServiceInstantiationTemplate(
jobRequest,
counterMap(jobRequest.getVnfs()),
+ counterMap(jobRequest.getPnfs()),
counterMap(jobRequest.getNetworks()),
counterMap(jobRequest.getVnfGroups()),
emptyMap() // model info for VRF is not stored
static ServiceInstantiation createService(List<Vnf> vnfs, List<Network> networks, List<InstanceGroup> 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,
private List<UUID> 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);
}
emptyMap(),
emptyMap(),
emptyMap(),
+ emptyMap(),
instanceParams,
true,
1,
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;
}
- public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map<String, Vnf> 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<String, Vnf> vnfs, Map<String, Pnf> 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<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> 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<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> 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<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> 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<String, Vnf> vnfs, Map<String, Pnf> pnfs, Map<String, Network> networks, Map<String, InstanceGroup> 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<String, Vnf> vnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, boolean isAlacarte, String testApi, Action action, String instanceId) {
+ private ServiceInstantiation generateMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs, Map<String, Network> networks, Map<String, InstanceGroup> vnfGroups, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure, boolean isAlacarte, String testApi, Action action, String instanceId) {
ModelInfo modelInfo = createModelInfo();
List<Map<String,String>> instanceParams = createInstanceParams();
AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID,
AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME,
vnfs,
+ pnfs,
networks,
vnfGroups,
null,
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<Map<String, String>> 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();
return vnfs;
}
+ protected Map<String, Pnf> createPnfList() {
+ Map<String, Pnf> 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);
}
enableAddCloudOwnerOnMsoRequest(true);
}
- protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs) {
- return generateMockMacroServiceInstantiationPayload(isPause, vnfs, 1, true, PROJECT_NAME, false);
+ protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs) {
+ return generateMockMacroServiceInstantiationPayload(isPause, vnfs, pnfs,1, true, PROJECT_NAME, false);
}
protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
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"
);
"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");
}
@Test(dataProvider = "pauseAndInstanceParams")
public void createMacroServiceInstantiationMsoRequestUniqueName(Boolean isPause, HashMap<String, String> 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();
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
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[][]{
@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));
}
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);
@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();
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));
}
@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");
}
@Test(dataProvider = "pauseAndInstanceParams", enabled = false) //Test is irrelevant with unique names feature
public void createMacroServiceInstantiationMsoRequest(Boolean isPause, HashMap<String, String> 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<ServiceInstantiationRequestDetails> result =
msoRequestBuilder.generateMacroServiceInstantiationRequest(null, serviceInstantiationPayload, serviceInstantiationPayload.getInstanceName(), "az2016");
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");
}
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
public void checkIfNullProjectNameSentToMso() {
ServiceInstantiation serviceInstantiationPayload = generateMockMacroServiceInstantiationPayload(true,
createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, EMPTY_LIST, false),
- 1,
- false, null, false);
+ createPnfList(), 1, false, null, false);
RequestDetailsWrapper<ServiceInstantiationRequestDetails> 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"));
"rollbackOnFailure": null,
"isALaCarte": false,
"vnfs": {},
+ "pnfs": {},
"networks": {},
"vrfs": {},
"vnfGroups": {},
},
"validationCounter": 0,
"existingVNFCounterMap": {},
+ "existingPNFCounterMap": null,
"existingNetworksCounterMap": {},
"existingVnfGroupCounterMap": {},
"existingVRFCounterMap": {}
"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"
+ }
+ ]
}
}
}]
"vre_a_volume_size_0": "100"
}]
}]
- }]
+ }],
+ "pnfs": []
}
}
},
"vre_a_volume_size_0": "100"
}]
}]
- }]
+ }],
+ "pnfs": []
}
}
}]
},
"productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
"instanceParams": []
- }]
+ }],
+ "pnfs": []
}
}
}]
"vre_a_volume_size_0": "100"
}]
}]
- }]
+ }],
+ "pnfs": []
}
}
}]