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.InstanceGroup;
61 import org.onap.vid.model.serviceInstantiation.Network;
62 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
63 import org.onap.vid.model.serviceInstantiation.VfModule;
64 import org.onap.vid.model.serviceInstantiation.Vnf;
65 import org.onap.vid.mso.RestObject;
66 import org.onap.vid.mso.model.ModelInfo;
67 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails.UserParamNameAndValue;
68 import org.onap.vid.mso.rest.AsyncRequestStatus;
69 import org.onap.vid.mso.rest.RequestStatus;
70 import org.onap.vid.properties.Features;
71 import org.onap.vid.utils.DaoUtils;
72 import org.onap.vid.utils.TimeUtils;
73 import org.springframework.beans.factory.annotation.Autowired;
74 import org.springframework.http.HttpMethod;
75 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
76 import org.togglz.core.manager.FeatureManager;
78 public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests {
80 public static final String MODEL_UUID = "337be3fc-293e-43ec-af0b-cf932dad07e6";
81 public static final String MODEL_UUID_2 = "ce052844-22ba-4030-a838-822f2b39eb9b";
82 public static final String MODEL_UUID_3 = "47a071cd-99f7-49bb-bc8b-f957979d6fe1";
84 public static final String OWNING_ENTITY_ID = "038d99af-0427-42c2-9d15-971b99b9b489";
85 public static final String JULIO_ERICKSON = "JULIO ERICKSON";
86 public static final String PROJECT_NAME = "{some project name}";
87 public static final String SUBSCRIBER_ID = "{some subscriber id}";
88 public static final String SUBSCRIBER_NAME = "{some subscriber name}";
89 public static final String PRODUCT_FAMILY_ID = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
90 public static final String INSTANCE_NAME = "vPE_Service";
91 public static final String SUBSCRIPTION_SERVICE_TYPE = "VMX";
92 public static final String LCP_CLOUD_REGION_ID = "mdt1";
93 public static final String A6CA3EE0394ADE9403F075DB23167E = "88a6ca3ee0394ade9403f075db23167e";
94 public static final String TENANT_NAME = "USP-SIP-IC-24335-T-01";
95 public static final String AIC_ZONE_ID = "NFT1";
96 public static final String AIC_ZONE_NAME = "NFTJSSSS-NFT1";
97 public static final String TEST_API = "GR_API";
98 public static final String SERVICE_MODEL_VERSION_ID = "3c40d244-808e-42ca-b09a-256d83d19d0a";
99 public static final String VF_MODULE_0_MODEL_CUSTOMIZATION_NAME = "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f";
100 public static final String VF_MODULE_1_MODEL_CUSTOMIZATION_NAME = "72d9d1cd-f46d-447a-abdb-451d6fb05fa8";
101 public static final String VF_MODULE_0_MODEL_VERSION_ID = "4c75f813-fa91-45a4-89d0-790ff5f1ae79";
102 public static final String VF_MODULE_1_MODEL_VERSION_ID = "56e2b103-637c-4d1a-adc8-3a7f4a6c3240";
103 public static final String VNF_NAME = "vmxnjr001";
104 public static final String VNF_GROUP_NAME = "VNF_GROUP_NAME";
106 protected HashMap<String, String> instanceParamsMapWithoutParams;
107 protected HashMap<String, String> vfModuleInstanceParamsMapWithParamsToRemove;
108 protected HashMap<String, String> vnfInstanceParamsMapWithParamsToRemove;
110 protected int serviceCount = 0;
114 protected DataAccessService dataAccessService;
117 protected FeatureManager featureManager;
120 protected AaiClientInterface aaiClient;
123 protected CloudOwnerService cloudOwnerService;
126 protected SessionFactory sessionFactory;
129 protected static Date toDate(LocalDateTime localDateTime) {
130 return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
133 protected HashMap<String, Object> getPropsMap() {
134 HashMap<String, Object> props = new HashMap<>();
135 props.put(FusionObject.Parameters.PARAM_USERID, 0);
140 private void setCreateDateToServiceInfo(UUID jobUuid, LocalDateTime createDate) {
141 List<ServiceInfo> serviceInfoList = dataAccessService.getList(ServiceInfo.class, getPropsMap());
142 DaoUtils.tryWithSessionAndTransaction(sessionFactory, session -> {
143 serviceInfoList.stream()
144 .filter(serviceInfo -> jobUuid.equals(serviceInfo.getJobId()))
145 .forEach(serviceInfo -> {
146 serviceInfo.setCreated(toDate(createDate));
147 session.saveOrUpdate(serviceInfo);
154 protected void addNewServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
155 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
157 ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
158 isHidden, retryEnabled, modelUUID);
159 dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
160 setCreateDateToServiceInfo(uuid, createDate);
164 private ServiceInfo createServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
165 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled, String modelUUID) {
166 ServiceInfo serviceInfo = new ServiceInfo();
167 serviceInfo.setJobId(uuid);
168 serviceInfo.setUserId(userId);
169 serviceInfo.setServiceInstanceName(serviceName);
170 serviceInfo.setStatusModifiedDate(toDate(statusModifiedDate));
171 serviceInfo.setJobStatus(status);
172 serviceInfo.setPause(false);
173 serviceInfo.setOwningEntityId("1234");
174 serviceInfo.setCreatedBulkDate(toDate(createDate));
175 serviceInfo.setRetryEnabled(retryEnabled);
176 serviceInfo.setServiceModelId(modelUUID);
177 serviceInfo.setHidden(isHidden);
181 protected void addNewServiceInfoWithAction(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
182 LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
183 String modelUUID, ServiceAction action) {
184 ServiceInfo serviceInfo = createServiceInfo(uuid, userId, serviceName, createDate, statusModifiedDate, status,
185 isHidden, retryEnabled, modelUUID);
186 serviceInfo.setAction(action);
187 dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
188 setCreateDateToServiceInfo(uuid, createDate);
193 public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) {
194 return generateMockServiceInstantiationPayload(isPause, vnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null);
197 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) {
198 return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null);
201 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) {
202 return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId);
205 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) {
206 return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId);
208 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) {
209 ModelInfo modelInfo = createModelInfo();
211 List<Map<String,String>> instanceParams = createInstanceParams();
213 return new ServiceInstantiation( modelInfo,
214 AsyncInstantiationBusinessLogicTest.OWNING_ENTITY_ID,
215 AsyncInstantiationBusinessLogicTest.JULIO_ERICKSON,
217 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_ID,
218 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_NAME,
219 AsyncInstantiationBusinessLogicTest.PRODUCT_FAMILY_ID,
220 isUserProvidedNaming ? AsyncInstantiationBusinessLogicTest.INSTANCE_NAME : null,
221 AsyncInstantiationBusinessLogicTest.SUBSCRIPTION_SERVICE_TYPE,
222 AsyncInstantiationBusinessLogicTest.LCP_CLOUD_REGION_ID,
224 AsyncInstantiationBusinessLogicTest.A6CA3EE0394ADE9403F075DB23167E,
225 AsyncInstantiationBusinessLogicTest.TENANT_NAME,
226 AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID,
227 AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME,
240 UUID.randomUUID().toString(), null, null, null);
243 private List<Map<String,String>> createInstanceParams() {
244 List<Map<String, String>> instanceParams = new ArrayList<>();
245 HashMap<String, String> map = new HashMap<>();
246 map.put("instanceParams_test1" , "some text");
247 map.put("instanceParams_test2" , "another text");
248 instanceParams.add(map);
249 return instanceParams;
252 protected VfModule createVfModule(
253 String modelName, String modelVersionId, String modelCustomizationId,
254 List<Map<String, String>> instanceParams, List<UserParamNameAndValue> supplementaryParams, String instanceName,
255 String volumeGroupInstanceName, boolean isAlacarte, Boolean usePreload) {
256 ModelInfo vfModuleInfo = new ModelInfo();
257 vfModuleInfo.setModelType("vfModule");
258 vfModuleInfo.setModelName(modelName);
259 vfModuleInfo.setModelVersionId(modelVersionId);
260 vfModuleInfo.setModelCustomizationId(modelCustomizationId);
261 vfModuleInfo.setModelCustomizationName(modelName);
264 vfModuleInfo.setModelInvariantId("22222222-f63c-463e-ba94-286933b895f9");
265 vfModuleInfo.setModelVersion("10.0");
266 return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), "mdt1", null,
267 "88a6ca3ee0394ade9403f075db23167e", instanceParams, supplementaryParams, false,
268 usePreload, null, UUID.randomUUID().toString(), null, null,
272 return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
273 instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
274 null, null, null, null);
277 protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
278 return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
281 protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
282 String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups, List<UserParamNameAndValue> supplementaryParams) {
283 return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
284 null, supplementaryParams, true, null, null, UUID.randomUUID().toString(), null, null, retainAssignments, retainVolumeGroups, null);
287 protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
288 ModelInfo vnfModelInfo = new ModelInfo();
289 vnfModelInfo.setModelType("vnf");
290 vnfModelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
291 vnfModelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
292 vnfModelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
293 vnfModelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
294 //added two conditional fields according to MSO AID - needed only in alacarte
296 vnfModelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
297 vnfModelInfo.setModelVersion("10.0");
302 protected ModelInfo createVnfModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
303 return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
306 private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId)
308 ModelInfo modelInfo = new ModelInfo();
309 modelInfo.setModelType("network");
310 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
311 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
312 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
313 modelInfo.setModelCustomizationId(modelCustomizationId);
314 //added two conditional fields according to MSO AID - needed only in alacarte
316 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
317 modelInfo.setModelVersion("10.0");
322 private ModelInfo createModelInfo() {
323 ModelInfo modelInfo = new ModelInfo();
324 modelInfo.setModelType("service");
325 modelInfo.setModelVersionId(SERVICE_MODEL_VERSION_ID);
326 modelInfo.setModelVersion("10.0");
327 modelInfo.setModelInvariantId("5d48acb5-097d-4982-aeb2-f4a3bd87d31b");
328 modelInfo.setModelName("MOW AVPN vMX BV vPE 1 Service");
332 private ModelInfo createModelInfo(String modelType, String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName ) {
333 ModelInfo modelInfo = new ModelInfo();
334 modelInfo.setModelType(modelType);
335 modelInfo.setModelVersionId(modelVersionId);
336 modelInfo.setModelVersion(modelVersion);
337 modelInfo.setModelInvariantId(modelInvariantId);
338 modelInfo.setModelName(modelName);
339 modelInfo.setModelCustomizationId(modelCustomizationId);
340 modelInfo.setModelCustomizationName(modelCustomizationName);
344 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming) {
345 return createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, isUserProvidedNaming, false);
348 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming, boolean isAlacarte) {
349 Map<String, Vnf> vnfs = new HashMap<>();
350 ModelInfo vnfModelInfo = createVnfModelInfo(isAlacarte);
352 Map<String, Map<String, VfModule>> vfModules = new HashMap<>();
354 List<Map<String, String>> instanceParams1 = ImmutableList.of((ImmutableMap.of("vmx_int_net_len", "24")));
355 VfModule vfModule1 = createVfModule("201673MowAvpnVpeBvL..AVPN_base_vPE_BV..module-0", VF_MODULE_0_MODEL_VERSION_ID, VF_MODULE_0_MODEL_CUSTOMIZATION_NAME,
356 instanceParams1, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vPE_BV_base" : null), null, isAlacarte, true);
357 List<Map<String, String>> instanceParams2 = ImmutableList.of(vfModuleInstanceParamsMap);
358 VfModule vfModule2 = createVfModule("201673MowAvpnVpeBvL..AVPN_vRE_BV..module-1", VF_MODULE_1_MODEL_VERSION_ID, VF_MODULE_1_MODEL_CUSTOMIZATION_NAME,
359 instanceParams2, emptyList(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vRE_BV_expansion": null), (isUserProvidedNaming ? "myVgName" : null), isAlacarte, true);
361 String vfModuleModelName = vfModule1.getModelInfo().getModelName();
362 vfModules.put(vfModuleModelName, new LinkedHashMap<>());
364 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":001", vfModule1);
365 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":002", vfModule2);
367 Vnf vnf = new Vnf(vnfModelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", (isUserProvidedNaming ? VNF_NAME : null), Action.Create.name(),
368 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", vnfInstanceParams,"lineOfBusinessName" , false, null, vfModules,
369 UUID.randomUUID().toString(), null, null, null);
371 vnfs.put(vnf.getModelInfo().getModelName(), vnf);
375 protected void mockAaiClientAaiStatusOK() {
376 when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false);
379 protected void enableAddCloudOwnerOnMsoRequest(boolean isActive) {
380 // always turn on the feature flag
381 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isActive);
382 when(aaiClient.getCloudOwnerByCloudRegionId(anyString())).thenReturn("irma-aic");
385 protected void enableAddCloudOwnerOnMsoRequest() {
386 enableAddCloudOwnerOnMsoRequest(true);
389 protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs) {
390 return generateMockMacroServiceInstantiationPayload(isPause, vnfs, 1, true, PROJECT_NAME, false);
393 protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
394 List<Map<String, String>> instanceParams = ImmutableList
395 .of(ImmutableMap.of("someUserParam","someValue", "anotherUserParam","anotherValue"));
396 ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489",
397 "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name",
398 "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId,
399 null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false,
400 null, null, null, null, null, null,
401 new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro)
403 return serviceInstantiation;
406 public static class NetworkDetails {
408 public NetworkDetails(String name, String modelCustomizationId) {
410 this.modelCustomizationId = modelCustomizationId;
414 public String modelCustomizationId;
417 protected Map<String, Network> createNetworkList(List instanceParams, List<NetworkDetails> networkDetails, boolean isALaCarte) {
418 Stream<Network> networkStream = networkDetails.stream().map(
419 details->new Network(createNetworkModelInfo(isALaCarte, details.modelCustomizationId), "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
420 details.name, Action.Create.name(),
421 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", instanceParams,"lineOfBusinessName" ,
422 false, null, UUID.randomUUID().toString(), null, null, null));
423 // I can't tell why compiler don't like the statement if it's only one line...
424 return networkStream.collect(Collectors.toMap(network -> network.getModelInfo().getModelCustomizationId(), network -> network));
427 protected InstanceGroup createInstanceGroup(boolean isUserProvidedNaming, Action action) {
428 ModelInfo modelInfo = new ModelInfo();
429 modelInfo.setModelType("instanceGroup");
430 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
431 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
432 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
433 modelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
434 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
435 modelInfo.setModelVersion("10.0");
437 return new InstanceGroup(modelInfo, (isUserProvidedNaming ? VNF_GROUP_NAME : null), action.name(), false, null, emptyMap(), UUID.randomUUID().toString(), null, null,
441 protected ModelInfo createServiceModelInfo() {
442 ModelInfo siModelInfo = new ModelInfo();
443 siModelInfo.setModelName("sriov");
444 siModelInfo.setModelType("service");
445 siModelInfo.setModelInvariantId("ff3514e3-5a33-55df-13ab-12abad84e7ff");
446 siModelInfo.setModelVersionId("fe6985cd-ea33-3346-ac12-ab121484a3fe");
447 siModelInfo.setModelVersion("1.0");
452 protected ModelInfo createServiceModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
453 return createModelInfo("service", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
456 protected void createInstanceParamsMaps() {
457 instanceParamsMapWithoutParams = new HashMap<>();
458 instanceParamsMapWithoutParams.put("availability_zone_0" , "mtpocdv-kvm-az01");
459 instanceParamsMapWithoutParams.put("vre_a_volume_size_0" , "100");
461 vfModuleInstanceParamsMapWithParamsToRemove = new HashMap<>();
462 vfModuleInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(0), "should be removed");
463 vfModuleInstanceParamsMapWithParamsToRemove.put("availability_zone_0" , "mtpocdv-kvm-az01");
464 vfModuleInstanceParamsMapWithParamsToRemove.put("vre_a_volume_size_0" , "100");
466 vnfInstanceParamsMapWithParamsToRemove = new HashMap<>();
467 vnfInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(1), "should be removed");
470 public static AsyncRequestStatus asyncRequestStatusResponse(String msoStatus) {
471 AsyncRequestStatus asyncRequestStatus = new AsyncRequestStatus(new AsyncRequestStatus.Request(new RequestStatus()));
472 asyncRequestStatus.request.requestStatus.setRequestState(msoStatus);
473 asyncRequestStatus.request.requestId = UUID.randomUUID().toString();
474 asyncRequestStatus.request.startTime = TimeUtils.zonedDateTimeToString(ZonedDateTime.now());
475 return asyncRequestStatus;
478 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus) {
479 return asyncRequestStatusResponseAsRestObject(msoStatus, 200);
482 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus, int httpStatusCode) {
483 RestObject<AsyncRequestStatus> restObject = new RestObject<>();
484 restObject.set(asyncRequestStatusResponse(msoStatus));
485 restObject.setStatusCode(httpStatusCode);
489 protected void mockAaiClientAnyNameFree() {
490 when(aaiClient.isNodeTypeExistsByName(any(), any())).thenReturn(false);
493 protected ExceptionWithRequestInfo aaiNodeQueryBadResponseException() {
494 return new ExceptionWithRequestInfo(HttpMethod.GET, "url", "raw data", 500, null);
497 protected ServiceInstantiation generateALaCarteWithVnfsServiceInstantiationPayload() {
498 Map<String, Vnf> vnfs = createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, Collections.singletonList(vnfInstanceParamsMapWithParamsToRemove) , true, true);
499 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, vnfs, emptyMap(), emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
500 return serviceInstantiation;
503 protected ServiceInstantiation generateALaCarteWithNetworksPayload(List<NetworkDetails> networkDetails) {
504 Map<String, Network> networks = createNetworkList(emptyList(), networkDetails, true);
505 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, emptyMap(), networks, emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
506 return serviceInstantiation;
509 protected ServiceInstantiation generateALaCarteUpdateWith1ExistingGroup2NewGroupsPayload() {
510 final InstanceGroup instanceGroup1 = createInstanceGroup(true, Action.None);
511 final InstanceGroup instanceGroup2 = createInstanceGroup(false, Action.Create);
512 final InstanceGroup instanceGroup3 = createInstanceGroup(true, Action.Create);
513 Map<String, InstanceGroup> groups = ImmutableMap.of(
514 "foo:001", instanceGroup1,
515 "foo:002", instanceGroup2,
516 "foo:003", instanceGroup3
518 return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), groups,
519 1, true, PROJECT_NAME, false, true, "VNF_API",
520 Action.None, "1234567890");
523 protected ServiceInstantiation generateALaCarteServiceInstantiationPayload() {
524 return generateMockALaCarteServiceInstantiationPayload(false, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API");