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