2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Modifications Copyright (c) 2020 Nokia
10 * ================================================================================
11 * Modifications Copyright (c) 2021 Orange
12 * ================================================================================
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
17 * http://www.apache.org/licenses/LICENSE-2.0
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 * ============LICENSE_END=========================================================
27 package org.onap.so.bpmn.infrastructure.workflow.tasks;
29 import static org.hamcrest.CoreMatchers.containsString;
30 import static org.hamcrest.CoreMatchers.equalTo;
31 import static org.junit.Assert.assertEquals;
32 import static org.junit.Assert.assertFalse;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.mockito.ArgumentMatchers.any;
37 import static org.mockito.ArgumentMatchers.anyList;
38 import static org.mockito.ArgumentMatchers.anyObject;
39 import static org.mockito.ArgumentMatchers.anyString;
40 import static org.mockito.ArgumentMatchers.eq;
41 import static org.mockito.ArgumentMatchers.isA;
42 import static org.mockito.Mockito.doReturn;
43 import static org.mockito.Mockito.doThrow;
44 import static org.mockito.Mockito.when;
45 import com.fasterxml.jackson.databind.DeserializationFeature;
46 import com.fasterxml.jackson.databind.ObjectMapper;
47 import java.io.IOException;
48 import java.nio.file.Files;
49 import java.nio.file.Paths;
50 import java.util.ArrayList;
51 import java.util.Arrays;
52 import java.util.List;
54 import java.util.Optional;
56 import java.util.UUID;
57 import java.util.stream.Collectors;
58 import org.camunda.bpm.engine.delegate.BpmnError;
59 import org.camunda.bpm.engine.delegate.DelegateExecution;
60 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
61 import org.junit.Before;
62 import org.junit.Ignore;
63 import org.junit.Rule;
64 import org.junit.Test;
65 import org.junit.rules.ExpectedException;
66 import org.mockito.InjectMocks;
67 import org.mockito.Mock;
68 import org.mockito.Mockito;
69 import org.mockito.Spy;
70 import org.onap.aai.domain.yang.GenericVnf;
71 import org.onap.aai.domain.yang.Relationship;
72 import org.onap.aai.domain.yang.RelationshipList;
73 import org.onap.aai.domain.yang.ServiceInstance;
74 import org.onap.aai.domain.yang.VfModule;
75 import org.onap.aai.domain.yang.VolumeGroup;
76 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
77 import org.onap.aaiclient.client.aai.entities.Relationships;
78 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
79 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
80 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
81 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
82 import org.onap.so.bpmn.BaseTaskTest;
83 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
84 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
85 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
86 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
87 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
88 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
89 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
90 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
91 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
92 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
93 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
94 import org.onap.so.db.catalog.beans.CollectionResource;
95 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
96 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
97 import org.onap.so.db.catalog.beans.ConfigurationResource;
98 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
99 import org.onap.so.db.catalog.beans.CvnfcCustomization;
100 import org.onap.so.db.catalog.beans.HeatEnvironment;
101 import org.onap.so.db.catalog.beans.HeatTemplate;
102 import org.onap.so.db.catalog.beans.InstanceGroup;
103 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
104 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
105 import org.onap.so.db.catalog.beans.Service;
106 import org.onap.so.db.catalog.beans.VfModuleCustomization;
107 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
108 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
109 import org.onap.so.serviceinstancebeans.RequestDetails;
110 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
111 import org.springframework.core.env.Environment;
113 public class WorkflowActionTest extends BaseTaskTest {
115 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
116 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
117 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
118 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
119 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
120 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
121 "VfModuleReplaceRebuildVolumeGroups.json";
122 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
123 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
124 private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
125 private static final String MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE =
126 "Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
129 protected Environment environment;
131 protected UserParamsServiceTraversal userParamsServiceTraversal;
134 private AaiResourceIdValidator aaiResourceIdValidator;
136 protected WorkflowAction workflowAction;
138 private DelegateExecution execution;
142 protected WorkflowAction SPY_workflowAction;
145 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
149 protected VnfEBBLoader vnfEBBLoaderSpy;
153 protected ServiceEBBLoader serviceEBBLoader;
156 public ExpectedException thrown = ExpectedException.none();
158 private String RESOURCE_PATH = "src/test/resources/__files/";
160 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
161 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
162 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
163 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
164 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
165 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
166 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
167 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
168 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
169 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
170 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
171 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
172 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
173 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
176 public void before() throws Exception {
177 execution = new DelegateExecutionFake();
178 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
179 servInstance.setServiceInstanceId("TEST");
180 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
181 workflowAction.setBbInputSetupUtils(bbSetupUtils);
182 workflowAction.setBbInputSetup(bbInputSetup);
190 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
191 String gAction = "createInstance";
192 String resource = "Network";
193 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
194 initExecution(gAction, bpmnRequest, true);
195 execution.setVariable("requestUri", "v6/networks/123");
197 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
198 List<OrchestrationFlow> orchFlows =
199 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
200 northBoundRequest.setOrchestrationFlowList(orchFlows);
202 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
203 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
205 workflowAction.selectExecutionList(execution);
206 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
207 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
211 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
212 String gAction = "deleteInstance";
213 String resource = "Network";
214 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
215 initExecution(gAction, bpmnRequest, true);
216 execution.setVariable("requestUri", "v6/networks/123");
218 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
219 List<OrchestrationFlow> orchFlows =
220 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
221 northBoundRequest.setOrchestrationFlowList(orchFlows);
223 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
224 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
226 workflowAction.selectExecutionList(execution);
227 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
228 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
232 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
233 String gAction = "createInstance";
234 String resource = "Service";
235 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
236 initExecution(gAction, bpmnRequest, true);
237 execution.setVariable("requestUri", "v6/serviceInstances/123");
240 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
241 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
242 northBoundRequest.setOrchestrationFlowList(orchFlows);
244 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
245 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
246 workflowAction.selectExecutionList(execution);
247 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
248 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
252 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
253 String gAction = "createInstance";
254 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
255 initExecution(gAction, bpmnRequest, true);
256 execution.setVariable("requestUri", "v6/serviceInstances");
258 doThrow(new DuplicateNameException(
259 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
260 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
261 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
263 SPY_workflowAction.selectExecutionList(execution);
264 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
265 "Exception while setting execution list. serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique.");
267 // verify default values are present in failure case
268 assertEquals(true, execution.getVariable("isTopLevelFlow"));
269 assertEquals(false, execution.getVariable("sentSyncResponse"));
273 * SERVICE MACRO TESTS
276 public void selectExecutionListServiceMacroAssignTest() throws Exception {
277 String gAction = "assignInstance";
278 String resource = "Service";
279 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
280 initExecution(gAction, bpmnRequest, false);
281 execution.setVariable("requestUri", "v6/serviceInstances/123");
283 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
284 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
285 "AssignVolumeGroupBB", "AssignVfModuleBB");
286 northBoundRequest.setOrchestrationFlowList(orchFlows);
288 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
289 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
290 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
291 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
292 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
293 HeatTemplate volumeHeatTemplate = new HeatTemplate();
294 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
295 vfModuleCustomization.setVfModule(vfModule);
297 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
298 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
299 HeatEnvironment heatEnvironment = new HeatEnvironment();
300 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
301 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
302 HeatTemplate moduleHeatTemplate = new HeatTemplate();
303 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
304 vfModuleCustomization2.setVfModule(vfModule2);
306 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
307 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
309 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
310 .thenReturn(prepareListWithResources(false, false));
311 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
312 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
313 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
314 .thenReturn(vfModuleCustomization);
315 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
316 .thenReturn(vfModuleCustomization2);
317 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
318 .thenReturn(vfModuleCustomization3);
320 workflowAction.selectExecutionList(execution);
321 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
322 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
323 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
327 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
328 String gAction = "assignInstance";
329 String resource = "Service";
330 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
331 initExecution(gAction, bpmnRequest, false);
332 execution.setVariable("requestUri", "v6/serviceInstances/123");
334 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
335 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
336 "AssignVolumeGroupBB", "AssignVfModuleBB");
337 northBoundRequest.setOrchestrationFlowList(orchFlows);
339 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
340 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
341 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
342 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
343 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
344 HeatTemplate volumeHeatTemplate = new HeatTemplate();
345 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
346 vfModuleCustomization.setVfModule(vfModule);
348 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
349 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
350 HeatEnvironment heatEnvironment = new HeatEnvironment();
351 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
352 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
353 HeatTemplate moduleHeatTemplate = new HeatTemplate();
354 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
355 vfModuleCustomization2.setVfModule(vfModule2);
357 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
358 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
360 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
361 .thenReturn(prepareListWithResources(false, false));
362 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
363 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
364 false, "att-aic")).thenReturn(northBoundRequest);
365 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
366 .thenReturn(vfModuleCustomization);
367 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
368 .thenReturn(vfModuleCustomization2);
369 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
370 .thenReturn(vfModuleCustomization3);
371 workflowAction.selectExecutionList(execution);
372 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
373 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
374 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
378 public void selectExecutionListServiceMacroActivateTest() throws Exception {
379 String gAction = "activateInstance";
380 String resource = "Service";
381 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
382 initExecution(gAction, bpmnRequest, false);
383 execution.setVariable("requestUri", "v6/serviceInstances/si0");
385 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
386 List<OrchestrationFlow> orchFlows =
387 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
388 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
389 northBoundRequest.setOrchestrationFlowList(orchFlows);
391 ServiceInstance serviceInstanceAAI = new ServiceInstance();
392 serviceInstanceAAI.setServiceInstanceId("si0");
393 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
394 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
395 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
396 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
397 vnf.setVnfId("vnf0");
399 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
400 vnf.getVfModules().add(vfModule);
401 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
402 vnf.getVfModules().add(vfModule2);
404 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
405 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
406 volumeGroup.setVolumeGroupId("volumeGroup0");
407 vnf.getVolumeGroups().add(volumeGroup);
409 serviceInstanceMSO.getVnfs().add(vnf);
411 VfModule aaiVfModule = new VfModule();
412 aaiVfModule.setIsBaseVfModule(false);
414 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
415 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
416 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
417 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
418 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
419 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
420 workflowAction.selectExecutionList(execution);
421 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
422 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
423 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
424 "ActivateServiceInstanceBB");
425 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
426 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
427 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
428 assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
429 assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
430 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
431 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
432 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
436 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
437 String gAction = "deactivateInstance";
438 String resource = "Service";
439 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
440 initExecution(gAction, bpmnRequest, false);
441 execution.setVariable("requestUri", "v6/serviceInstances/123");
443 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
444 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
445 northBoundRequest.setOrchestrationFlowList(orchFlows);
447 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
448 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
449 workflowAction.selectExecutionList(execution);
450 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
451 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
455 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
456 String gAction = "createInstance";
457 String resource = "Service";
458 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
459 initExecution(gAction, bpmnRequest, false);
460 execution.setVariable("requestUri", "v6/serviceInstances/123");
462 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
463 northBoundRequest.setIsToplevelflow(true);
464 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
465 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
466 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
467 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
468 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
469 northBoundRequest.setOrchestrationFlowList(orchFlows);
471 Service service = new Service();
472 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
473 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
474 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
475 workflowAction.selectExecutionList(execution);
476 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
477 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
481 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
482 String gAction = "createInstance";
483 String resource = "Service";
484 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
485 initExecution(gAction, bpmnRequest, false);
486 execution.setVariable("requestUri", "v6/serviceInstances/123");
488 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
489 northBoundRequest.setIsToplevelflow(true);
490 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
491 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
492 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
493 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
494 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
495 northBoundRequest.setOrchestrationFlowList(orchFlows);
497 Service service = new Service();
498 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
499 networkCustomization.setModelCustomizationUUID("1234");
500 service.getNetworkCustomizations().add(networkCustomization);
501 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
502 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
503 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
505 workflowAction.selectExecutionList(execution);
506 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
507 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
508 "ActivateNetworkBB", "ActivateServiceInstanceBB");
512 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
513 String gAction = "createInstance";
514 String resource = "Service";
515 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
516 initExecution(gAction, bpmnRequest, false);
517 execution.setVariable("requestUri", "v6/serviceInstances/123");
519 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
520 northBoundRequest.setIsToplevelflow(true);
521 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
522 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
523 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
524 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
525 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
526 northBoundRequest.setOrchestrationFlowList(orchFlows);
528 Service service = new Service();
529 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
530 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
531 networkCust.setModelCustomizationUUID("123");
532 networkCustomizations.add(networkCust);
533 service.setNetworkCustomizations(networkCustomizations);
534 NetworkCollectionResourceCustomization collectionResourceCustomization =
535 new NetworkCollectionResourceCustomization();
536 collectionResourceCustomization.setModelCustomizationUUID("123");
538 CollectionResource collectionResource = new CollectionResource();
539 collectionResource.setToscaNodeType("NetworkCollection");
540 InstanceGroup instanceGroup = new InstanceGroup();
541 instanceGroup.setToscaNodeType("NetworkCollectionResource");
542 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
543 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
544 new CollectionNetworkResourceCustomization();
545 collectionNetworkResourceCust.setModelCustomizationUUID("123");
546 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
547 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
548 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
549 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
550 new CollectionResourceInstanceGroupCustomization();
551 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
552 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
553 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
554 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
555 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
556 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
557 collectionResource.setInstanceGroup(instanceGroup);
558 collectionResourceCustomization.setCollectionResource(collectionResource);;
559 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
560 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
561 doReturn(collectionResourceCustomization).when(catalogDbClient)
562 .getNetworkCollectionResourceCustomizationByID("123");
563 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
564 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
565 workflowAction.selectExecutionList(execution);
566 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
567 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
568 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
569 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
570 "ActivateServiceInstanceBB");
571 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
572 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
573 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
574 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
575 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
577 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
580 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
581 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
582 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
583 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
584 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
586 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
589 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
590 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
591 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
592 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
593 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
595 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
601 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
602 String gAction = "createInstance";
603 String resource = "Service";
604 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
605 initExecution(gAction, bpmnRequest, false);
606 execution.setVariable("requestUri", "v6/serviceInstances/123");
608 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
609 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
610 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
611 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
612 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
613 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
614 northBoundRequest.setOrchestrationFlowList(orchFlows);
616 Service service = new Service();
617 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
619 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
620 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
621 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
622 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
623 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
624 HeatTemplate volumeHeatTemplate = new HeatTemplate();
625 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
626 vfModuleCustomization.setVfModule(vfModule);
628 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
629 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
630 HeatEnvironment heatEnvironment = new HeatEnvironment();
631 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
632 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
633 HeatTemplate moduleHeatTemplate = new HeatTemplate();
634 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
635 vfModuleCustomization2.setVfModule(vfModule2);
637 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
638 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
640 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
641 .thenReturn(prepareListWithResources(false, false));
642 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
643 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
644 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
645 .thenReturn(vfModuleCustomization);
646 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
647 .thenReturn(vfModuleCustomization2);
648 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
649 .thenReturn(vfModuleCustomization3);
650 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
651 workflowAction.selectExecutionList(execution);
652 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
653 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
654 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
655 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
656 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
657 "ActivateServiceInstanceBB");
659 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
660 int randomUUIDLength = UUID.randomUUID().toString().length();
661 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
662 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
663 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
664 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
665 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
666 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
667 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
668 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
669 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
670 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
671 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
672 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
673 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
674 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
675 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
676 assertEquals(true, execution.getVariable("homing"));
680 public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
681 String gAction = "createInstance";
682 String resource = "Service";
683 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
684 initExecution(gAction, bpmnRequest, false);
685 execution.setVariable("requestUri", "v6/serviceInstances/123");
687 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
688 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
689 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
690 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
691 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
692 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
693 "ActivateServiceInstanceBB");
694 northBoundRequest.setOrchestrationFlowList(orchFlows);
696 Service service = new Service();
697 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
699 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
700 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
701 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
702 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
703 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
704 HeatTemplate volumeHeatTemplate = new HeatTemplate();
705 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
706 vfModuleCustomization.setVfModule(vfModule);
708 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
709 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
710 HeatEnvironment heatEnvironment = new HeatEnvironment();
711 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
712 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
713 HeatTemplate moduleHeatTemplate = new HeatTemplate();
714 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
715 vfModuleCustomization2.setVfModule(vfModule2);
717 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
718 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
720 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
721 .thenReturn(prepareListWithResources(true, true));
722 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
723 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
724 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
725 .thenReturn(vfModuleCustomization);
726 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
727 .thenReturn(vfModuleCustomization2);
728 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
729 .thenReturn(vfModuleCustomization3);
730 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
731 workflowAction.selectExecutionList(execution);
732 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
733 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
734 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
735 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
736 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
737 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
739 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
740 int randomUUIDLength = UUID.randomUUID().toString().length();
741 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
742 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
743 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
744 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
745 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
746 assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
747 assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
748 assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
749 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
750 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
751 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
752 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
753 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
754 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
755 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
756 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
757 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
758 assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
759 assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
760 assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
761 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
762 assertEquals(true, execution.getVariable("homing"));
766 public void selectExecutionListServiceMacroCreateWithMultipleSameModelVnfAndVfModules() throws Exception {
767 String gAction = "createInstance";
768 String resource = "Service";
769 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE);
770 initExecution(gAction, bpmnRequest, false);
771 execution.setVariable("requestUri", "v7/serviceInstances");
772 execution.setVariable("serviceInstanceId", UUID.randomUUID().toString());
774 // Service-Macro-Create
775 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
776 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
777 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "ControllerExecutionBB",
778 "AssignPnfBB", "WaitForPnfReadyBB", "ControllerExecutionBB", "ControllerExecutionBB", "ActivatePnfBB",
779 "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
780 "CreateVfModuleBB", "ActivateVfModuleBB", "ControllerExecutionBB", "ActivateVnfBB",
781 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
782 orchFlows.get(6).setBpmnAction("config-assign");
783 orchFlows.get(6).setBpmnScope("vnf");
784 orchFlows.get(9).setBpmnAction("config-assign");
785 orchFlows.get(9).setBpmnScope("pnf");
786 orchFlows.get(10).setBpmnAction("config-deploy");
787 orchFlows.get(10).setBpmnScope("pnf");
788 orchFlows.get(18).setBpmnAction("config-deploy");
789 orchFlows.get(18).setBpmnScope("vnf");
790 northBoundRequest.setOrchestrationFlowList(orchFlows);
792 Service service = new Service();
793 service.setModelUUID("f2444885-3c76-4ddc-8668-7741c0631495");
795 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
796 vfModuleCustomization.setModelCustomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0");
797 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
798 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
799 vfModule.setVolumeHeatTemplate(new HeatTemplate());
800 vfModuleCustomization.setVfModule(vfModule);
802 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
803 vfModuleCustomization2.setModelCustomizationUUID("83677d89-428a-407b-b4ec-738e68275d84");
804 vfModuleCustomization2.setHeatEnvironment(new HeatEnvironment());
805 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
806 vfModule2.setModuleHeatTemplate(new HeatTemplate());
807 vfModuleCustomization2.setVfModule(vfModule2);
809 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
810 false, "DEFAULT")).thenReturn(northBoundRequest);
811 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0"))
812 .thenReturn(vfModuleCustomization);
813 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("83677d89-428a-407b-b4ec-738e68275d84"))
814 .thenReturn(vfModuleCustomization2);
815 when(catalogDbClient.getServiceByID("f2444885-3c76-4ddc-8668-7741c0631495")).thenReturn(service);
818 Resource serviceResource =
819 new Resource(WorkflowType.SERVICE, "f2444885-3c76-4ddc-8668-7741c0631495", false, null);
820 Resource vnfResource1 =
821 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
822 vnfResource1.setInstanceName("vnf-instanceName-1");
823 Resource vfmResource1 =
824 new Resource(WorkflowType.VFMODULE, "3bd19000-6d21-49f1-9eb3-ea76a6eac5e0", false, vnfResource1);
825 vfmResource1.setInstanceName("demo-network-1");
826 Resource vfmResource2 =
827 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource1);
828 vfmResource2.setInstanceName("demo-1");
829 Resource vnfResource2 =
830 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
831 vnfResource2.setInstanceName("vnf-instanceName-2");
832 Resource vfmResource3 =
833 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
834 vfmResource3.setInstanceName("demo-2");
835 Resource vfmResource4 =
836 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
837 vfmResource4.setInstanceName("demo-3");
839 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), any()))
840 .thenReturn(Arrays.asList(serviceResource, vnfResource1, vnfResource2, vfmResource1, vfmResource2,
841 vfmResource3, vfmResource4));
843 workflowAction.selectExecutionList(execution);
845 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
847 Map<String, List<ExecuteBuildingBlock>> flowNamesToEbbList =
848 ebbs.stream().collect(Collectors.groupingBy(e -> e.getBuildingBlock().getBpmnFlowName()));
850 assertEquals(1, flowNamesToEbbList.get("AssignServiceInstanceBB").size());
851 assertEquals(2, flowNamesToEbbList.get("AssignVnfBB").size());
852 assertEquals(4, flowNamesToEbbList.get("AssignVfModuleBB").size());
853 assertEquals(4, flowNamesToEbbList.get("ControllerExecutionBB").size());
854 assertEquals(4, flowNamesToEbbList.get("CreateVfModuleBB").size());
855 assertEquals(4, flowNamesToEbbList.get("ActivateVfModuleBB").size());
856 assertEquals(2, flowNamesToEbbList.get("ActivateVnfBB").size());
857 assertEquals(1, flowNamesToEbbList.get("ActivateServiceInstanceBB").size());
859 String vnfInstanceId1 = flowNamesToEbbList.get("AssignVnfBB").get(0).getWorkflowResourceIds().getVnfId();
860 String vnfInstanceId2 = flowNamesToEbbList.get("AssignVnfBB").get(1).getWorkflowResourceIds().getVnfId();
862 // should be 3 = 1 AssignVfModuleBB + 1 CreateVfModuleBB + 1 ActivateVfModuleBB
863 boolean allEbbsForVfModule1HaveCorrectParentVnfId =
864 3 == ebbs.stream().map(ExecuteBuildingBlock::getWorkflowResourceIds)
865 .filter(w -> "demo-network-1".equals(w.getVfModuleInstanceName())
866 && vnfInstanceId1.equals(w.getVnfId()))
868 boolean allEbbsForVfModule2HaveCorrectParentVnfId = 3 == ebbs.stream()
869 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
870 .filter(w -> "demo-1".equals(w.getVfModuleInstanceName()) && vnfInstanceId1.equals(w.getVnfId()))
872 boolean allEbbsForVfModule3HaveCorrectParentVnfId = 3 == ebbs.stream()
873 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
874 .filter(w -> "demo-2".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
876 boolean allEbbsForVfModule4HaveCorrectParentVnfId = 3 == ebbs.stream()
877 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
878 .filter(w -> "demo-3".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
880 assertTrue(allEbbsForVfModule1HaveCorrectParentVnfId);
881 assertTrue(allEbbsForVfModule2HaveCorrectParentVnfId);
882 assertTrue(allEbbsForVfModule3HaveCorrectParentVnfId);
883 assertTrue(allEbbsForVfModule4HaveCorrectParentVnfId);
885 boolean controllerExecutionBBsforVnf1HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
886 .filter(e -> vnfInstanceId1.equals(e.getWorkflowResourceIds().getVnfId()))
887 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
888 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
889 assertTrue(controllerExecutionBBsforVnf1HaveCorrectVnfId);
891 boolean controllerExecutionBBsforVnf2HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
892 .filter(e -> vnfInstanceId2.equals(e.getWorkflowResourceIds().getVnfId()))
893 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
894 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
895 assertTrue(controllerExecutionBBsforVnf2HaveCorrectVnfId);
899 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
900 String gAction = "deleteInstance";
901 String resource = "Service";
902 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
903 initExecution(gAction, bpmnRequest, false);
904 execution.setVariable("requestUri", "v6/serviceInstances/123");
906 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
907 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
908 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
909 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
910 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
911 "UnassignServiceInstanceBB");
912 northBoundRequest.setOrchestrationFlowList(orchFlows);
914 ServiceInstance serviceInstanceAAI = new ServiceInstance();
915 serviceInstanceAAI.setServiceInstanceId("aaisi123");
916 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
917 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
918 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
919 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
920 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
921 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
922 vnf.setVnfId("vnfId123");
923 pnf.setPnfId("pnfId123");
925 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
926 vnf.getVfModules().add(vfModule);
927 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
928 vnf.getVfModules().add(vfModule2);
930 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
931 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
932 volumeGroup.setVolumeGroupId("vg123");
933 vnf.getVolumeGroups().add(volumeGroup);
935 serviceInstanceMSO.getVnfs().add(vnf);
936 serviceInstanceMSO.getPnfs().add(pnf);
938 VfModule aaiVfModule = new VfModule();
939 aaiVfModule.setIsBaseVfModule(false);
941 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
942 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
943 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
944 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
945 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
946 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
947 workflowAction.selectExecutionList(execution);
948 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
949 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
950 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
951 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
952 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
956 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
957 String gAction = "deleteInstance";
958 String resource = "Service";
959 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
960 initExecution(gAction, bpmnRequest, false);
961 execution.setVariable("requestUri", "v6/serviceInstances/123");
963 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
964 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
965 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
966 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
967 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
968 "UnassignServiceInstanceBB");
969 northBoundRequest.setOrchestrationFlowList(orchFlows);
971 ServiceInstance serviceInstanceAAI = new ServiceInstance();
972 serviceInstanceAAI.setServiceInstanceId("aaisi123");
973 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
974 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
975 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
976 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
977 pnf.setPnfId("pnfId123");
979 serviceInstanceMSO.getPnfs().add(pnf);
981 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
982 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
983 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
984 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
985 workflowAction.selectExecutionList(execution);
986 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
987 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
991 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
992 String gAction = "unassignInstance";
993 String resource = "Service";
994 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
995 initExecution(gAction, bpmnRequest, false);
996 execution.setVariable("requestUri", "v6/serviceInstances/123");
998 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
999 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
1000 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1001 northBoundRequest.setOrchestrationFlowList(orchFlows);
1003 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1004 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1005 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1006 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1007 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1008 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1009 vnf.setVnfId("vnfId123");
1011 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
1012 vnf.getVfModules().add(vfModule);
1013 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
1014 vnf.getVfModules().add(vfModule2);
1016 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
1017 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
1018 volumeGroup.setVolumeGroupId("vg123");
1019 vnf.getVolumeGroups().add(volumeGroup);
1021 serviceInstanceMSO.getVnfs().add(vnf);
1023 VfModule aaiVfModule = new VfModule();
1024 aaiVfModule.setIsBaseVfModule(false);
1026 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
1027 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1028 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1029 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
1030 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1031 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1032 workflowAction.selectExecutionList(execution);
1033 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1034 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
1035 "UnassignVnfBB", "UnassignServiceInstanceBB");
1039 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
1040 String gAction = "deleteInstance";
1041 String resource = "Service";
1042 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
1043 initExecution(gAction, bpmnRequest, false);
1044 execution.setVariable("requestUri", "v6/serviceInstances/123");
1046 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1047 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1048 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
1049 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
1050 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1051 northBoundRequest.setOrchestrationFlowList(orchFlows);
1053 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1054 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1055 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1056 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1058 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
1059 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1060 network.setNetworkId("123");
1061 serviceInstanceMSO.getNetworks().add(network);
1062 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
1063 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1064 network2.setNetworkId("321");
1065 serviceInstanceMSO.getNetworks().add(network2);
1067 Collection collection = new Collection();
1068 serviceInstanceMSO.setCollection(collection);
1070 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1071 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1072 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1073 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1074 workflowAction.selectExecutionList(execution);
1075 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1076 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1077 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
1078 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
1082 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
1083 String gAction = "recreateInstance";
1084 String resource = "Vnf";
1085 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1086 initExecution(gAction, bpmnRequest, false);
1087 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
1088 execution.setVariable("serviceInstanceId", "123");
1089 execution.setVariable("vnfId", "1234");
1091 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1092 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1093 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1094 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1095 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1096 "AAIUnsetVnfInMaintBB");
1097 northBoundRequest.setOrchestrationFlowList(orchFlows);
1099 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1100 serviceInstanceAAI.setServiceInstanceId("123");
1101 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1102 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1103 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1104 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1105 vnf.setVnfId("1234");
1107 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1108 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1109 vfModule.setVfModuleId("vfModule1");
1110 vnf.getVfModules().add(vfModule);
1111 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1112 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1113 vfModule2.setVfModuleId("vfModule2");
1114 vnf.getVfModules().add(vfModule2);
1116 serviceInstanceMSO.getVnfs().add(vnf);
1118 org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
1119 aaiVfModule.setIsBaseVfModule(false);
1121 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
1122 doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1123 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1124 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1125 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1126 false, "cloud-owner")).thenReturn(northBoundRequest);
1127 workflowAction.selectExecutionList(execution);
1128 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1129 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1130 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
1131 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1132 "AAIUnsetVnfInMaintBB");
1136 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
1137 String gAction = "replaceInstance";
1138 String resource = "Vnf";
1139 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1140 initExecution(gAction, bpmnRequest, false);
1141 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
1142 execution.setVariable("serviceInstanceId", "123");
1143 execution.setVariable("vnfId", "1234");
1145 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1146 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1147 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1148 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1149 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1150 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1151 "AAIUnsetVnfInMaintBB");
1152 northBoundRequest.setOrchestrationFlowList(orchFlows);
1154 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1155 serviceInstanceAAI.setServiceInstanceId("123");
1156 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1157 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1158 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1159 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1160 vnf.setVnfId("1234");
1161 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1162 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1163 vfModule.setVfModuleId("vfModule1");
1164 vnf.getVfModules().add(vfModule);
1165 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1166 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1167 vfModule2.setVfModuleId("vfModule2");
1168 vnf.getVfModules().add(vfModule2);
1169 serviceInstanceMSO.getVnfs().add(vnf);
1170 VfModule vfModuleAAI1 = new VfModule();
1171 vfModuleAAI1.setIsBaseVfModule(false);
1172 VfModule vfModuleAAI2 = new VfModule();
1173 vfModuleAAI2.setIsBaseVfModule(false);
1174 vfModuleAAI2.setVfModuleId("vfModule2");
1175 RelationshipList relationshipList = new RelationshipList();
1176 Relationship relationship = new Relationship();
1177 relationshipList.getRelationship().add(relationship);
1178 vfModuleAAI2.setRelationshipList(relationshipList);
1179 Relationships relationships = new Relationships("abc");
1180 Configuration config = new Configuration();
1181 config.setConfigurationId("configId");
1182 Optional<Configuration> configOp = Optional.of(config);
1183 Optional<Relationships> relationshipsOp = Optional.of(relationships);
1185 doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1186 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
1187 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
1188 doReturn(vfModuleAAI1).when(bbSetupUtils).getAAIVfModule("1234", "vfModule1");
1189 doReturn(vfModuleAAI2).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
1190 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1191 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1192 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1193 false, "cloud-owner")).thenReturn(northBoundRequest);
1194 workflowAction.selectExecutionList(execution);
1195 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1196 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1197 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1198 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
1199 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1200 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1201 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1202 "AAIUnsetVnfInMaintBB");
1203 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
1204 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
1210 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
1211 String gAction = "createInstance";
1212 String resource = "NetworkCollection";
1213 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1214 initExecution(gAction, bpmnRequest, false);
1215 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1217 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1218 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
1219 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
1220 northBoundRequest.setOrchestrationFlowList(orchFlows);
1222 Service service = new Service();
1223 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1224 CollectionResource collectionResource = new CollectionResource();
1225 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1226 collectionResourceCustomization.setCollectionResource(collectionResource);
1227 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1229 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1230 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1231 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1232 workflowAction.selectExecutionList(execution);
1233 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1234 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
1235 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
1236 "ActivateNetworkCollectionBB");
1241 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
1242 String gAction = "deleteInstance";
1243 String resource = "NetworkCollection";
1244 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1245 initExecution(gAction, bpmnRequest, false);
1246 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1248 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1249 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1250 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1251 northBoundRequest.setOrchestrationFlowList(orchFlows);
1253 Service service = new Service();
1254 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1255 CollectionResource collectionResource = new CollectionResource();
1256 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1257 collectionResourceCustomization.setCollectionResource(collectionResource);
1258 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1260 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1261 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1262 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1263 workflowAction.selectExecutionList(execution);
1264 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1265 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1266 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1267 "DeleteNetworkCollectionBB");
1271 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1272 String gAction = "createInstance";
1273 String resource = "VfModule";
1274 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1275 initExecution(gAction, bpmnRequest, true);
1276 execution.setVariable("requestUri",
1277 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1279 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1280 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1281 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1282 northBoundRequest.setOrchestrationFlowList(orchFlows);
1284 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1285 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1286 workflowAction.selectExecutionList(execution);
1287 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1288 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1292 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1293 String gAction = "createInstance";
1294 String resource = "VfModule";
1295 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1296 initExecution(gAction, bpmnRequest, true);
1297 execution.setVariable("requestUri",
1298 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1300 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1301 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1302 "AddFabricConfigurationBB");
1303 northBoundRequest.setOrchestrationFlowList(orchFlows);
1305 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1306 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1307 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1308 new CvnfcConfigurationCustomization();
1309 ConfigurationResource configurationResource = new ConfigurationResource();
1310 configurationResource.setToscaNodeType("FabricConfiguration");
1311 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1312 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1313 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1314 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1315 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1316 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1317 cvnfcCustomization.setDescription("description");
1318 cvnfcCustomizations.add(cvnfcCustomization);
1320 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1321 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1322 new CvnfcConfigurationCustomization();
1323 ConfigurationResource configurationResource2 = new ConfigurationResource();
1324 configurationResource2.setToscaNodeType("FabricConfiguration");
1325 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1326 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1327 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1328 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1329 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1330 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1331 cvnfcCustomization2.setDescription("description2");
1332 cvnfcCustomizations.add(cvnfcCustomization2);
1334 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1335 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1337 workflowAction.selectExecutionList(execution);
1338 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1339 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1345 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1346 String gAction = "replaceInstance";
1347 String resource = "VfModule";
1348 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1349 initExecution(gAction, bpmnRequest, true);
1350 execution.setVariable("requestUri",
1351 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1353 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1354 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1355 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1356 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1357 workflowAction.selectExecutionList(execution);
1358 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1360 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1361 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1362 "ChangeModelServiceInstanceBB");
1366 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1367 String gAction = "replaceInstanceRetainAssignments";
1368 String resource = "VfModule";
1369 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1370 initExecution(gAction, bpmnRequest, true);
1371 execution.setVariable("requestUri",
1372 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1374 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1375 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1376 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1377 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1378 workflowAction.selectExecutionList(execution);
1379 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1381 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1382 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1386 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1387 String gAction = "replaceInstance";
1388 String resource = "VfModule";
1389 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1390 initExecution(gAction, bpmnRequest, true);
1391 execution.setVariable("requestUri",
1392 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1393 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1394 execution.setVariable("vfModuleId", "1234");
1396 VolumeGroup volumeGroup = new VolumeGroup();
1397 volumeGroup.setVolumeGroupId("volumeGroupId");
1398 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1399 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1400 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1401 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1402 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1403 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1404 workflowAction.selectExecutionList(execution);
1405 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1407 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1408 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1409 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1413 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1415 String gAction = "replaceInstanceRetainAssignments";
1416 String resource = "VfModule";
1417 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1418 initExecution(gAction, bpmnRequest, true);
1419 execution.setVariable("requestUri",
1420 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1421 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1422 execution.setVariable("vfModuleId", "1234");
1424 VolumeGroup volumeGroup = new VolumeGroup();
1425 volumeGroup.setVolumeGroupId("volumeGroupId");
1426 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1427 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1429 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1430 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1431 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1432 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1433 workflowAction.selectExecutionList(execution);
1434 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1436 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1437 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1438 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1442 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1443 String gAction = "replaceInstance";
1444 String resource = "VfModule";
1445 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1446 initExecution(gAction, bpmnRequest, true);
1447 execution.setVariable("requestUri",
1448 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1449 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1450 execution.setVariable("vfModuleId", "1234");
1452 VolumeGroup volumeGroup = new VolumeGroup();
1453 volumeGroup.setVolumeGroupId("volumeGroupId");
1454 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1455 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1457 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1458 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1459 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1460 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1461 vfModuleCustomization.setVfModule(vfModule);
1462 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1463 .thenReturn(vfModuleCustomization);
1465 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1466 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1467 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1468 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1469 workflowAction.selectExecutionList(execution);
1470 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1472 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1473 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1474 "ChangeModelServiceInstanceBB");
1478 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1479 String gAction = "replaceInstance";
1480 String resource = "VfModule";
1481 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1482 initExecution(gAction, bpmnRequest, true);
1483 execution.setVariable("requestUri",
1484 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1485 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1486 execution.setVariable("vfModuleId", "1234");
1488 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1489 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1490 vnf.setModelCustomizationId("modelCustomizationId");
1491 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1493 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1494 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1495 vfModuleFromAAI.setVfModuleId("1234");
1496 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1498 VolumeGroup volumeGroup = new VolumeGroup();
1499 volumeGroup.setVolumeGroupId("volumeGroupId");
1500 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1501 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1503 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1504 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1505 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1506 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1507 vfModuleCustomization.setVfModule(vfModule);
1508 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1509 .thenReturn(vfModuleCustomization);
1510 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1511 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1512 vnfc.setModelInvariantId("modelInvariantId");
1513 vnfc.setVnfcName("testVnfcName");
1515 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1517 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1518 configuration.setConfigurationId("configurationId");
1519 configuration.setModelCustomizationId("modelCustimizationId");
1520 configuration.setConfigurationName("testConfigurationName");
1521 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1523 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1524 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1525 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1526 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1527 SPY_workflowAction.selectExecutionList(execution);
1528 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1530 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1531 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1532 "ChangeModelServiceInstanceBB");
1536 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1537 String gAction = "replaceInstanceRetainAssignments";
1538 String resource = "VfModule";
1539 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1540 initExecution(gAction, bpmnRequest, true);
1541 execution.setVariable("requestUri",
1542 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1543 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1544 execution.setVariable("vfModuleId", "1234");
1546 VolumeGroup volumeGroup = new VolumeGroup();
1547 volumeGroup.setVolumeGroupId("volumeGroupId");
1548 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1549 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1551 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1552 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1553 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1554 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1555 vfModuleCustomization.setVfModule(vfModule);
1556 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1557 .thenReturn(vfModuleCustomization);
1559 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1560 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1561 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1562 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1563 workflowAction.selectExecutionList(execution);
1564 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1566 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1567 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1571 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1572 String gAction = "replaceInstance";
1573 String resource = "VfModule";
1574 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1575 initExecution(gAction, bpmnRequest, true);
1576 execution.setVariable("requestUri",
1577 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1578 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1579 execution.setVariable("vfModuleId", "1234");
1581 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1582 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1583 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1584 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1585 vfModuleCustomization.setVfModule(vfModule);
1586 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1587 .thenReturn(vfModuleCustomization);
1589 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1590 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1591 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1592 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1593 workflowAction.selectExecutionList(execution);
1594 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1596 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1597 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1598 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1602 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1604 String gAction = "replaceInstanceRetainAssignments";
1605 String resource = "VfModule";
1606 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1607 initExecution(gAction, bpmnRequest, true);
1608 execution.setVariable("requestUri",
1609 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1610 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1611 execution.setVariable("vfModuleId", "1234");
1613 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1614 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1615 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1616 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1617 vfModuleCustomization.setVfModule(vfModule);
1618 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1619 .thenReturn(vfModuleCustomization);
1621 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1622 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1623 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1624 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1625 workflowAction.selectExecutionList(execution);
1626 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1628 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1629 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1630 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1634 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1635 String gAction = "replaceInstance";
1636 String resource = "VfModule";
1637 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1638 initExecution(gAction, bpmnRequest, true);
1639 execution.setVariable("requestUri",
1640 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1641 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1642 execution.setVariable("vfModuleId", "1234");
1644 VolumeGroup volumeGroup = new VolumeGroup();
1645 volumeGroup.setVolumeGroupId("volumeGroupId");
1646 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1647 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1649 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1650 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1651 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1652 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1653 vfModuleCustomization.setVfModule(vfModule);
1654 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1655 .thenReturn(vfModuleCustomization);
1657 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1658 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1659 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1660 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1661 workflowAction.selectExecutionList(execution);
1662 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1664 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1665 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1666 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1667 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1671 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1672 String gAction = "replaceInstanceRetainAssignments";
1673 String resource = "VfModule";
1674 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1675 initExecution(gAction, bpmnRequest, true);
1676 execution.setVariable("requestUri",
1677 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1678 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1679 execution.setVariable("vfModuleId", "1234");
1681 VolumeGroup volumeGroup = new VolumeGroup();
1682 volumeGroup.setVolumeGroupId("volumeGroupId");
1683 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1684 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1686 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1687 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1688 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1689 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1690 vfModuleCustomization.setVfModule(vfModule);
1691 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1692 .thenReturn(vfModuleCustomization);
1694 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1695 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1696 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1697 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1698 workflowAction.selectExecutionList(execution);
1699 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1701 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1702 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1703 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1704 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1708 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1709 String gAction = "deleteInstance";
1710 String resource = "VfModule";
1711 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1712 initExecution(gAction, bpmnRequest, true);
1713 execution.setVariable("requestUri",
1714 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1716 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1717 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1718 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1719 northBoundRequest.setOrchestrationFlowList(orchFlows);
1721 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1722 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1724 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1725 vnf.setVnfId("vnf0");
1726 vnf.setModelCustomizationId("modelCustomizationId");
1727 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1729 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1730 vfModule.setModelCustomizationId("modelCustomizationId");
1731 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1733 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1734 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1735 vnfc.setModelInvariantId("modelInvariantId");
1736 vnfc.setVnfcName("testVnfcName");
1738 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1741 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1742 configuration.setConfigurationId("configurationId");
1743 configuration.setModelCustomizationId("modelCustimizationId");
1744 configuration.setConfigurationName("testConfigurationName");
1745 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1748 SPY_workflowAction.selectExecutionList(execution);
1749 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1750 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1751 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1755 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1756 String gAction = "createInstance";
1757 String resource = "VfModule";
1758 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1759 initExecution(gAction, bpmnRequest, true);
1760 execution.setVariable("requestUri",
1761 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1763 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1764 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1765 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1766 northBoundRequest.setOrchestrationFlowList(orchFlows);
1768 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1769 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1770 workflowAction.selectExecutionList(execution);
1771 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1772 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1776 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1777 String gAction = "deleteInstance";
1778 ObjectMapper mapper = new ObjectMapper();
1779 WorkflowType resourceType = WorkflowType.VFMODULE;
1780 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1781 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1782 execution.setVariable("requestAction", gAction);
1783 execution.setVariable("bpmnRequest", bpmnRequest);
1784 execution.setVariable("vnfId", "1234");
1785 execution.setVariable("vfModuleId", "vfModuleId1234");
1786 execution.setVariable("requestUri",
1787 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1788 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1789 RequestDetails requestDetails = sIRequest.getRequestDetails();
1790 String requestAction = "deleteInstance";
1791 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1792 boolean aLaCarte = true;
1793 String apiVersion = "7";
1794 String vnfType = "vnfType";
1795 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1796 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1797 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1798 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1800 thrown.expect(AAIEntityNotFoundException.class);
1801 thrown.expectMessage(containsString(
1802 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1804 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1805 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1807 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1808 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1809 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1810 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1812 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1813 vnf.setVnfId("vnf0");
1814 vnf.setModelCustomizationId("modelCustomizationId");
1815 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1817 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1818 vfModule.setModelCustomizationId("modelCustomizationId");
1819 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1821 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1825 public void getConfigBuildingBlocksTest() throws Exception {
1826 String gAction = "deleteInstance";
1827 ObjectMapper mapper = new ObjectMapper();
1828 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1830 WorkflowType resourceType = WorkflowType.VFMODULE;
1831 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1832 execution.setVariable("requestAction", gAction);
1833 String bpmnRequest =
1834 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1835 execution.setVariable("bpmnRequest", bpmnRequest);
1836 execution.setVariable("vnfId", "1234");
1837 execution.setVariable("vfModuleId", "vfModuleId1234");
1838 execution.setVariable("requestUri",
1839 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1840 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1841 RequestDetails requestDetails = sIRequest.getRequestDetails();
1842 String requestAction = "deleteInstance";
1843 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1844 boolean aLaCarte = true;
1845 String apiVersion = "7";
1846 String vnfType = "vnfType";
1847 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1848 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1849 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1850 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1852 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1853 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1855 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1856 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1857 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1858 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1860 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1861 vnf.setVnfId("vnf0");
1862 vnf.setModelCustomizationId("modelCustomizationId");
1863 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1865 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1866 vfModule.setModelCustomizationId("modelCustomizationId");
1868 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1869 config1.setConfigurationId("config1");
1870 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1871 config2.setConfigurationId("config2");
1873 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1874 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1875 vnfc1.setVnfcName("zauk53avetd02svm001");
1876 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1877 vnfc2.setVnfcName("zauk53avetd02tvm001");
1881 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1882 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1883 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1884 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1885 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1886 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1887 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1889 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1891 assertFalse(results.isEmpty());
1892 assertEquals(2, results.size());
1893 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1894 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1895 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1896 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1900 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1901 String gAction = "deleteInstance";
1902 ObjectMapper mapper = new ObjectMapper();
1903 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1905 WorkflowType resourceType = WorkflowType.VFMODULE;
1906 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1907 execution.setVariable("requestAction", gAction);
1908 String bpmnRequest =
1909 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1910 execution.setVariable("bpmnRequest", bpmnRequest);
1911 execution.setVariable("vnfId", "1234");
1912 execution.setVariable("vfModuleId", "vfModuleId1234");
1913 execution.setVariable("requestUri",
1914 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1915 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1916 RequestDetails requestDetails = sIRequest.getRequestDetails();
1917 String requestAction = "deleteInstance";
1918 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1919 boolean aLaCarte = true;
1920 String apiVersion = "7";
1921 String vnfType = "vnfType";
1922 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1923 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1924 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1925 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1927 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1928 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1930 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1931 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1932 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1933 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1935 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1936 vnf.setVnfId("vnf0");
1937 vnf.setModelCustomizationId("modelCustomizationId");
1938 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1940 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1941 vfModule.setModelCustomizationId("modelCustomizationId");
1943 /* this is a test case where configuration for vnfc is null */
1944 org.onap.aai.domain.yang.Configuration config1 = null;
1945 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1946 config2.setConfigurationId("config2");
1948 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1949 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1950 vnfc1.setVnfcName("zauk53avetd02svm001");
1951 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1952 vnfc2.setVnfcName("zauk53avetd02tvm001");
1956 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1957 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1958 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1959 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1960 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1961 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1962 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1964 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1966 assertFalse(results.isEmpty());
1967 assertEquals(1, results.size());
1968 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1969 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1973 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1974 String gAction = "deleteInstance";
1975 String resource = "VfModule";
1976 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1977 initExecution(gAction, bpmnRequest, true);
1978 execution.setVariable("requestUri",
1979 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1981 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1982 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1983 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1984 northBoundRequest.setOrchestrationFlowList(orchFlows);
1986 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1987 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1989 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1990 vnf.setVnfId("vnf0");
1991 vnf.setModelCustomizationId("modelCustomizationId");
1992 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1994 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1995 vfModule.setModelCustomizationId("modelCustomizationId");
1996 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1998 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
2000 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
2003 SPY_workflowAction.selectExecutionList(execution);
2004 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2005 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
2009 public void selectExecutionListMacroResumeTest() throws Exception {
2010 String gAction = "createInstance";
2011 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
2012 initExecution(gAction, bpmnRequest, false);
2013 execution.setVariable("requestUri", "v6/serviceInstances/123");
2015 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2016 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2017 northBoundRequest.setOrchestrationFlowList(orchFlows);
2019 Service service = new Service();
2020 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2022 ServiceInstance si = new ServiceInstance();
2024 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
2025 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
2027 String flowsToExecuteString =
2028 "[{\"buildingBlock\":{\"mso-id\":\"2f9ddc4b-4dcf-4129-a35f-be1625ae0176\",\"bpmn-flow-name\":\"AssignServiceInstanceBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}}]";
2029 ObjectMapper om = new ObjectMapper();
2030 List<ExecuteBuildingBlock> flowsToExecute = null;
2032 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
2033 flowsToExecute = Arrays.asList(asArray);
2034 } catch (Exception e) {
2035 e.printStackTrace();
2038 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
2040 workflowAction.selectExecutionList(execution);
2041 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2042 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
2046 public void getRelatedResourcesInVfModuleTest() throws Exception {
2047 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
2048 vnfc.setModelInvariantId("modelInvariantId");
2049 vnfc.setVnfcName("testVnfcName");
2051 String vfncPayload =
2052 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
2053 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
2055 String configurationPayload =
2056 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
2057 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
2058 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
2059 configurationResultWrappers.add(configurationWrapper);
2061 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
2062 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
2064 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
2066 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
2067 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
2068 assertEquals("testConfigurationId", configuration.getConfigurationId());
2072 * WorkflowActionBB Tests
2076 public void pluralTest() {
2077 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
2078 "networks, Network", "invalidNames, invalidNames");
2079 items.forEach(item -> {
2080 String[] split = item.split(",");
2081 String type = split[0].trim();
2082 String expected = split[1].trim();
2083 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
2088 public void sortExecutionPathByObjectForVlanTaggingCreateTest() {
2089 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2091 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
2092 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2093 executeFlows.add(ebb);
2095 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
2096 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2097 executeFlows.add(ebb2);
2099 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
2100 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2101 executeFlows.add(ebb3);
2103 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
2104 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2105 executeFlows.add(ebb4);
2107 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
2108 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2109 executeFlows.add(ebb5);
2111 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
2112 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2113 executeFlows.add(ebb6);
2115 List<ExecuteBuildingBlock> sorted =
2116 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
2117 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
2118 "CreateNetworkBB", "ActivateNetworkBB");
2122 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() {
2123 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2125 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
2126 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2127 executeFlows.add(ebb);
2129 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
2130 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2131 executeFlows.add(ebb2);
2133 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
2134 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2135 executeFlows.add(ebb3);
2137 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
2138 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2139 executeFlows.add(ebb4);
2141 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
2142 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2143 executeFlows.add(ebb5);
2145 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
2146 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2147 executeFlows.add(ebb6);
2149 List<ExecuteBuildingBlock> sorted =
2150 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
2151 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
2152 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
2156 public void queryNorthBoundRequestCatalogDbNestedTest() {
2157 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2158 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
2159 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
2160 northBoundRequest.setOrchestrationFlowList(orchFlows);
2161 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
2162 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
2164 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
2165 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
2166 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
2167 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
2168 WorkflowType.VNF, false, "my-custom-cloud-owner");
2169 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
2170 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
2171 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
2172 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
2173 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
2174 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
2175 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
2176 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
2177 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
2178 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
2182 public void queryNorthBoundRequestCatalogDbTransportTest() {
2183 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2184 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2185 northBoundRequest.setOrchestrationFlowList(orchFlows);
2186 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
2187 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
2189 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
2190 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
2191 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
2195 public void extractResourceIdAndTypeFromUriTest() {
2196 String uri = "/v6/serviceInstances/123";
2197 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
2198 String uri3 = "/v6/serviceInstances";
2199 String uri4 = "/v6/serviceInstances/assign";
2200 String uri5 = "'/v6/serviceInstances/123/vnfs";
2201 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
2202 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
2203 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
2204 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
2205 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2206 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2207 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
2208 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
2209 assertEquals(expected1.getResourceId(), result.getResourceId());
2210 assertEquals(expected1.getResourceType(), result.getResourceType());
2211 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
2212 assertEquals(expected2.getResourceId(), result.getResourceId());
2213 assertEquals(expected2.getResourceType(), result.getResourceType());
2214 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
2215 assertEquals("Service", result.getResourceType().toString());
2216 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2217 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
2218 assertEquals("Service", result.getResourceType().toString());
2219 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2220 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
2221 assertEquals("Vnf", result.getResourceType().toString());
2222 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2223 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
2224 assertEquals(expected3.getResourceId(), result.getResourceId());
2225 assertEquals(expected3.getResourceType(), result.getResourceType());
2226 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
2227 assertEquals(expected4.getResourceId(), result.getResourceId());
2228 assertEquals(expected4.getResourceType(), result.getResourceType());
2229 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
2230 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2231 assertEquals("VfModule", result.getResourceType().toString());
2236 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
2237 this.expectedException.expect(IllegalArgumentException.class);
2238 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
2239 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
2243 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
2244 this.expectedException.expect(IllegalArgumentException.class);
2245 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
2246 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2250 public void extractResourceIdAndTypeFromUriResumeTest() {
2251 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2252 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
2253 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2257 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2258 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2259 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/deactivateAndCloudDelete/resume");
2260 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2264 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2265 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2266 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/replace/resume");
2267 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2271 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2272 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2273 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
2274 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2278 public void isUriResumeTest() {
2279 assertTrue(workflowAction.isUriResume(
2280 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2281 assertTrue(workflowAction.isUriResume(
2282 " http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume"));
2284 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2288 public void isRequestMacroServiceResumeTest() {
2289 ServiceInstance si = new ServiceInstance();
2290 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2291 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2292 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2296 public void populateResourceIdsFromApiHandlerTest() {
2297 execution.setVariable("serviceInstanceId", "123");
2298 execution.setVariable("vnfId", "888");
2299 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2300 assertEquals("123", x.getServiceInstanceId());
2301 assertEquals("888", x.getVnfId());
2302 assertNull(x.getVolumeGroupId());
2306 public void handleRuntimeExceptionTest() {
2307 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2308 execution.setVariable("testProcessKey", "testProcessKeyValue");
2310 workflowAction.handleRuntimeException(execution);
2311 } catch (BpmnError wfe) {
2312 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2316 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2317 List<OrchestrationFlow> result = new ArrayList<>();
2318 int sequenceNumber = 1;
2319 for (String flowName : flowNames) {
2320 OrchestrationFlow orchFlow = new OrchestrationFlow();
2321 orchFlow.setFlowName(flowName);
2322 orchFlow.setSequenceNumber(sequenceNumber++);
2323 result.add(orchFlow);
2328 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2329 for (int i = 0; i < ebbs.size(); i++) {
2330 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2332 assertEquals(ebbs.size(), flowNames.length);
2335 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2336 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2337 execution.setVariable("requestAction", gAction);
2338 execution.setVariable("bpmnRequest", bpmnRequest);
2339 execution.setVariable("aLaCarte", isAlaCarte);
2340 execution.setVariable("apiVersion", "7");
2343 private String readBpmnRequestFromFile(String fileName) throws IOException {
2344 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2347 private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
2348 List<Resource> resourceList = new ArrayList<>();
2349 Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
2350 resourceList.add(r1);
2351 Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2352 resourceList.add(r2);
2353 Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
2354 resourceList.add(r3);
2355 Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
2356 resourceList.add(r4);
2357 Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
2358 resourceList.add(r5);
2359 Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
2360 resourceList.add(r6);
2362 Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2363 resourceList.add(r7);
2366 r3.setProcessingPriority(2);
2367 r4.setProcessingPriority(1);
2368 r5.setProcessingPriority(4);
2369 r5.setBaseVfModule(true);
2370 r6.setProcessingPriority(3);
2372 return resourceList;