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.hamcrest.MatcherAssert.assertThat;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.anyString;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.Mockito.when;
30 import static org.onap.vid.model.VidNotions.InstantiationType;
31 import static org.onap.vid.model.VidNotions.InstantiationUI;
32 import static org.onap.vid.model.VidNotions.ModelCategory;
34 import com.google.common.collect.ImmutableList;
35 import com.google.common.collect.ImmutableMap;
36 import java.time.LocalDateTime;
37 import java.time.ZoneId;
38 import java.time.ZonedDateTime;
39 import java.util.ArrayList;
40 import java.util.Collections;
41 import java.util.Date;
42 import java.util.HashMap;
43 import java.util.LinkedHashMap;
44 import java.util.List;
46 import java.util.UUID;
47 import java.util.stream.Collectors;
48 import java.util.stream.Stream;
49 import javax.inject.Inject;
50 import org.hibernate.SessionFactory;
51 import org.jetbrains.annotations.NotNull;
52 import org.onap.portalsdk.core.domain.FusionObject;
53 import org.onap.portalsdk.core.service.DataAccessService;
54 import org.onap.vid.aai.AaiClientInterface;
55 import org.onap.vid.aai.ExceptionWithRequestInfo;
56 import org.onap.vid.job.Job.JobStatus;
57 import org.onap.vid.model.Action;
58 import org.onap.vid.model.ServiceInfo;
59 import org.onap.vid.model.ServiceInfo.ServiceAction;
60 import org.onap.vid.model.VidNotions;
61 import org.onap.vid.model.serviceInstantiation.InstanceGroup;
62 import org.onap.vid.model.serviceInstantiation.Network;
63 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
64 import org.onap.vid.model.serviceInstantiation.VfModule;
65 import org.onap.vid.model.serviceInstantiation.Vnf;
66 import org.onap.vid.mso.RestObject;
67 import org.onap.vid.mso.model.ModelInfo;
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(String modelName, String modelVersionId, String modelCustomizationId,
253 List<Map<String, String>> instanceParams, Map<String, String> supplementaryParams, String instanceName, String volumeGroupInstanceName, boolean isAlacarte) {
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, true, null, UUID.randomUUID().toString(), null, null,
269 return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
270 instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
271 null, null, null, null);
274 protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
275 return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
278 protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
279 String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups, Map<String, String> supplementaryParams) {
280 return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
281 null, supplementaryParams, true, null, null, UUID.randomUUID().toString(), null, null, retainAssignments, retainVolumeGroups, null);
284 protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
285 ModelInfo vnfModelInfo = new ModelInfo();
286 vnfModelInfo.setModelType("vnf");
287 vnfModelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
288 vnfModelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
289 vnfModelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
290 vnfModelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
291 //added two conditional fields according to MSO AID - needed only in alacarte
293 vnfModelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
294 vnfModelInfo.setModelVersion("10.0");
299 protected ModelInfo createVnfModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
300 return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
303 private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId)
305 ModelInfo modelInfo = new ModelInfo();
306 modelInfo.setModelType("network");
307 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
308 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
309 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
310 modelInfo.setModelCustomizationId(modelCustomizationId);
311 //added two conditional fields according to MSO AID - needed only in alacarte
313 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
314 modelInfo.setModelVersion("10.0");
319 private ModelInfo createModelInfo() {
320 ModelInfo modelInfo = new ModelInfo();
321 modelInfo.setModelType("service");
322 modelInfo.setModelVersionId(SERVICE_MODEL_VERSION_ID);
323 modelInfo.setModelVersion("10.0");
324 modelInfo.setModelInvariantId("5d48acb5-097d-4982-aeb2-f4a3bd87d31b");
325 modelInfo.setModelName("MOW AVPN vMX BV vPE 1 Service");
329 private ModelInfo createModelInfo(String modelType, String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName ) {
330 ModelInfo modelInfo = new ModelInfo();
331 modelInfo.setModelType(modelType);
332 modelInfo.setModelVersionId(modelVersionId);
333 modelInfo.setModelVersion(modelVersion);
334 modelInfo.setModelInvariantId(modelInvariantId);
335 modelInfo.setModelName(modelName);
336 modelInfo.setModelCustomizationId(modelCustomizationId);
337 modelInfo.setModelCustomizationName(modelCustomizationName);
341 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming) {
342 return createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, isUserProvidedNaming, false);
345 protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming, boolean isAlacarte) {
346 Map<String, Vnf> vnfs = new HashMap<>();
347 ModelInfo vnfModelInfo = createVnfModelInfo(isAlacarte);
349 Map<String, Map<String, VfModule>> vfModules = new HashMap<>();
351 List<Map<String, String>> instanceParams1 = ImmutableList.of((ImmutableMap.of("vmx_int_net_len", "24")));
352 VfModule vfModule1 = createVfModule("201673MowAvpnVpeBvL..AVPN_base_vPE_BV..module-0", VF_MODULE_0_MODEL_VERSION_ID, VF_MODULE_0_MODEL_CUSTOMIZATION_NAME, instanceParams1, new HashMap<>(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vPE_BV_base" : null), null, isAlacarte);
353 List<Map<String, String>> instanceParams2 = ImmutableList.of(vfModuleInstanceParamsMap);
354 VfModule vfModule2 = createVfModule("201673MowAvpnVpeBvL..AVPN_vRE_BV..module-1", VF_MODULE_1_MODEL_VERSION_ID, VF_MODULE_1_MODEL_CUSTOMIZATION_NAME, instanceParams2, new HashMap<>(), (isUserProvidedNaming ? "vmxnjr001_AVPN_base_vRE_BV_expansion": null), (isUserProvidedNaming ? "myVgName" : null), isAlacarte);
356 String vfModuleModelName = vfModule1.getModelInfo().getModelName();
357 vfModules.put(vfModuleModelName, new LinkedHashMap<>());
359 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":001", vfModule1);
360 vfModules.get(vfModuleModelName).put(vfModuleModelName + ":002", vfModule2);
362 Vnf vnf = new Vnf(vnfModelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", (isUserProvidedNaming ? VNF_NAME : null), Action.Create.name(),
363 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", vnfInstanceParams,"lineOfBusinessName" , false, null, vfModules,
364 UUID.randomUUID().toString(), null, null, null);
366 vnfs.put(vnf.getModelInfo().getModelName(), vnf);
370 protected void mockAaiClientAaiStatusOK() {
371 when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false);
374 protected void enableAddCloudOwnerOnMsoRequest(boolean isActive) {
375 // always turn on the feature flag
376 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isActive);
377 when(aaiClient.getCloudOwnerByCloudRegionId(anyString())).thenReturn("irma-aic");
380 protected void enableAddCloudOwnerOnMsoRequest() {
381 enableAddCloudOwnerOnMsoRequest(true);
384 protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs) {
385 return generateMockMacroServiceInstantiationPayload(isPause, vnfs, 1, true, PROJECT_NAME, false);
388 protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
389 List<Map<String, String>> instanceParams = ImmutableList
390 .of(ImmutableMap.of("someUserParam","someValue", "anotherUserParam","anotherValue"));
391 ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489",
392 "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name",
393 "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId,
394 null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false,
395 null, null, null, null, null, null,
396 new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro)
398 return serviceInstantiation;
401 public static class NetworkDetails {
403 public NetworkDetails(String name, String modelCustomizationId) {
405 this.modelCustomizationId = modelCustomizationId;
409 public String modelCustomizationId;
412 protected Map<String, Network> createNetworkList(List instanceParams, List<NetworkDetails> networkDetails, boolean isALaCarte) {
413 Stream<Network> networkStream = networkDetails.stream().map(
414 details->new Network(createNetworkModelInfo(isALaCarte, details.modelCustomizationId), "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
415 details.name, Action.Create.name(),
416 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", instanceParams,"lineOfBusinessName" ,
417 false, null, UUID.randomUUID().toString(), null, null, null));
418 // I can't tell why compiler don't like the statement if it's only one line...
419 return networkStream.collect(Collectors.toMap(network -> network.getModelInfo().getModelCustomizationId(), network -> network));
422 protected InstanceGroup createInstanceGroup(boolean isUserProvidedNaming, Action action) {
423 ModelInfo modelInfo = new ModelInfo();
424 modelInfo.setModelType("instanceGroup");
425 modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
426 modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
427 modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
428 modelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
429 modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
430 modelInfo.setModelVersion("10.0");
432 return new InstanceGroup(modelInfo, (isUserProvidedNaming ? VNF_GROUP_NAME : null), action.name(), false, null, emptyMap(), UUID.randomUUID().toString(), null, null,
436 protected ModelInfo createServiceModelInfo() {
437 ModelInfo siModelInfo = new ModelInfo();
438 siModelInfo.setModelName("sriov");
439 siModelInfo.setModelType("service");
440 siModelInfo.setModelInvariantId("ff3514e3-5a33-55df-13ab-12abad84e7ff");
441 siModelInfo.setModelVersionId("fe6985cd-ea33-3346-ac12-ab121484a3fe");
442 siModelInfo.setModelVersion("1.0");
447 protected ModelInfo createServiceModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
448 return createModelInfo("service", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
451 protected void createInstanceParamsMaps() {
452 instanceParamsMapWithoutParams = new HashMap<>();
453 instanceParamsMapWithoutParams.put("availability_zone_0" , "mtpocdv-kvm-az01");
454 instanceParamsMapWithoutParams.put("vre_a_volume_size_0" , "100");
456 vfModuleInstanceParamsMapWithParamsToRemove = new HashMap<>();
457 vfModuleInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(0), "should be removed");
458 vfModuleInstanceParamsMapWithParamsToRemove.put("availability_zone_0" , "mtpocdv-kvm-az01");
459 vfModuleInstanceParamsMapWithParamsToRemove.put("vre_a_volume_size_0" , "100");
461 vnfInstanceParamsMapWithParamsToRemove = new HashMap<>();
462 vnfInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(1), "should be removed");
465 public static AsyncRequestStatus asyncRequestStatusResponse(String msoStatus) {
466 AsyncRequestStatus asyncRequestStatus = new AsyncRequestStatus(new AsyncRequestStatus.Request(new RequestStatus()));
467 asyncRequestStatus.request.requestStatus.setRequestState(msoStatus);
468 asyncRequestStatus.request.requestId = UUID.randomUUID().toString();
469 asyncRequestStatus.request.startTime = TimeUtils.zonedDateTimeToString(ZonedDateTime.now());
470 return asyncRequestStatus;
473 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus) {
474 return asyncRequestStatusResponseAsRestObject(msoStatus, 200);
477 public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus, int httpStatusCode) {
478 RestObject<AsyncRequestStatus> restObject = new RestObject<>();
479 restObject.set(asyncRequestStatusResponse(msoStatus));
480 restObject.setStatusCode(httpStatusCode);
484 protected void mockAaiClientAnyNameFree() {
485 when(aaiClient.isNodeTypeExistsByName(any(), any())).thenReturn(false);
488 protected ExceptionWithRequestInfo aaiNodeQueryBadResponseException() {
489 return new ExceptionWithRequestInfo(HttpMethod.GET, "url", "raw data", 500, null);
492 protected ServiceInstantiation generateALaCarteWithVnfsServiceInstantiationPayload() {
493 Map<String, Vnf> vnfs = createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, Collections.singletonList(vnfInstanceParamsMapWithParamsToRemove) , true, true);
494 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, vnfs, emptyMap(), emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
495 return serviceInstantiation;
498 protected ServiceInstantiation generateALaCarteWithNetworksPayload(List<NetworkDetails> networkDetails) {
499 Map<String, Network> networks = createNetworkList(emptyList(), networkDetails, true);
500 ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, emptyMap(), networks, emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
501 return serviceInstantiation;
504 protected ServiceInstantiation generateALaCarteUpdateWith1ExistingGroup2NewGroupsPayload() {
505 final InstanceGroup instanceGroup1 = createInstanceGroup(true, Action.None);
506 final InstanceGroup instanceGroup2 = createInstanceGroup(false, Action.Create);
507 final InstanceGroup instanceGroup3 = createInstanceGroup(true, Action.Create);
508 Map<String, InstanceGroup> groups = ImmutableMap.of(
509 "foo:001", instanceGroup1,
510 "foo:002", instanceGroup2,
511 "foo:003", instanceGroup3
513 return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), groups,
514 1, true, PROJECT_NAME, false, true, "VNF_API",
515 Action.None, "1234567890");
518 protected ServiceInstantiation generateALaCarteServiceInstantiationPayload() {
519 return generateMockALaCarteServiceInstantiationPayload(false, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API");