Add filter for serviceInfo by service model id
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / AsyncInstantiationBaseTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.vid.services;
22
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.hamcrest.core.IsEqual.equalTo;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.ArgumentMatchers.anyString;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.Mockito.when;
31 import static org.onap.vid.model.VidNotions.InstantiationType;
32 import static org.onap.vid.model.VidNotions.InstantiationUI;
33 import static org.onap.vid.model.VidNotions.ModelCategory;
34
35 import com.google.common.collect.ImmutableList;
36 import com.google.common.collect.ImmutableMap;
37 import java.time.LocalDateTime;
38 import java.time.ZoneId;
39 import java.time.ZonedDateTime;
40 import java.util.ArrayList;
41 import java.util.Collections;
42 import java.util.Date;
43 import java.util.HashMap;
44 import java.util.LinkedHashMap;
45 import java.util.List;
46 import java.util.Map;
47 import java.util.UUID;
48 import java.util.stream.Collectors;
49 import java.util.stream.Stream;
50 import javax.inject.Inject;
51 import org.hibernate.SessionFactory;
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.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.rest.AsyncRequestStatus;
68 import org.onap.vid.mso.rest.RequestStatus;
69 import org.onap.vid.properties.Features;
70 import org.onap.vid.services.AsyncInstantiationBusinessLogicTest.ServiceInfoComparator;
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;
77
78 public class AsyncInstantiationBaseTest extends AbstractTestNGSpringContextTests {
79
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
83     public static final String OWNING_ENTITY_ID = "038d99af-0427-42c2-9d15-971b99b9b489";
84     public static final String JULIO_ERICKSON = "JULIO ERICKSON";
85     public static final String PROJECT_NAME = "{some project name}";
86     public static final String SUBSCRIBER_ID = "{some subscriber id}";
87     public static final String SUBSCRIBER_NAME = "{some subscriber name}";
88     public static final String PRODUCT_FAMILY_ID = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
89     public static final String INSTANCE_NAME = "vPE_Service";
90     public static final String SUBSCRIPTION_SERVICE_TYPE = "VMX";
91     public static final String LCP_CLOUD_REGION_ID = "mdt1";
92     public static final String A6CA3EE0394ADE9403F075DB23167E = "88a6ca3ee0394ade9403f075db23167e";
93     public static final String TENANT_NAME = "USP-SIP-IC-24335-T-01";
94     public static final String AIC_ZONE_ID = "NFT1";
95     public static final String AIC_ZONE_NAME = "NFTJSSSS-NFT1";
96     public static final String TEST_API = "GR_API";
97     public static final String SERVICE_MODEL_VERSION_ID = "3c40d244-808e-42ca-b09a-256d83d19d0a";
98     public static final String VF_MODULE_0_MODEL_CUSTOMIZATION_NAME = "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f";
99     public static final String VF_MODULE_1_MODEL_CUSTOMIZATION_NAME = "72d9d1cd-f46d-447a-abdb-451d6fb05fa8";
100     public static final String VF_MODULE_0_MODEL_VERSION_ID = "4c75f813-fa91-45a4-89d0-790ff5f1ae79";
101     public static final String VF_MODULE_1_MODEL_VERSION_ID = "56e2b103-637c-4d1a-adc8-3a7f4a6c3240";
102     public static final String VNF_NAME = "vmxnjr001";
103     public static final String VNF_GROUP_NAME = "VNF_GROUP_NAME";
104
105     protected HashMap<String, String> instanceParamsMapWithoutParams;
106     protected HashMap<String, String> vfModuleInstanceParamsMapWithParamsToRemove;
107     protected HashMap<String, String> vnfInstanceParamsMapWithParamsToRemove;
108
109     protected int serviceCount = 0;
110
111
112     @Inject
113     protected DataAccessService dataAccessService;
114
115     @Inject
116     protected FeatureManager featureManager;
117
118     @Inject
119     protected AaiClientInterface aaiClient;
120
121     @Inject
122     protected CloudOwnerService cloudOwnerService;
123
124     @Autowired
125     protected SessionFactory sessionFactory;
126
127
128     protected static Date toDate(LocalDateTime localDateTime) {
129         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
130     }
131
132     protected HashMap<String, Object> getPropsMap() {
133         HashMap<String, Object> props = new HashMap<>();
134         props.put(FusionObject.Parameters.PARAM_USERID, 0);
135         return props;
136     }
137
138
139     private void setCreateDateToServiceInfo(UUID jobUuid, LocalDateTime createDate) {
140         List<ServiceInfo> serviceInfoList = dataAccessService.getList(ServiceInfo.class, getPropsMap());
141         DaoUtils.tryWithSessionAndTransaction(sessionFactory, session -> {
142             serviceInfoList.stream()
143                 .filter(serviceInfo -> jobUuid.equals(serviceInfo.getJobId()))
144                 .forEach(serviceInfo -> {
145                     serviceInfo.setCreated(toDate(createDate));
146                     session.saveOrUpdate(serviceInfo);
147                 });
148             return 1;
149         });
150     }
151
152     protected void addNewServiceInfo(UUID uuid, String userId, String serviceName, LocalDateTime createDate,
153         LocalDateTime statusModifiedDate, JobStatus status, boolean isHidden, boolean retryEnabled,
154         String modelUUID) {
155         ServiceInfo serviceInfo = new ServiceInfo();
156         serviceInfo.setJobId(uuid);
157         serviceInfo.setUserId(userId);
158         serviceInfo.setServiceInstanceName(serviceName);
159         serviceInfo.setStatusModifiedDate(toDate(statusModifiedDate));
160         serviceInfo.setJobStatus(status);
161         serviceInfo.setPause(false);
162         serviceInfo.setOwningEntityId("1234");
163         serviceInfo.setCreatedBulkDate(toDate(createDate));
164         serviceInfo.setRetryEnabled(retryEnabled);
165         serviceInfo.setServiceModelId(modelUUID);
166         serviceInfo.setHidden(isHidden);
167         dataAccessService.saveDomainObject(serviceInfo, getPropsMap());
168         setCreateDateToServiceInfo(uuid, createDate);
169         serviceCount++;
170
171     }
172
173
174     public ServiceInstantiation generateMockMacroServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs, int bulkSize, boolean isUserProvidedNaming, String projectName, boolean rollbackOnFailure) {
175         return generateMockServiceInstantiationPayload(isPause, vnfs, Collections.EMPTY_MAP, Collections.EMPTY_MAP, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, null, Action.Create, null);
176     }
177
178     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) {
179         return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Create, null);
180     }
181
182     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) {
183         return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, true, testApi, Action.Delete, instanceId);
184     }
185
186     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) {
187         return generateMockServiceInstantiationPayload(isPause, vnfs, networks, vnfGroups, bulkSize, isUserProvidedNaming, projectName, rollbackOnFailure, false, testApi, Action.Delete, instanceId);
188     }
189     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) {
190         ModelInfo modelInfo = createModelInfo();
191
192         List<Map<String,String>> instanceParams = createInstanceParams();
193
194         return new ServiceInstantiation( modelInfo,
195                 AsyncInstantiationBusinessLogicTest.OWNING_ENTITY_ID,
196                 AsyncInstantiationBusinessLogicTest.JULIO_ERICKSON,
197                 projectName,
198                 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_ID,
199                 AsyncInstantiationBusinessLogicTest.SUBSCRIBER_NAME,
200                 AsyncInstantiationBusinessLogicTest.PRODUCT_FAMILY_ID,
201                 isUserProvidedNaming ? AsyncInstantiationBusinessLogicTest.INSTANCE_NAME : null,
202                 AsyncInstantiationBusinessLogicTest.SUBSCRIPTION_SERVICE_TYPE,
203                 AsyncInstantiationBusinessLogicTest.LCP_CLOUD_REGION_ID,
204                 null,
205                 AsyncInstantiationBusinessLogicTest.A6CA3EE0394ADE9403F075DB23167E,
206                 AsyncInstantiationBusinessLogicTest.TENANT_NAME,
207                 AsyncInstantiationBusinessLogicTest.AIC_ZONE_ID,
208                 AsyncInstantiationBusinessLogicTest.AIC_ZONE_NAME,
209                 vnfs,
210                 networks,
211                 vnfGroups,
212                 null,
213                 instanceParams,
214                 isPause,
215                 bulkSize,
216                 rollbackOnFailure,
217                 isAlacarte,
218                 testApi,
219                 instanceId,
220                 action.name(),
221                 UUID.randomUUID().toString(), null, null, null);
222     }
223
224     private List<Map<String,String>> createInstanceParams() {
225         List<Map<String, String>> instanceParams = new ArrayList<>();
226         HashMap<String, String> map = new HashMap<>();
227         map.put("instanceParams_test1" , "some text");
228         map.put("instanceParams_test2" , "another text");
229         instanceParams.add(map);
230         return instanceParams;
231     }
232
233     protected VfModule createVfModule(String modelName, String modelVersionId, String modelCustomizationId,
234                                     List<Map<String, String>> instanceParams, Map<String, String> supplementaryParams, String instanceName, String volumeGroupInstanceName, boolean isAlacarte) {
235         ModelInfo vfModuleInfo = new ModelInfo();
236         vfModuleInfo.setModelType("vfModule");
237         vfModuleInfo.setModelName(modelName);
238         vfModuleInfo.setModelVersionId(modelVersionId);
239         vfModuleInfo.setModelCustomizationId(modelCustomizationId);
240         vfModuleInfo.setModelCustomizationName(modelName);
241
242         if (isAlacarte) {
243             vfModuleInfo.setModelInvariantId("22222222-f63c-463e-ba94-286933b895f9");
244             vfModuleInfo.setModelVersion("10.0");
245             return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), "mdt1", null,
246                     "88a6ca3ee0394ade9403f075db23167e", instanceParams, supplementaryParams, false, true, null, UUID.randomUUID().toString(), null, null,
247                 null, null, null);
248         }
249
250         return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
251                 instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
252             null, null, null, null);
253     }
254
255     protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
256         return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
257     }
258
259     protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
260         String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups, Map<String, String> supplementaryParams) {
261         return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
262                 null, supplementaryParams, true, null, null, UUID.randomUUID().toString(), null, null, retainAssignments, retainVolumeGroups, null);
263     }
264
265     protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
266         ModelInfo vnfModelInfo = new ModelInfo();
267         vnfModelInfo.setModelType("vnf");
268         vnfModelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
269         vnfModelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
270         vnfModelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
271         vnfModelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
272         //added two conditional fields according to MSO AID - needed only in alacarte
273         if (isAlacarte) {
274             vnfModelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
275             vnfModelInfo.setModelVersion("10.0");
276         }
277         return vnfModelInfo;
278     }
279
280     protected ModelInfo createVnfModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
281         return createModelInfo("vnf", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
282     }
283
284     private ModelInfo createNetworkModelInfo(boolean isAlacarte, String modelCustomizationId)
285     {
286         ModelInfo modelInfo = new ModelInfo();
287         modelInfo.setModelType("network");
288         modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
289         modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
290         modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
291         modelInfo.setModelCustomizationId(modelCustomizationId);
292         //added two conditional fields according to MSO AID - needed only in alacarte
293         if (isAlacarte) {
294             modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
295             modelInfo.setModelVersion("10.0");
296         }
297         return modelInfo;
298     }
299
300     private ModelInfo createModelInfo() {
301         ModelInfo modelInfo = new ModelInfo();
302         modelInfo.setModelType("service");
303         modelInfo.setModelVersionId(SERVICE_MODEL_VERSION_ID);
304         modelInfo.setModelVersion("10.0");
305         modelInfo.setModelInvariantId("5d48acb5-097d-4982-aeb2-f4a3bd87d31b");
306         modelInfo.setModelName("MOW AVPN vMX BV vPE 1 Service");
307         return modelInfo;
308     }
309
310     private ModelInfo createModelInfo(String modelType, String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName ) {
311         ModelInfo modelInfo = new ModelInfo();
312         modelInfo.setModelType(modelType);
313         modelInfo.setModelVersionId(modelVersionId);
314         modelInfo.setModelVersion(modelVersion);
315         modelInfo.setModelInvariantId(modelInvariantId);
316         modelInfo.setModelName(modelName);
317         modelInfo.setModelCustomizationId(modelCustomizationId);
318         modelInfo.setModelCustomizationName(modelCustomizationName);
319         return modelInfo;
320     }
321
322     protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming) {
323         return createVnfList(vfModuleInstanceParamsMap, vnfInstanceParams, isUserProvidedNaming, false);
324     }
325
326     protected Map<String, Vnf> createVnfList(HashMap<String, String> vfModuleInstanceParamsMap, List vnfInstanceParams, boolean isUserProvidedNaming, boolean isAlacarte) {
327         Map<String, Vnf> vnfs = new HashMap<>();
328         ModelInfo vnfModelInfo = createVnfModelInfo(isAlacarte);
329
330         Map<String, Map<String, VfModule>> vfModules = new HashMap<>();
331
332         List<Map<String, String>> instanceParams1 = ImmutableList.of((ImmutableMap.of("vmx_int_net_len", "24")));
333         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);
334         List<Map<String, String>> instanceParams2 = ImmutableList.of(vfModuleInstanceParamsMap);
335         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);
336
337         String vfModuleModelName = vfModule1.getModelInfo().getModelName();
338         vfModules.put(vfModuleModelName, new LinkedHashMap<>());
339
340         vfModules.get(vfModuleModelName).put(vfModuleModelName + ":001", vfModule1);
341         vfModules.get(vfModuleModelName).put(vfModuleModelName + ":002", vfModule2);
342
343         Vnf vnf = new Vnf(vnfModelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", (isUserProvidedNaming ? VNF_NAME : null), Action.Create.name(),
344                 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", vnfInstanceParams,"lineOfBusinessName" , false, null, vfModules,
345                 UUID.randomUUID().toString(), null, null, null);
346
347         vnfs.put(vnf.getModelInfo().getModelName(), vnf);
348         return vnfs;
349     }
350
351     protected void mockAaiClientAaiStatusOK() {
352         when(aaiClient.isNodeTypeExistsByName(eq(AsyncInstantiationBusinessLogicImpl.NAME_FOR_CHECK_AAI_STATUS), any())).thenReturn(false);
353     }
354
355     protected void enableAddCloudOwnerOnMsoRequest(boolean isActive) {
356         // always turn on the feature flag
357         when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isActive);
358         when(aaiClient.getCloudOwnerByCloudRegionId(anyString())).thenReturn("irma-aic");
359     }
360
361     protected void enableAddCloudOwnerOnMsoRequest() {
362         enableAddCloudOwnerOnMsoRequest(true);
363     }
364
365     protected ServiceInstantiation generateMacroMockServiceInstantiationPayload(boolean isPause, Map<String, Vnf> vnfs) {
366         return generateMockMacroServiceInstantiationPayload(isPause, vnfs, 1, true, PROJECT_NAME, false);
367     }
368
369     protected ServiceInstantiation generatePre1806MacroTransportServiceInstantiationPayload(String tenantId, String lcpCloudRegionId) {
370         List<Map<String, String>> instanceParams = ImmutableList
371             .of(ImmutableMap.of("someUserParam","someValue", "anotherUserParam","anotherValue"));
372         ServiceInstantiation serviceInstantiation = new ServiceInstantiation(createServiceModelInfo(), "038d99af-0427-42c2-9d15-971b99b9b489",
373                 "JULIO ERICKSON", "some_project_name", "some_subscriber_id", "some_subscriber_name",
374                 "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", null, "MOG", lcpCloudRegionId, null, tenantId,
375                 null, null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, instanceParams, false, 1, false, false,
376                 null, null, null, null, null, null,
377                 new VidNotions(InstantiationUI.TRANSPORT_SERVICE, ModelCategory.Transport, InstantiationUI.TRANSPORT_SERVICE, InstantiationType.Macro)
378         );
379         return serviceInstantiation;
380     }
381
382     public static class NetworkDetails {
383
384         public NetworkDetails(String name, String modelCustomizationId) {
385             this.name = name;
386             this.modelCustomizationId = modelCustomizationId;
387         }
388
389         public String name;
390         public String modelCustomizationId;
391     }
392
393     protected Map<String, Network> createNetworkList(List instanceParams, List<NetworkDetails> networkDetails, boolean isALaCarte) {
394         Stream<Network> networkStream = networkDetails.stream().map(
395                 details->new Network(createNetworkModelInfo(isALaCarte, details.modelCustomizationId), "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
396                 details.name, Action.Create.name(),
397                 "platformName", "mdt1", null, "88a6ca3ee0394ade9403f075db23167e", instanceParams,"lineOfBusinessName" ,
398                 false, null, UUID.randomUUID().toString(), null, null, null));
399 //        I can't tell why compiler don't like the statement if it's only one line...
400         return networkStream.collect(Collectors.toMap(network -> network.getModelInfo().getModelCustomizationId(), network -> network));
401     }
402
403     protected InstanceGroup createInstanceGroup(boolean isUserProvidedNaming, Action action) {
404         ModelInfo modelInfo = new ModelInfo();
405         modelInfo.setModelType("instanceGroup");
406         modelInfo.setModelName("2016-73_MOW-AVPN-vPE-BV-L");
407         modelInfo.setModelVersionId("7f40c192-f63c-463e-ba94-286933b895f8");
408         modelInfo.setModelCustomizationName("2016-73_MOW-AVPN-vPE-BV-L 0");
409         modelInfo.setModelCustomizationId("ab153b6e-c364-44c0-bef6-1f2982117f04");
410         modelInfo.setModelInvariantId("11111111-f63c-463e-ba94-286933b895f9");
411         modelInfo.setModelVersion("10.0");
412
413         return new InstanceGroup(modelInfo, (isUserProvidedNaming ? VNF_GROUP_NAME : null), action.name(), false, null, emptyMap(), UUID.randomUUID().toString(), null, null,
414             null);
415     }
416
417     protected ModelInfo createServiceModelInfo() {
418         ModelInfo siModelInfo = new ModelInfo();
419         siModelInfo.setModelName("sriov");
420         siModelInfo.setModelType("service");
421         siModelInfo.setModelInvariantId("ff3514e3-5a33-55df-13ab-12abad84e7ff");
422         siModelInfo.setModelVersionId("fe6985cd-ea33-3346-ac12-ab121484a3fe");
423         siModelInfo.setModelVersion("1.0");
424
425         return siModelInfo;
426     }
427
428     protected ModelInfo createServiceModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
429         return createModelInfo("service", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
430     }
431
432     protected void createInstanceParamsMaps() {
433         instanceParamsMapWithoutParams = new HashMap<>();
434         instanceParamsMapWithoutParams.put("availability_zone_0" , "mtpocdv-kvm-az01");
435         instanceParamsMapWithoutParams.put("vre_a_volume_size_0" , "100");
436
437         vfModuleInstanceParamsMapWithParamsToRemove = new HashMap<>();
438         vfModuleInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(0), "should be removed");
439         vfModuleInstanceParamsMapWithParamsToRemove.put("availability_zone_0" , "mtpocdv-kvm-az01");
440         vfModuleInstanceParamsMapWithParamsToRemove.put("vre_a_volume_size_0" , "100");
441
442         vnfInstanceParamsMapWithParamsToRemove = new HashMap<>();
443         vnfInstanceParamsMapWithParamsToRemove.put(AsyncInstantiationBusinessLogic.PARAMS_TO_IGNORE.get(1), "should be removed");
444     }
445
446     public static AsyncRequestStatus asyncRequestStatusResponse(String msoStatus) {
447         AsyncRequestStatus asyncRequestStatus = new AsyncRequestStatus(new AsyncRequestStatus.Request(new RequestStatus()));
448         asyncRequestStatus.request.requestStatus.setRequestState(msoStatus);
449         asyncRequestStatus.request.requestId = UUID.randomUUID().toString();
450         asyncRequestStatus.request.startTime = TimeUtils.zonedDateTimeToString(ZonedDateTime.now());
451         return asyncRequestStatus;
452     }
453
454     public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus) {
455         return asyncRequestStatusResponseAsRestObject(msoStatus, 200);
456     }
457
458     public static RestObject<AsyncRequestStatus> asyncRequestStatusResponseAsRestObject(String msoStatus, int httpStatusCode) {
459         RestObject<AsyncRequestStatus> restObject = new RestObject<>();
460         restObject.set(asyncRequestStatusResponse(msoStatus));
461         restObject.setStatusCode(httpStatusCode);
462         return restObject;
463     }
464
465     protected void mockAaiClientAnyNameFree() {
466         when(aaiClient.isNodeTypeExistsByName(any(), any())).thenReturn(false);
467     }
468
469     protected ExceptionWithRequestInfo aaiNodeQueryBadResponseException() {
470         return new ExceptionWithRequestInfo(HttpMethod.GET, "url", "raw data", 500, null);
471     }
472
473     protected ServiceInstantiation generateALaCarteWithVnfsServiceInstantiationPayload() {
474         Map<String, Vnf> vnfs = createVnfList(vfModuleInstanceParamsMapWithParamsToRemove, Collections.singletonList(vnfInstanceParamsMapWithParamsToRemove) , true, true);
475         ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, vnfs, emptyMap(), emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
476         return serviceInstantiation;
477     }
478
479     protected ServiceInstantiation generateALaCarteWithNetworksPayload(List<NetworkDetails> networkDetails) {
480         Map<String, Network> networks = createNetworkList(emptyList(), networkDetails, true);
481         ServiceInstantiation serviceInstantiation = generateMockALaCarteServiceInstantiationPayload(false, emptyMap(), networks, emptyMap(), 1, true, PROJECT_NAME, false, "VNF_API");
482         return serviceInstantiation;
483     }
484
485     protected ServiceInstantiation generateALaCarteUpdateWith1ExistingGroup2NewGroupsPayload() {
486         final InstanceGroup instanceGroup1 = createInstanceGroup(true, Action.None);
487         final InstanceGroup instanceGroup2 = createInstanceGroup(false, Action.Create);
488         final InstanceGroup instanceGroup3 = createInstanceGroup(true, Action.Create);
489         Map<String, InstanceGroup> groups = ImmutableMap.of(
490                 "foo:001", instanceGroup1,
491                 "foo:002", instanceGroup2,
492                 "foo:003", instanceGroup3
493         );
494         return generateMockServiceInstantiationPayload(false, emptyMap(), emptyMap(), groups,
495                 1, true, PROJECT_NAME, false, true, "VNF_API",
496                 Action.None, "1234567890");
497     }
498
499     protected ServiceInstantiation generateALaCarteServiceInstantiationPayload() {
500         return generateMockALaCarteServiceInstantiationPayload(false, Collections.EMPTY_MAP, Collections.EMPTY_MAP, Collections.EMPTY_MAP, 1, true, PROJECT_NAME, false, "VNF_API");
501     }
502 }