2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.vid.services;
23 import static java.util.Collections.emptyList;
24 import static java.util.Collections.emptyMap;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.anyString;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.when;
29 import static org.onap.vid.model.VidNotions.InstantiationType;
30 import static org.onap.vid.model.VidNotions.InstantiationUI;
31 import static org.onap.vid.model.VidNotions.ModelCategory;
33 import com.google.common.collect.ImmutableList;
34 import com.google.common.collect.ImmutableMap;
35 import java.time.LocalDateTime;
36 import java.time.ZoneId;
37 import java.time.ZonedDateTime;
38 import java.util.ArrayList;
39 import java.util.Collections;
40 import java.util.Date;
41 import java.util.HashMap;
42 import java.util.LinkedHashMap;
43 import java.util.List;
45 import java.util.UUID;
46 import java.util.stream.Collectors;
47 import java.util.stream.Stream;
48 import javax.inject.Inject;
49 import org.hibernate.SessionFactory;
50 import org.jetbrains.annotations.NotNull;
51 import org.onap.portalsdk.core.domain.FusionObject;
52 import org.onap.portalsdk.core.service.DataAccessService;
53 import org.onap.vid.aai.AaiClientInterface;
54 import org.onap.vid.aai.ExceptionWithRequestInfo;
55 import org.onap.vid.job.Job.JobStatus;
56 import org.onap.vid.model.Action;
57 import org.onap.vid.model.ServiceInfo;
58 import org.onap.vid.model.ServiceInfo.ServiceAction;
59 import org.onap.vid.model.VidNotions;
60 import org.onap.vid.model.serviceInstantiation.*;
61 import org.onap.vid.mso.RestObject;
62 import org.onap.vid.mso.model.ModelInfo;
63 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails;
64 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails.UserParamNameAndValue;
65 import org.onap.vid.mso.rest.AsyncRequestStatus;
66 import org.onap.vid.mso.rest.RequestStatus;
67 import org.onap.vid.properties.Features;
68 import org.onap.vid.utils.DaoUtils;
69 import org.onap.vid.utils.TimeUtils;
70 import org.springframework.beans.factory.annotation.Autowired;
71 import org.springframework.http.HttpMethod;
72 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
73 import org.togglz.core.manager.FeatureManager;
75 public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests {
77 public static final String MODEL_UUID = "337be3fc-293e-43ec-af0b-cf932dad07e6";
78 public static final String MODEL_UUID_2 = "ce052844-22ba-4030-a838-822f2b39eb9b";
79 public static final String MODEL_UUID_3 = "47a071cd-99f7-49bb-bc8b-f957979d6fe1";
81 public static final String OWNING_ENTITY_ID = "038d99af-0427-42c2-9d15-971b99b9b489";
82 public static final String JULIO_ERICKSON = "JULIO ERICKSON";
83 public static final String PROJECT_NAME = "{some project name}";
84 public static final String SUBSCRIBER_ID = "{some subscriber id}";
85 public static final String SUBSCRIBER_NAME = "{some subscriber name}";
86 public static final String PRODUCT_FAMILY_ID = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
87 public static final String INSTANCE_NAME = "vPE_Service";
88 public static final String SUBSCRIPTION_SERVICE_TYPE = "VMX";
89 public static final String LCP_CLOUD_REGION_ID = "mdt1";
90 public static final String A6CA3EE0394ADE9403F075DB23167E = "88a6ca3ee0394ade9403f075db23167e";
91 public static final String TENANT_NAME = "USP-SIP-IC-24335-T-01";
92 public static final String AIC_ZONE_ID = "NFT1";
93 public static final String AIC_ZONE_NAME = "NFTJSSSS-NFT1";
94 public static final String TEST_API = "GR_API";
95 public static final String SERVICE_MODEL_VERSION_ID = "3c40d244-808e-42ca-b09a-256d83d19d0a";
96 public static final String VF_MODULE_0_MODEL_CUSTOMIZATION_NAME = "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f";
97 public static final String VF_MODULE_1_MODEL_CUSTOMIZATION_NAME = "72d9d1cd-f46d-447a-abdb-451d6fb05fa8";
98 public static final String VF_MODULE_0_MODEL_VERSION_ID = "4c75f813-fa91-45a4-89d0-790ff5f1ae79";
99 public static final String VF_MODULE_1_MODEL_VERSION_ID = "56e2b103-637c-4d1a-adc8-3a7f4a6c3240";
100 public static final String VNF_NAME = "vmxnjr001";
101 public static final String VNF_GROUP_NAME = "VNF_GROUP_NAME";
103 protected HashMap<String, String> instanceParamsMapWithoutParams;
104 protected HashMap<String, String> vfModuleInstanceParamsMapWithParamsToRemove;
105 protected HashMap<String, String> vnfInstanceParamsMapWithParamsToRemove;
107 protected int serviceCount = 0;
111 protected DataAccessService dataAccessService;
114 protected FeatureManager featureManager;
117 protected AaiClientInterface aaiClient;
120 protected CloudOwnerService cloudOwnerService;
123 protected SessionFactory sessionFactory;
126 protected static Date toDate(LocalDateTime localDateTime) {
127 return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
130 protected HashMap<String, Object> getPropsMap() {
131 HashMap<String, Object> props = new HashMap<>();
132 props.put(FusionObject.Parameters.PARAM_USERID, 0);
137 private void setCreateDateToServiceInfo(UUID jobUuid, LocalDateTime createDate) {
138 List<ServiceInfo> serviceInfoList = dataAccessService.getList(ServiceInfo.class, getPropsMap());
139 DaoUtils.tryWithSessionAndTransaction(sessionFactory, session -> {
140 serviceInfoList.stream()
141 .filter(serviceInfo -> jobUuid.equals(serviceInfo.getJobId()))
142 .forEach(serviceInfo -> {
143 serviceInfo.setCreated(toDate(createDate));
144 session.saveOrUpdate(serviceInfo);
151 protected void addNewServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
152 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
154 ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
155 isHidden, retryEnabled, modelUUID);
156 dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
157 setCreateDateToServiceInfo(uuid, createDate);
161 private ServiceInfo createServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
162 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled, String modelUUID) {
163 ServiceInfo serviceInfo = new ServiceInfo();
164 serviceInfo.setJobId(uuid);
165 serviceInfo.setUserId(userId);
166 serviceInfo.setServiceInstanceName(serviceName);
167 serviceInfo.setStatusModifiedDate(toDate(statusModifiedDate));
168 serviceInfo.setJobStatus(status);
169 serviceInfo.setPause(false);
170 serviceInfo.setOwningEntityId("1234");
171 serviceInfo.setCreatedBulkDate(toDate(createDate));
172 serviceInfo.setRetryEnabled(retryEnabled);
173 serviceInfo.setServiceModelId(modelUUID);
174 serviceInfo.setHidden(isHidden);
178 protected void addNewServiceInfoWithAction(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
179 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
180 String modelUUID, ServiceAction action) {
181 ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
182 isHidden, retryEnabled, modelUUID);
183 serviceInfo.setAction(action);
184 dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
185 setCreateDateToServiceInfo(uuid, createDate);
190 public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) {
191 return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null);
194 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) {
195 return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null);
198 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) {
199 return generateMockServiceInstantiationPayload(isPause, vnfs, null, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId);
202 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) {
203 return generateMockServiceInstantiationPayload(isPause, vnfs, pnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId);
205 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) {
206 ModelInfo modelInfo = createModelInfo();
208 List<Map<String,String>> instanceParams = createInstanceParams();
210 return new ServiceInstantiation( modelInfo,
211 AsyncInstantiationBusinessLogicTest.OWNING_ENTITY_ID,
212 AsyncInstantiationBusinessLogicTest.JULIO_ERICKSON,
214 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_ID,
215 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_NAME,
216 AsyncInstantiationBusinessLogicTest.PRODUCT_FAMILY_ID,
217 isUserProvidedNaming ? AsyncInstantiationBusinessLogicTest.INSTANCE_NAME : null,
218 AsyncInstantiationBusinessLogicTest.SUBSCRIPTION_SERVICE_TYPE,
219 AsyncInstantiationBusinessLogicTest.LCP_CLOUD_REGION_ID,
221 AsyncInstantiationBusinessLogicTest.A6CA3EE0394ADE9403F075DB23167E,
222 AsyncInstantiationBusinessLogicTest.TENANT_NAME,
223 AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID,
224 AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME,
238 UUID.randomUUID().toString(), null, null, null, null);
241 private List<Map<String,String>> createInstanceParams() {
242 List<Map<String, String>> instanceParams = new ArrayList<>();
243 HashMap<String, String> map = new HashMap<>();
244 map.put("instanceParams_test1" , "some text");
245 map.put("instanceParams_test2" , "another text");
246 instanceParams.add(map);
247 return instanceParams;
250 protected VfModule createVfModule(
251 String modelName, String modelVersionId, String modelCustomizationId,
252 List<Map<String, String>> instanceParams, List<UserParamNameAndValue> supplementaryParams, String instanceName,
253 String volumeGroupInstanceName, boolean isAlacarte, Boolean usePreload) {
254 ModelInfo vfModuleInfo = new ModelInfo();
255 vfModuleInfo.setModelType("vfModule");
256 vfModuleInfo.setModelName(modelName);
257 vfModuleInfo.setModelVersionId(modelVersionId);
258 vfModuleInfo.setModelCustomizationId(modelCustomizationId);
259 vfModuleInfo.setModelCustomizationName(modelName);
262 vfModuleInfo.setModelInvariantId("22222222-f63c-463e-ba94-286933b895f9");
263 vfModuleInfo.setModelVersion("10.0");
264 return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), "mdt1", null,
265 "88a6ca3ee0394ade9403f075db23167e", instanceParams, supplementaryParams, false,
266 usePreload, null, UUID.randomUUID().toString(), null, null,
267 null, null, null, null, "originalName");
270 return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
271 instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
272 null, null, null, null, null, "originalName");
275 protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
276 return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
279 protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
280 String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups, List<UserParamNameAndValue> supplementaryParams) {
281 return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
282 null, supplementaryParams, true, null, null, UUID.randomUUID().toString(), null,
283 null, retainAssignments, retainVolumeGroups, null, null, "originalName");
286 protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
287 ModelInfo vnfModelInfo = new ModelInfo();
288 vnfModelInfo.setModelType("vnf");
289 vnfModelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
290 vnfModelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
291 vnfModelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
292 vnfModelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
293 //added two conditional fields according to MSO AID - needed only in alacarte
295 vnfModelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
296 vnfModelInfo.setModelVersion("10.0");
301 protected ModelInfo createVnfModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
302 return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
305 protected ModelInfo createPnfModelInfo() {
306 ModelInfo modelInfo = new ModelInfo();
307 modelInfo.setModelCustomizationName("modelCustomizationName");
308 modelInfo.setModelCustomizationId("modelCustomizationId");
309 modelInfo.setModelInvariantId("modelInvariantId");
310 modelInfo.setModelVersionId("modelVersionId");
311 modelInfo.setModelName("modelName");
312 modelInfo.setModelType("pnf");
313 modelInfo.setModelVersion("1.0");
317 protected Pnf createPnf() {
318 ModelInfo modelInfo = createPnfModelInfo();
319 List<Map<String, String>> instanceParams = new ArrayList<>();
321 return new Pnf(modelInfo, "productFamilyId", "instanceName", null, "platformName", null, null,
322 null, instanceParams, "lineOfBusinessName", true,null, null, null, null, null, null);
325 private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId)
327 ModelInfo modelInfo = new ModelInfo();
328 modelInfo.setModelType("network");
329 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
330 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
331 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
332 modelInfo.setModelCustomizationId(modelCustomizationId);
333 //added two conditional fields according to MSO AID - needed only in alacarte
335 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
336 modelInfo.setModelVersion("10.0");
341 private ModelInfo createModelInfo() {
342 ModelInfo modelInfo = new ModelInfo();
343 modelInfo.setModelType("service");
344 modelInfo.setModelVersionId(SERVICE_MODEL_VERSION_ID);
345 modelInfo.setModelVersion("10.0");
346 modelInfo.setModelInvariantId("5d48acb5-097d-4982-aeb2-f4a3bd87d31b");
347 modelInfo.setModelName("MOW AVPN vMX BV vPE 1 Service");
351 private ModelInfo createModelInfo(String modelType, String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName ) {
352 ModelInfo modelInfo = new ModelInfo();
353 modelInfo.setModelType(modelType);
354 modelInfo.setModelVersionId(modelVersionId);
355 modelInfo.setModelVersion(modelVersion);
356 modelInfo.setModelInvariantId(modelInvariantId);
357 modelInfo.setModelName(modelName);
358 modelInfo.setModelCustomizationId(modelCustomizationId);
359 modelInfo.setModelCustomizationName(modelCustomizationName);
363 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming) {
364 return createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, isUserProvidedNaming, false);
367 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming, boolean isAlacarte) {
368 Map<String, Vnf> vnfs = new HashMap<>();
369 ModelInfo vnfModelInfo = createVnfModelInfo(isAlacarte);
371 Map<String, Map<String, VfModule>> vfModules = new HashMap<>();
373 List<Map<String, String>> instanceParams1 = ImmutableList.of((ImmutableMap.of("vmx_int_net_len", "24")));
374 VfModule vfModule1 = createVfModule("201673MowAvpnVpeBvL..AVPN_base_vPE_BV..module-0", VF_MODULE_0_MODEL_VERSION_ID, VF_MODULE_0_MODEL_CUSTOMIZATION_NAME,
375 instanceParams1, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vPE_BV_base" : null), null, isAlacarte, true);
376 List<Map<String, String>> instanceParams2 = ImmutableList.of(vfModuleInstanceParamsMap);
377 VfModule vfModule2 = createVfModule("201673MowAvpnVpeBvL..AVPN_vRE_BV..module-1", VF_MODULE_1_MODEL_VERSION_ID, VF_MODULE_1_MODEL_CUSTOMIZATION_NAME,
378 instanceParams2, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vRE_BV_expansion": null), (isUserProvidedNaming ? "myVgName" : null), isAlacarte, true);
380 String vfModuleModelName = vfModule1.getModelInfo().getModelName();
381 vfModules.put(vfModuleModelName, new LinkedHashMap<>());
383 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":001", vfModule1);
384 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":002", vfModule2);
386 Vnf vnf = new Vnf(vnfModelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", (isUserProvidedNaming ? VNF_NAME : null), Action.Create.name(),
387 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", vnfInstanceParams,"lineOfBusinessName" , false, null, vfModules,
388 UUID.randomUUID().toString(), null, null, null, "originalName");
390 vnfs.put(vnf.getModelInfo().getModelName(), vnf);
394 protected Map<String, Pnf> createPnfList() {
395 Map<String, Pnf> pnfs = new HashMap<>();
396 Pnf pnf = createPnf();
398 pnfs.put(pnf.getModelInfo().getModelName(), pnf);
404 protected void mockAaiClientAaiStatusOK() {
405 when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false);
408 protected void enableAddCloudOwnerOnMsoRequest(boolean isActive) {
409 // always turn on the feature flag
410 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isActive);
411 when(aaiClient.getCloudOwnerByCloudRegionId(anyString())).thenReturn("irma-aic");
414 protected void enableAddCloudOwnerOnMsoRequest() {
415 enableAddCloudOwnerOnMsoRequest(true);
418 protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, Map<String, Pnf> pnfs) {
419 return generateMockMacroServiceInstantiationPayload(isPause, vnfs, pnfs,1, true, PROJECT_NAME, false);
422 protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
423 List<Map<String, String>> instanceParams = ImmutableList
424 .of(ImmutableMap.of("someUserParam","someValue", "anotherUserParam","anotherValue"));
425 ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489",
426 "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name",
427 "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId,
428 null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false,
429 null, null, null, null, null, null,
430 new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro), "originalName"
432 return serviceInstantiation;
435 public static class NetworkDetails {
437 public NetworkDetails(String name, String modelCustomizationId) {
439 this.modelCustomizationId = modelCustomizationId;
443 public String modelCustomizationId;
446 protected Map<String, Network> createNetworkList(List instanceParams, List<NetworkDetails> networkDetails, boolean isALaCarte) {
447 Stream<Network> networkStream = networkDetails.stream().map(
448 details->new Network(createNetworkModelInfo(isALaCarte, details.modelCustomizationId), "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
449 details.name, Action.Create.name(),
450 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", instanceParams,"lineOfBusinessName" ,
451 false, null, UUID.randomUUID().toString(), null, null, null, "originalName"));
452 // I can't tell why compiler don't like the statement if it's only one line...
453 return networkStream.collect(Collectors.toMap(network -> network.getModelInfo().getModelCustomizationId(), network -> network));
456 protected InstanceGroup createInstanceGroup(boolean isUserProvidedNaming, Action action) {
457 ModelInfo modelInfo = new ModelInfo();
458 modelInfo.setModelType("instanceGroup");
459 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
460 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
461 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
462 modelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
463 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
464 modelInfo.setModelVersion("10.0");
466 return new InstanceGroup(modelInfo, (isUserProvidedNaming ? VNF_GROUP_NAME : null), action.name(), false, null, emptyMap(), UUID.randomUUID().toString(), null, null,
467 null, "originalName");
470 protected ModelInfo createServiceModelInfo() {
471 ModelInfo siModelInfo = new ModelInfo();
472 siModelInfo.setModelName("sriov");
473 siModelInfo.setModelType("service");
474 siModelInfo.setModelInvariantId("ff3514e3-5a33-55df-13ab-12abad84e7ff");
475 siModelInfo.setModelVersionId("fe6985cd-ea33-3346-ac12-ab121484a3fe");
476 siModelInfo.setModelVersion("1.0");
481 protected ModelInfo createServiceModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
482 return createModelInfo("service", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
485 protected void createInstanceParamsMaps() {
486 instanceParamsMapWithoutParams = new HashMap<>();
487 instanceParamsMapWithoutParams.put("availability_zone_0" , "mtpocdv-kvm-az01");
488 instanceParamsMapWithoutParams.put("vre_a_volume_size_0" , "100");
490 vfModuleInstanceParamsMapWithParamsToRemove = new HashMap<>();
491 vfModuleInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(0), "should be removed");
492 vfModuleInstanceParamsMapWithParamsToRemove.put("availability_zone_0" , "mtpocdv-kvm-az01");
493 vfModuleInstanceParamsMapWithParamsToRemove.put("vre_a_volume_size_0" , "100");
495 vnfInstanceParamsMapWithParamsToRemove = new HashMap<>();
496 vnfInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(1), "should be removed");
499 public static AsyncRequestStatus asyncRequestStatusResponse(String msoStatus) {
500 AsyncRequestStatus asyncRequestStatus = new AsyncRequestStatus(new AsyncRequestStatus.Request(new RequestStatus()));
501 asyncRequestStatus.request.requestStatus.setRequestState(msoStatus);
502 asyncRequestStatus.request.requestId = UUID.randomUUID().toString();
503 asyncRequestStatus.request.startTime = TimeUtils.zonedDateTimeToString(ZonedDateTime.now());
504 return asyncRequestStatus;
507 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus) {
508 return asyncRequestStatusResponseAsRestObject(msoStatus, 200);
511 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus, int httpStatusCode) {
512 RestObject<AsyncRequestStatus> restObject = new RestObject<>();
513 restObject.set(asyncRequestStatusResponse(msoStatus));
514 restObject.setStatusCode(httpStatusCode);
518 protected void mockAaiClientAnyNameFree() {
519 when(aaiClient.isNodeTypeExistsByName(any(), any())).thenReturn(false);
522 protected ExceptionWithRequestInfo aaiNodeQueryBadResponseException() {
523 return new ExceptionWithRequestInfo(HttpMethod.GET, "url", "raw data", 500, null);
526 protected ServiceInstantiation generateALaCarteWithVnfsServiceInstantiationPayload() {
527 Map<String, Vnf> vnfs = createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, Collections.singletonList(vnfInstanceParamsMapWithParamsToRemove) , true, true);
528 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, vnfs, emptyMap(), emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
529 return serviceInstantiation;
532 protected ServiceInstantiation generateALaCarteWithNetworksPayload(List<NetworkDetails> networkDetails) {
533 Map<String, Network> networks = createNetworkList(emptyList(), networkDetails, true);
534 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, emptyMap(), networks, emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
535 return serviceInstantiation;
538 protected ServiceInstantiation generateALaCarteUpdateWith1ExistingGroup2NewGroupsPayload() {
539 final InstanceGroup instanceGroup1 = createInstanceGroup(true, Action.None);
540 final InstanceGroup instanceGroup2 = createInstanceGroup(false, Action.Create);
541 final InstanceGroup instanceGroup3 = createInstanceGroup(true, Action.Create);
542 Map<String, InstanceGroup> groups = ImmutableMap.of(
543 "foo:001", instanceGroup1,
544 "foo:002", instanceGroup2,
545 "foo:003", instanceGroup3
547 return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), emptyMap(), groups,
548 1, true, PROJECT_NAME, false, true, "VNF_API",
549 Action.None, "1234567890");
552 protected ServiceInstantiation generateALaCarteServiceInstantiationPayload() {
553 return generateMockALaCarteServiceInstantiationPayload(false, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API");