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.net.MalformedURLException;
49 import java.nio.file.Files;
50 import java.nio.file.Paths;
51 import java.util.ArrayList;
52 import java.util.Arrays;
53 import java.util.List;
55 import java.util.Optional;
57 import java.util.UUID;
58 import java.util.stream.Collectors;
59 import org.camunda.bpm.engine.delegate.BpmnError;
60 import org.camunda.bpm.engine.delegate.DelegateExecution;
61 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
62 import org.junit.Before;
63 import org.junit.Ignore;
64 import org.junit.Rule;
65 import org.junit.Test;
66 import org.junit.rules.ExpectedException;
67 import org.mockito.InjectMocks;
68 import org.mockito.Mock;
69 import org.mockito.Mockito;
70 import org.mockito.Spy;
71 import org.onap.aai.domain.yang.GenericVnf;
72 import org.onap.aai.domain.yang.Relationship;
73 import org.onap.aai.domain.yang.RelationshipList;
74 import org.onap.aai.domain.yang.ServiceInstance;
75 import org.onap.aai.domain.yang.VfModule;
76 import org.onap.aai.domain.yang.VolumeGroup;
77 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
78 import org.onap.aaiclient.client.aai.entities.Relationships;
79 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
80 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
81 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
82 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
83 import org.onap.so.bpmn.BaseTaskTest;
84 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
85 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
86 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
87 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
88 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
89 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
90 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
91 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
92 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
93 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
94 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
95 import org.onap.so.db.catalog.beans.CollectionResource;
96 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
97 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
98 import org.onap.so.db.catalog.beans.ConfigurationResource;
99 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
100 import org.onap.so.db.catalog.beans.CvnfcCustomization;
101 import org.onap.so.db.catalog.beans.HeatEnvironment;
102 import org.onap.so.db.catalog.beans.HeatTemplate;
103 import org.onap.so.db.catalog.beans.InstanceGroup;
104 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
105 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
106 import org.onap.so.db.catalog.beans.Service;
107 import org.onap.so.db.catalog.beans.VfModuleCustomization;
108 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
109 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
110 import org.onap.so.serviceinstancebeans.RequestDetails;
111 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
112 import org.springframework.core.env.Environment;
114 public class WorkflowActionTest extends BaseTaskTest {
116 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
117 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
118 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
119 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
120 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
121 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
122 "VfModuleReplaceRebuildVolumeGroups.json";
123 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
124 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
125 private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
126 private static final String MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE =
127 "Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
130 protected Environment environment;
132 protected UserParamsServiceTraversal userParamsServiceTraversal;
135 private AaiResourceIdValidator aaiResourceIdValidator;
137 protected WorkflowAction workflowAction;
139 private DelegateExecution execution;
143 protected WorkflowAction SPY_workflowAction;
146 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
150 protected VnfEBBLoader vnfEBBLoaderSpy;
154 protected ServiceEBBLoader serviceEBBLoader;
157 public ExpectedException thrown = ExpectedException.none();
159 private String RESOURCE_PATH = "src/test/resources/__files/";
161 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
162 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
163 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
164 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
165 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
166 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
167 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
168 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
169 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
170 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
171 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
172 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
173 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
174 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
177 public void before() throws Exception {
178 execution = new DelegateExecutionFake();
179 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
180 servInstance.setServiceInstanceId("TEST");
181 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
182 workflowAction.setBbInputSetupUtils(bbSetupUtils);
183 workflowAction.setBbInputSetup(bbInputSetup);
191 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
192 String gAction = "createInstance";
193 String resource = "Network";
194 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
195 initExecution(gAction, bpmnRequest, true);
196 execution.setVariable("requestUri", "v6/networks/123");
198 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
199 List<OrchestrationFlow> orchFlows =
200 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
201 northBoundRequest.setOrchestrationFlowList(orchFlows);
203 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
204 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
206 workflowAction.selectExecutionList(execution);
207 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
208 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
212 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
213 String gAction = "deleteInstance";
214 String resource = "Network";
215 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
216 initExecution(gAction, bpmnRequest, true);
217 execution.setVariable("requestUri", "v6/networks/123");
219 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
220 List<OrchestrationFlow> orchFlows =
221 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
222 northBoundRequest.setOrchestrationFlowList(orchFlows);
224 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
225 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
227 workflowAction.selectExecutionList(execution);
228 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
229 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
233 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
234 String gAction = "createInstance";
235 String resource = "Service";
236 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
237 initExecution(gAction, bpmnRequest, true);
238 execution.setVariable("requestUri", "v6/serviceInstances/123");
241 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
242 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
243 northBoundRequest.setOrchestrationFlowList(orchFlows);
245 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
246 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
247 workflowAction.selectExecutionList(execution);
248 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
249 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
253 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
254 String gAction = "createInstance";
255 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
256 initExecution(gAction, bpmnRequest, true);
257 execution.setVariable("requestUri", "v6/serviceInstances");
259 doThrow(new DuplicateNameException(
260 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
261 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
262 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
264 SPY_workflowAction.selectExecutionList(execution);
265 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
266 "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.");
268 // verify default values are present in failure case
269 assertEquals(true, execution.getVariable("isTopLevelFlow"));
270 assertEquals(false, execution.getVariable("sentSyncResponse"));
274 * SERVICE MACRO TESTS
277 public void selectExecutionListServiceMacroAssignTest() throws Exception {
278 String gAction = "assignInstance";
279 String resource = "Service";
280 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
281 initExecution(gAction, bpmnRequest, false);
282 execution.setVariable("requestUri", "v6/serviceInstances/123");
284 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
285 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
286 "AssignVolumeGroupBB", "AssignVfModuleBB");
287 northBoundRequest.setOrchestrationFlowList(orchFlows);
289 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
290 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
291 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
292 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
293 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
294 HeatTemplate volumeHeatTemplate = new HeatTemplate();
295 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
296 vfModuleCustomization.setVfModule(vfModule);
298 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
299 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
300 HeatEnvironment heatEnvironment = new HeatEnvironment();
301 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
302 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
303 HeatTemplate moduleHeatTemplate = new HeatTemplate();
304 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
305 vfModuleCustomization2.setVfModule(vfModule2);
307 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
308 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
310 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
311 .thenReturn(prepareListWithResources(false, false));
312 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
313 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
314 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
315 .thenReturn(vfModuleCustomization);
316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
317 .thenReturn(vfModuleCustomization2);
318 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
319 .thenReturn(vfModuleCustomization3);
321 workflowAction.selectExecutionList(execution);
322 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
323 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
324 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
328 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
329 String gAction = "assignInstance";
330 String resource = "Service";
331 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
332 initExecution(gAction, bpmnRequest, false);
333 execution.setVariable("requestUri", "v6/serviceInstances/123");
335 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
336 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
337 "AssignVolumeGroupBB", "AssignVfModuleBB");
338 northBoundRequest.setOrchestrationFlowList(orchFlows);
340 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
341 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
342 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
343 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
344 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
345 HeatTemplate volumeHeatTemplate = new HeatTemplate();
346 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
347 vfModuleCustomization.setVfModule(vfModule);
349 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
350 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
351 HeatEnvironment heatEnvironment = new HeatEnvironment();
352 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
353 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
354 HeatTemplate moduleHeatTemplate = new HeatTemplate();
355 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
356 vfModuleCustomization2.setVfModule(vfModule2);
358 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
359 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
361 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
362 .thenReturn(prepareListWithResources(false, false));
363 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
364 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
365 false, "att-aic")).thenReturn(northBoundRequest);
366 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
367 .thenReturn(vfModuleCustomization);
368 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
369 .thenReturn(vfModuleCustomization2);
370 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
371 .thenReturn(vfModuleCustomization3);
372 workflowAction.selectExecutionList(execution);
373 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
374 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
375 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
379 public void selectExecutionListServiceMacroActivateTest() throws Exception {
380 String gAction = "activateInstance";
381 String resource = "Service";
382 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
383 initExecution(gAction, bpmnRequest, false);
384 execution.setVariable("requestUri", "v6/serviceInstances/si0");
386 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
387 List<OrchestrationFlow> orchFlows =
388 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
389 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
390 northBoundRequest.setOrchestrationFlowList(orchFlows);
392 ServiceInstance serviceInstanceAAI = new ServiceInstance();
393 serviceInstanceAAI.setServiceInstanceId("si0");
394 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
395 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
396 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
397 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
398 vnf.setVnfId("vnf0");
400 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
401 vnf.getVfModules().add(vfModule);
402 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
403 vnf.getVfModules().add(vfModule2);
405 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
406 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
407 volumeGroup.setVolumeGroupId("volumeGroup0");
408 vnf.getVolumeGroups().add(volumeGroup);
410 serviceInstanceMSO.getVnfs().add(vnf);
412 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
413 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
414 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
415 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
416 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
417 workflowAction.selectExecutionList(execution);
418 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
419 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
420 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
421 "ActivateServiceInstanceBB");
422 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
423 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
424 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
425 assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
426 assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
427 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
428 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
429 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
433 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
434 String gAction = "deactivateInstance";
435 String resource = "Service";
436 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
437 initExecution(gAction, bpmnRequest, false);
438 execution.setVariable("requestUri", "v6/serviceInstances/123");
440 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
441 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
442 northBoundRequest.setOrchestrationFlowList(orchFlows);
444 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
445 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
446 workflowAction.selectExecutionList(execution);
447 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
448 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
452 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
453 String gAction = "createInstance";
454 String resource = "Service";
455 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
456 initExecution(gAction, bpmnRequest, false);
457 execution.setVariable("requestUri", "v6/serviceInstances/123");
459 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
460 northBoundRequest.setIsToplevelflow(true);
461 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
462 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
463 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
464 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
465 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
466 northBoundRequest.setOrchestrationFlowList(orchFlows);
468 Service service = new Service();
469 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
470 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
471 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
472 workflowAction.selectExecutionList(execution);
473 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
474 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
478 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
479 String gAction = "createInstance";
480 String resource = "Service";
481 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
482 initExecution(gAction, bpmnRequest, false);
483 execution.setVariable("requestUri", "v6/serviceInstances/123");
485 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
486 northBoundRequest.setIsToplevelflow(true);
487 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
488 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
489 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
490 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
491 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
492 northBoundRequest.setOrchestrationFlowList(orchFlows);
494 Service service = new Service();
495 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
496 networkCustomization.setModelCustomizationUUID("1234");
497 service.getNetworkCustomizations().add(networkCustomization);
498 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
499 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
500 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
502 workflowAction.selectExecutionList(execution);
503 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
504 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
505 "ActivateNetworkBB", "ActivateServiceInstanceBB");
509 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
510 String gAction = "createInstance";
511 String resource = "Service";
512 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
513 initExecution(gAction, bpmnRequest, false);
514 execution.setVariable("requestUri", "v6/serviceInstances/123");
516 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
517 northBoundRequest.setIsToplevelflow(true);
518 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
519 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
520 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
521 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
522 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
523 northBoundRequest.setOrchestrationFlowList(orchFlows);
525 Service service = new Service();
526 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
527 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
528 networkCust.setModelCustomizationUUID("123");
529 networkCustomizations.add(networkCust);
530 service.setNetworkCustomizations(networkCustomizations);
531 NetworkCollectionResourceCustomization collectionResourceCustomization =
532 new NetworkCollectionResourceCustomization();
533 collectionResourceCustomization.setModelCustomizationUUID("123");
535 CollectionResource collectionResource = new CollectionResource();
536 collectionResource.setToscaNodeType("NetworkCollection");
537 InstanceGroup instanceGroup = new InstanceGroup();
538 instanceGroup.setToscaNodeType("NetworkCollectionResource");
539 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
540 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
541 new CollectionNetworkResourceCustomization();
542 collectionNetworkResourceCust.setModelCustomizationUUID("123");
543 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
544 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
545 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
546 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
547 new CollectionResourceInstanceGroupCustomization();
548 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
549 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
550 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
551 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
552 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
553 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
554 collectionResource.setInstanceGroup(instanceGroup);
555 collectionResourceCustomization.setCollectionResource(collectionResource);;
556 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
557 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
558 doReturn(collectionResourceCustomization).when(catalogDbClient)
559 .getNetworkCollectionResourceCustomizationByID("123");
560 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
561 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
562 workflowAction.selectExecutionList(execution);
563 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
564 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
565 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
566 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
567 "ActivateServiceInstanceBB");
568 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
569 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
570 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
571 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
572 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
574 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
577 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
578 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
579 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
580 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
581 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
583 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
586 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
587 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
588 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
589 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
590 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
592 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
598 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
599 String gAction = "createInstance";
600 String resource = "Service";
601 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
602 initExecution(gAction, bpmnRequest, false);
603 execution.setVariable("requestUri", "v6/serviceInstances/123");
605 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
606 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
607 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
608 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
609 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
610 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
611 northBoundRequest.setOrchestrationFlowList(orchFlows);
613 Service service = new Service();
614 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
616 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
617 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
618 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
619 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
620 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
621 HeatTemplate volumeHeatTemplate = new HeatTemplate();
622 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
623 vfModuleCustomization.setVfModule(vfModule);
625 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
626 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
627 HeatEnvironment heatEnvironment = new HeatEnvironment();
628 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
629 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
630 HeatTemplate moduleHeatTemplate = new HeatTemplate();
631 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
632 vfModuleCustomization2.setVfModule(vfModule2);
634 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
635 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
637 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
638 .thenReturn(prepareListWithResources(false, false));
639 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
640 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
641 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
642 .thenReturn(vfModuleCustomization);
643 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
644 .thenReturn(vfModuleCustomization2);
645 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
646 .thenReturn(vfModuleCustomization3);
647 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
648 workflowAction.selectExecutionList(execution);
649 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
650 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
651 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
652 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
653 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
654 "ActivateServiceInstanceBB");
656 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
657 int randomUUIDLength = UUID.randomUUID().toString().length();
658 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
659 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
660 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
661 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
662 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
663 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
664 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
665 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
666 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
667 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
668 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
669 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
670 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
671 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
672 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
673 assertEquals(true, execution.getVariable("homing"));
677 public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
678 String gAction = "createInstance";
679 String resource = "Service";
680 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
681 initExecution(gAction, bpmnRequest, false);
682 execution.setVariable("requestUri", "v6/serviceInstances/123");
684 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
685 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
686 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
687 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
688 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
689 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
690 "ActivateServiceInstanceBB");
691 northBoundRequest.setOrchestrationFlowList(orchFlows);
693 Service service = new Service();
694 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
696 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
697 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
698 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
699 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
700 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
701 HeatTemplate volumeHeatTemplate = new HeatTemplate();
702 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
703 vfModuleCustomization.setVfModule(vfModule);
705 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
706 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
707 HeatEnvironment heatEnvironment = new HeatEnvironment();
708 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
709 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
710 HeatTemplate moduleHeatTemplate = new HeatTemplate();
711 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
712 vfModuleCustomization2.setVfModule(vfModule2);
714 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
715 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
717 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
718 .thenReturn(prepareListWithResources(true, true));
719 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
720 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
721 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
722 .thenReturn(vfModuleCustomization);
723 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
724 .thenReturn(vfModuleCustomization2);
725 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
726 .thenReturn(vfModuleCustomization3);
727 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
728 workflowAction.selectExecutionList(execution);
729 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
730 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
731 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
732 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
733 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
734 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
736 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
737 int randomUUIDLength = UUID.randomUUID().toString().length();
738 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
739 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
740 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
741 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
742 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
743 assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
744 assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
745 assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
746 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
747 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
748 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
749 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
750 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
751 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
752 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
753 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
754 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
755 assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
756 assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
757 assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
758 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
759 assertEquals(true, execution.getVariable("homing"));
763 public void selectExecutionListServiceMacroCreateWithMultipleSameModelVnfAndVfModules() throws Exception {
764 String gAction = "createInstance";
765 String resource = "Service";
766 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE);
767 initExecution(gAction, bpmnRequest, false);
768 execution.setVariable("requestUri", "v7/serviceInstances");
769 execution.setVariable("serviceInstanceId", UUID.randomUUID().toString());
771 // Service-Macro-Create
772 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
773 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
774 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "ControllerExecutionBB",
775 "AssignPnfBB", "WaitForPnfReadyBB", "ControllerExecutionBB", "ControllerExecutionBB", "ActivatePnfBB",
776 "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
777 "CreateVfModuleBB", "ActivateVfModuleBB", "ControllerExecutionBB", "ActivateVnfBB",
778 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
779 orchFlows.get(6).setBpmnAction("config-assign");
780 orchFlows.get(6).setBpmnScope("vnf");
781 orchFlows.get(9).setBpmnAction("config-assign");
782 orchFlows.get(9).setBpmnScope("pnf");
783 orchFlows.get(10).setBpmnAction("config-deploy");
784 orchFlows.get(10).setBpmnScope("pnf");
785 orchFlows.get(18).setBpmnAction("config-deploy");
786 orchFlows.get(18).setBpmnScope("vnf");
787 northBoundRequest.setOrchestrationFlowList(orchFlows);
789 Service service = new Service();
790 service.setModelUUID("f2444885-3c76-4ddc-8668-7741c0631495");
792 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
793 vfModuleCustomization.setModelCustomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0");
794 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
795 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
796 vfModule.setVolumeHeatTemplate(new HeatTemplate());
797 vfModuleCustomization.setVfModule(vfModule);
799 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
800 vfModuleCustomization2.setModelCustomizationUUID("83677d89-428a-407b-b4ec-738e68275d84");
801 vfModuleCustomization2.setHeatEnvironment(new HeatEnvironment());
802 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
803 vfModule2.setModuleHeatTemplate(new HeatTemplate());
804 vfModuleCustomization2.setVfModule(vfModule2);
806 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
807 false, "DEFAULT")).thenReturn(northBoundRequest);
808 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0"))
809 .thenReturn(vfModuleCustomization);
810 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("83677d89-428a-407b-b4ec-738e68275d84"))
811 .thenReturn(vfModuleCustomization2);
812 when(catalogDbClient.getServiceByID("f2444885-3c76-4ddc-8668-7741c0631495")).thenReturn(service);
815 Resource serviceResource =
816 new Resource(WorkflowType.SERVICE, "f2444885-3c76-4ddc-8668-7741c0631495", false, null);
817 Resource vnfResource1 =
818 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
819 vnfResource1.setInstanceName("vnf-instanceName-1");
820 Resource vfmResource1 =
821 new Resource(WorkflowType.VFMODULE, "3bd19000-6d21-49f1-9eb3-ea76a6eac5e0", false, vnfResource1);
822 vfmResource1.setInstanceName("demo-network-1");
823 Resource vfmResource2 =
824 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource1);
825 vfmResource2.setInstanceName("demo-1");
826 Resource vnfResource2 =
827 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
828 vnfResource2.setInstanceName("vnf-instanceName-2");
829 Resource vfmResource3 =
830 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
831 vfmResource3.setInstanceName("demo-2");
832 Resource vfmResource4 =
833 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
834 vfmResource4.setInstanceName("demo-3");
836 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), any()))
837 .thenReturn(Arrays.asList(serviceResource, vnfResource1, vnfResource2, vfmResource1, vfmResource2,
838 vfmResource3, vfmResource4));
840 workflowAction.selectExecutionList(execution);
842 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
844 Map<String, List<ExecuteBuildingBlock>> flowNamesToEbbList =
845 ebbs.stream().collect(Collectors.groupingBy(e -> e.getBuildingBlock().getBpmnFlowName()));
847 assertEquals(1, flowNamesToEbbList.get("AssignServiceInstanceBB").size());
848 assertEquals(2, flowNamesToEbbList.get("AssignVnfBB").size());
849 assertEquals(4, flowNamesToEbbList.get("AssignVfModuleBB").size());
850 assertEquals(4, flowNamesToEbbList.get("ControllerExecutionBB").size());
851 assertEquals(4, flowNamesToEbbList.get("CreateVfModuleBB").size());
852 assertEquals(4, flowNamesToEbbList.get("ActivateVfModuleBB").size());
853 assertEquals(2, flowNamesToEbbList.get("ActivateVnfBB").size());
854 assertEquals(1, flowNamesToEbbList.get("ActivateServiceInstanceBB").size());
856 String vnfInstanceId1 = flowNamesToEbbList.get("AssignVnfBB").get(0).getWorkflowResourceIds().getVnfId();
857 String vnfInstanceId2 = flowNamesToEbbList.get("AssignVnfBB").get(1).getWorkflowResourceIds().getVnfId();
859 // should be 3 = 1 AssignVfModuleBB + 1 CreateVfModuleBB + 1 ActivateVfModuleBB
860 boolean allEbbsForVfModule1HaveCorrectParentVnfId =
861 3 == ebbs.stream().map(ExecuteBuildingBlock::getWorkflowResourceIds)
862 .filter(w -> "demo-network-1".equals(w.getVfModuleInstanceName())
863 && vnfInstanceId1.equals(w.getVnfId()))
865 boolean allEbbsForVfModule2HaveCorrectParentVnfId = 3 == ebbs.stream()
866 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
867 .filter(w -> "demo-1".equals(w.getVfModuleInstanceName()) && vnfInstanceId1.equals(w.getVnfId()))
869 boolean allEbbsForVfModule3HaveCorrectParentVnfId = 3 == ebbs.stream()
870 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
871 .filter(w -> "demo-2".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
873 boolean allEbbsForVfModule4HaveCorrectParentVnfId = 3 == ebbs.stream()
874 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
875 .filter(w -> "demo-3".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
877 assertTrue(allEbbsForVfModule1HaveCorrectParentVnfId);
878 assertTrue(allEbbsForVfModule2HaveCorrectParentVnfId);
879 assertTrue(allEbbsForVfModule3HaveCorrectParentVnfId);
880 assertTrue(allEbbsForVfModule4HaveCorrectParentVnfId);
882 boolean controllerExecutionBBsforVnf1HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
883 .filter(e -> vnfInstanceId1.equals(e.getWorkflowResourceIds().getVnfId()))
884 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
885 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
886 assertTrue(controllerExecutionBBsforVnf1HaveCorrectVnfId);
888 boolean controllerExecutionBBsforVnf2HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
889 .filter(e -> vnfInstanceId2.equals(e.getWorkflowResourceIds().getVnfId()))
890 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
891 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
892 assertTrue(controllerExecutionBBsforVnf2HaveCorrectVnfId);
896 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
897 String gAction = "deleteInstance";
898 String resource = "Service";
899 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
900 initExecution(gAction, bpmnRequest, false);
901 execution.setVariable("requestUri", "v6/serviceInstances/123");
903 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
904 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
905 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
906 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
907 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
908 "UnassignServiceInstanceBB");
909 northBoundRequest.setOrchestrationFlowList(orchFlows);
911 ServiceInstance serviceInstanceAAI = new ServiceInstance();
912 serviceInstanceAAI.setServiceInstanceId("aaisi123");
913 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
914 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
915 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
916 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
917 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
918 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
919 vnf.setVnfId("vnfId123");
920 pnf.setPnfId("pnfId123");
922 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
923 vnf.getVfModules().add(vfModule);
924 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
925 vnf.getVfModules().add(vfModule2);
927 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
928 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
929 volumeGroup.setVolumeGroupId("vg123");
930 vnf.getVolumeGroups().add(volumeGroup);
932 serviceInstanceMSO.getVnfs().add(vnf);
933 serviceInstanceMSO.getPnfs().add(pnf);
935 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
936 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
937 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
938 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
939 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
940 workflowAction.selectExecutionList(execution);
941 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
942 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
943 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
944 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
945 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
949 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
950 String gAction = "deleteInstance";
951 String resource = "Service";
952 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
953 initExecution(gAction, bpmnRequest, false);
954 execution.setVariable("requestUri", "v6/serviceInstances/123");
956 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
957 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
958 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
959 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
960 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
961 "UnassignServiceInstanceBB");
962 northBoundRequest.setOrchestrationFlowList(orchFlows);
964 ServiceInstance serviceInstanceAAI = new ServiceInstance();
965 serviceInstanceAAI.setServiceInstanceId("aaisi123");
966 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
967 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
968 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
969 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
970 pnf.setPnfId("pnfId123");
972 serviceInstanceMSO.getPnfs().add(pnf);
974 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
975 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
976 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
977 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
978 workflowAction.selectExecutionList(execution);
979 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
980 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
984 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
985 String gAction = "unassignInstance";
986 String resource = "Service";
987 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
988 initExecution(gAction, bpmnRequest, false);
989 execution.setVariable("requestUri", "v6/serviceInstances/123");
991 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
992 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
993 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
994 northBoundRequest.setOrchestrationFlowList(orchFlows);
996 ServiceInstance serviceInstanceAAI = new ServiceInstance();
997 serviceInstanceAAI.setServiceInstanceId("aaisi123");
998 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
999 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1000 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1001 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1002 vnf.setVnfId("vnfId123");
1004 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
1005 vnf.getVfModules().add(vfModule);
1006 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
1007 vnf.getVfModules().add(vfModule2);
1009 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
1010 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
1011 volumeGroup.setVolumeGroupId("vg123");
1012 vnf.getVolumeGroups().add(volumeGroup);
1014 serviceInstanceMSO.getVnfs().add(vnf);
1016 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1017 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1018 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
1019 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1020 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1021 workflowAction.selectExecutionList(execution);
1022 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1023 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
1024 "UnassignVnfBB", "UnassignServiceInstanceBB");
1028 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
1029 String gAction = "deleteInstance";
1030 String resource = "Service";
1031 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
1032 initExecution(gAction, bpmnRequest, false);
1033 execution.setVariable("requestUri", "v6/serviceInstances/123");
1035 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1036 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1037 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
1038 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
1039 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1040 northBoundRequest.setOrchestrationFlowList(orchFlows);
1042 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1043 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1044 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1045 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1047 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
1048 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1049 network.setNetworkId("123");
1050 serviceInstanceMSO.getNetworks().add(network);
1051 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
1052 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1053 network2.setNetworkId("321");
1054 serviceInstanceMSO.getNetworks().add(network2);
1056 Collection collection = new Collection();
1057 serviceInstanceMSO.setCollection(collection);
1059 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1060 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1061 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1062 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1063 workflowAction.selectExecutionList(execution);
1064 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1065 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1066 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
1067 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
1071 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
1072 String gAction = "recreateInstance";
1073 String resource = "Vnf";
1074 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1075 initExecution(gAction, bpmnRequest, false);
1076 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
1077 execution.setVariable("serviceInstanceId", "123");
1078 execution.setVariable("vnfId", "1234");
1080 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1081 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1082 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1083 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1084 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1085 "AAIUnsetVnfInMaintBB");
1086 northBoundRequest.setOrchestrationFlowList(orchFlows);
1088 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1089 serviceInstanceAAI.setServiceInstanceId("123");
1090 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1091 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1092 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1093 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1094 vnf.setVnfId("1234");
1096 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1097 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1098 vfModule.setVfModuleId("vfModule1");
1099 vnf.getVfModules().add(vfModule);
1100 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1101 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1102 vfModule2.setVfModuleId("vfModule2");
1103 vnf.getVfModules().add(vfModule2);
1105 serviceInstanceMSO.getVnfs().add(vnf);
1107 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1108 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1109 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1110 false, "cloud-owner")).thenReturn(northBoundRequest);
1111 workflowAction.selectExecutionList(execution);
1112 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1113 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1114 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
1115 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1116 "AAIUnsetVnfInMaintBB");
1120 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
1121 String gAction = "replaceInstance";
1122 String resource = "Vnf";
1123 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1124 initExecution(gAction, bpmnRequest, false);
1125 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
1126 execution.setVariable("serviceInstanceId", "123");
1127 execution.setVariable("vnfId", "1234");
1129 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1130 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1131 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1132 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1133 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1134 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1135 "AAIUnsetVnfInMaintBB");
1136 northBoundRequest.setOrchestrationFlowList(orchFlows);
1138 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1139 serviceInstanceAAI.setServiceInstanceId("123");
1140 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1141 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1142 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1143 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1144 vnf.setVnfId("1234");
1145 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1146 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1147 vfModule.setVfModuleId("vfModule1");
1148 vnf.getVfModules().add(vfModule);
1149 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1150 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1151 vfModule2.setVfModuleId("vfModule2");
1152 vnf.getVfModules().add(vfModule2);
1153 serviceInstanceMSO.getVnfs().add(vnf);
1154 VfModule vfModuleAAI = new VfModule();
1155 vfModuleAAI.setVfModuleId("vfModule2");
1156 RelationshipList relationshipList = new RelationshipList();
1157 Relationship relationship = new Relationship();
1158 relationshipList.getRelationship().add(relationship);
1159 vfModuleAAI.setRelationshipList(relationshipList);
1160 Relationships relationships = new Relationships("abc");
1161 Configuration config = new Configuration();
1162 config.setConfigurationId("configId");
1163 Optional<Configuration> configOp = Optional.of(config);
1164 Optional<Relationships> relationshipsOp = Optional.of(relationships);
1166 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
1167 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
1168 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
1169 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1170 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1171 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1172 false, "cloud-owner")).thenReturn(northBoundRequest);
1173 workflowAction.selectExecutionList(execution);
1174 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1175 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1176 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1177 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
1178 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1179 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1180 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1181 "AAIUnsetVnfInMaintBB");
1182 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
1183 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
1189 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
1190 String gAction = "createInstance";
1191 String resource = "NetworkCollection";
1192 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1193 initExecution(gAction, bpmnRequest, false);
1194 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1196 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1197 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
1198 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
1199 northBoundRequest.setOrchestrationFlowList(orchFlows);
1201 Service service = new Service();
1202 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1203 CollectionResource collectionResource = new CollectionResource();
1204 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1205 collectionResourceCustomization.setCollectionResource(collectionResource);
1206 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1208 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1209 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1210 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1211 workflowAction.selectExecutionList(execution);
1212 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1213 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
1214 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
1215 "ActivateNetworkCollectionBB");
1220 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
1221 String gAction = "deleteInstance";
1222 String resource = "NetworkCollection";
1223 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1224 initExecution(gAction, bpmnRequest, false);
1225 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1227 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1228 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1229 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1230 northBoundRequest.setOrchestrationFlowList(orchFlows);
1232 Service service = new Service();
1233 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1234 CollectionResource collectionResource = new CollectionResource();
1235 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1236 collectionResourceCustomization.setCollectionResource(collectionResource);
1237 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1239 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1240 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1241 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1242 workflowAction.selectExecutionList(execution);
1243 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1244 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1245 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1246 "DeleteNetworkCollectionBB");
1250 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1251 String gAction = "createInstance";
1252 String resource = "VfModule";
1253 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1254 initExecution(gAction, bpmnRequest, true);
1255 execution.setVariable("requestUri",
1256 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1258 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1259 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1260 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1261 northBoundRequest.setOrchestrationFlowList(orchFlows);
1263 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1264 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1265 workflowAction.selectExecutionList(execution);
1266 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1267 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1271 public void selectExecutionListALaCarteVfModuleFabricCreateTest() 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 "AddFabricConfigurationBB");
1282 northBoundRequest.setOrchestrationFlowList(orchFlows);
1284 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1285 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1286 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1287 new CvnfcConfigurationCustomization();
1288 ConfigurationResource configurationResource = new ConfigurationResource();
1289 configurationResource.setToscaNodeType("FabricConfiguration");
1290 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1291 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1292 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1293 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1294 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1295 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1296 cvnfcCustomization.setDescription("description");
1297 cvnfcCustomizations.add(cvnfcCustomization);
1299 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1300 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1301 new CvnfcConfigurationCustomization();
1302 ConfigurationResource configurationResource2 = new ConfigurationResource();
1303 configurationResource2.setToscaNodeType("FabricConfiguration");
1304 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1305 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1306 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1307 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1308 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1309 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1310 cvnfcCustomization2.setDescription("description2");
1311 cvnfcCustomizations.add(cvnfcCustomization2);
1313 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1314 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1316 workflowAction.selectExecutionList(execution);
1317 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1318 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1324 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1325 String gAction = "replaceInstance";
1326 String resource = "VfModule";
1327 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1328 initExecution(gAction, bpmnRequest, true);
1329 execution.setVariable("requestUri",
1330 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1332 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1333 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1334 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1335 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1336 workflowAction.selectExecutionList(execution);
1337 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1339 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1340 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1341 "ChangeModelServiceInstanceBB");
1345 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1346 String gAction = "replaceInstanceRetainAssignments";
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(replaceRetainAssignmentsVfModuleOrchFlows);
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", "ChangeModelVfModuleBB",
1361 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1365 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1366 String gAction = "replaceInstance";
1367 String resource = "VfModule";
1368 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1369 initExecution(gAction, bpmnRequest, true);
1370 execution.setVariable("requestUri",
1371 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1372 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1373 execution.setVariable("vfModuleId", "1234");
1375 VolumeGroup volumeGroup = new VolumeGroup();
1376 volumeGroup.setVolumeGroupId("volumeGroupId");
1377 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1378 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1379 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1380 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1381 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1382 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1383 workflowAction.selectExecutionList(execution);
1384 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1386 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1387 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1388 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1392 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1394 String gAction = "replaceInstanceRetainAssignments";
1395 String resource = "VfModule";
1396 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1397 initExecution(gAction, bpmnRequest, true);
1398 execution.setVariable("requestUri",
1399 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1400 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1401 execution.setVariable("vfModuleId", "1234");
1403 VolumeGroup volumeGroup = new VolumeGroup();
1404 volumeGroup.setVolumeGroupId("volumeGroupId");
1405 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1406 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1408 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1409 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1410 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1411 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1412 workflowAction.selectExecutionList(execution);
1413 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1415 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1416 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1417 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1421 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1422 String gAction = "replaceInstance";
1423 String resource = "VfModule";
1424 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1425 initExecution(gAction, bpmnRequest, true);
1426 execution.setVariable("requestUri",
1427 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1428 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1429 execution.setVariable("vfModuleId", "1234");
1431 VolumeGroup volumeGroup = new VolumeGroup();
1432 volumeGroup.setVolumeGroupId("volumeGroupId");
1433 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1434 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1436 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1437 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1438 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1439 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1440 vfModuleCustomization.setVfModule(vfModule);
1441 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1442 .thenReturn(vfModuleCustomization);
1444 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1445 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1446 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1447 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1448 workflowAction.selectExecutionList(execution);
1449 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1451 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1452 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1453 "ChangeModelServiceInstanceBB");
1457 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1458 String gAction = "replaceInstance";
1459 String resource = "VfModule";
1460 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1461 initExecution(gAction, bpmnRequest, true);
1462 execution.setVariable("requestUri",
1463 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1464 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1465 execution.setVariable("vfModuleId", "1234");
1467 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1468 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1469 vnf.setModelCustomizationId("modelCustomizationId");
1470 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1472 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1473 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1474 vfModuleFromAAI.setVfModuleId("1234");
1475 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1477 VolumeGroup volumeGroup = new VolumeGroup();
1478 volumeGroup.setVolumeGroupId("volumeGroupId");
1479 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1480 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1482 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1483 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1484 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1485 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1486 vfModuleCustomization.setVfModule(vfModule);
1487 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1488 .thenReturn(vfModuleCustomization);
1489 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1490 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1491 vnfc.setModelInvariantId("modelInvariantId");
1492 vnfc.setVnfcName("testVnfcName");
1494 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1496 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1497 configuration.setConfigurationId("configurationId");
1498 configuration.setModelCustomizationId("modelCustimizationId");
1499 configuration.setConfigurationName("testConfigurationName");
1500 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1502 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1503 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1504 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1505 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1506 SPY_workflowAction.selectExecutionList(execution);
1507 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1509 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1510 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1511 "ChangeModelServiceInstanceBB");
1515 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1516 String gAction = "replaceInstanceRetainAssignments";
1517 String resource = "VfModule";
1518 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1519 initExecution(gAction, bpmnRequest, true);
1520 execution.setVariable("requestUri",
1521 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1522 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1523 execution.setVariable("vfModuleId", "1234");
1525 VolumeGroup volumeGroup = new VolumeGroup();
1526 volumeGroup.setVolumeGroupId("volumeGroupId");
1527 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1528 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1530 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1531 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1532 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1533 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1534 vfModuleCustomization.setVfModule(vfModule);
1535 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1536 .thenReturn(vfModuleCustomization);
1538 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1539 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1540 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1541 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1542 workflowAction.selectExecutionList(execution);
1543 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1545 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1546 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1550 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1551 String gAction = "replaceInstance";
1552 String resource = "VfModule";
1553 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1554 initExecution(gAction, bpmnRequest, true);
1555 execution.setVariable("requestUri",
1556 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1557 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1558 execution.setVariable("vfModuleId", "1234");
1560 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1561 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1562 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1563 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1564 vfModuleCustomization.setVfModule(vfModule);
1565 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1566 .thenReturn(vfModuleCustomization);
1568 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1569 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1570 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1571 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1572 workflowAction.selectExecutionList(execution);
1573 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1575 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1576 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1577 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1581 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1583 String gAction = "replaceInstanceRetainAssignments";
1584 String resource = "VfModule";
1585 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1586 initExecution(gAction, bpmnRequest, true);
1587 execution.setVariable("requestUri",
1588 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1589 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1590 execution.setVariable("vfModuleId", "1234");
1592 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1593 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1594 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1595 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1596 vfModuleCustomization.setVfModule(vfModule);
1597 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1598 .thenReturn(vfModuleCustomization);
1600 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1601 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1602 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1603 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1604 workflowAction.selectExecutionList(execution);
1605 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1607 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1608 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1609 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1613 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1614 String gAction = "replaceInstance";
1615 String resource = "VfModule";
1616 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1617 initExecution(gAction, bpmnRequest, true);
1618 execution.setVariable("requestUri",
1619 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1620 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1621 execution.setVariable("vfModuleId", "1234");
1623 VolumeGroup volumeGroup = new VolumeGroup();
1624 volumeGroup.setVolumeGroupId("volumeGroupId");
1625 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1626 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1628 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1629 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1630 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1631 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1632 vfModuleCustomization.setVfModule(vfModule);
1633 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1634 .thenReturn(vfModuleCustomization);
1636 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1637 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1638 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1639 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1640 workflowAction.selectExecutionList(execution);
1641 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1643 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1644 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1645 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1646 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1650 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1651 String gAction = "replaceInstanceRetainAssignments";
1652 String resource = "VfModule";
1653 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1654 initExecution(gAction, bpmnRequest, true);
1655 execution.setVariable("requestUri",
1656 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1657 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1658 execution.setVariable("vfModuleId", "1234");
1660 VolumeGroup volumeGroup = new VolumeGroup();
1661 volumeGroup.setVolumeGroupId("volumeGroupId");
1662 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1663 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1665 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1666 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1667 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1668 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1669 vfModuleCustomization.setVfModule(vfModule);
1670 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1671 .thenReturn(vfModuleCustomization);
1673 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1674 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1675 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1676 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1677 workflowAction.selectExecutionList(execution);
1678 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1680 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1681 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1682 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1683 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1687 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1688 String gAction = "deleteInstance";
1689 String resource = "VfModule";
1690 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1691 initExecution(gAction, bpmnRequest, true);
1692 execution.setVariable("requestUri",
1693 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1695 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1696 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1697 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1698 northBoundRequest.setOrchestrationFlowList(orchFlows);
1700 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1701 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1703 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1704 vnf.setVnfId("vnf0");
1705 vnf.setModelCustomizationId("modelCustomizationId");
1706 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1708 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1709 vfModule.setModelCustomizationId("modelCustomizationId");
1710 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1712 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1713 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1714 vnfc.setModelInvariantId("modelInvariantId");
1715 vnfc.setVnfcName("testVnfcName");
1717 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1720 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1721 configuration.setConfigurationId("configurationId");
1722 configuration.setModelCustomizationId("modelCustimizationId");
1723 configuration.setConfigurationName("testConfigurationName");
1724 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1727 SPY_workflowAction.selectExecutionList(execution);
1728 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1729 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1730 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1734 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1735 String gAction = "createInstance";
1736 String resource = "VfModule";
1737 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1738 initExecution(gAction, bpmnRequest, true);
1739 execution.setVariable("requestUri",
1740 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1742 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1743 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1744 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1745 northBoundRequest.setOrchestrationFlowList(orchFlows);
1747 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1748 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1749 workflowAction.selectExecutionList(execution);
1750 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1751 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1755 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1756 String gAction = "deleteInstance";
1757 ObjectMapper mapper = new ObjectMapper();
1758 WorkflowType resourceType = WorkflowType.VFMODULE;
1759 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1760 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1761 execution.setVariable("requestAction", gAction);
1762 execution.setVariable("bpmnRequest", bpmnRequest);
1763 execution.setVariable("vnfId", "1234");
1764 execution.setVariable("vfModuleId", "vfModuleId1234");
1765 execution.setVariable("requestUri",
1766 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1767 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1768 RequestDetails requestDetails = sIRequest.getRequestDetails();
1769 String requestAction = "deleteInstance";
1770 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1771 boolean aLaCarte = true;
1772 String apiVersion = "7";
1773 String vnfType = "vnfType";
1774 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1775 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1776 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1777 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1779 thrown.expect(AAIEntityNotFoundException.class);
1780 thrown.expectMessage(containsString(
1781 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1783 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1784 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1786 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1787 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1788 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1789 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1791 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1792 vnf.setVnfId("vnf0");
1793 vnf.setModelCustomizationId("modelCustomizationId");
1794 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1796 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1797 vfModule.setModelCustomizationId("modelCustomizationId");
1798 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1800 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1804 public void getConfigBuildingBlocksTest() throws Exception {
1805 String gAction = "deleteInstance";
1806 ObjectMapper mapper = new ObjectMapper();
1807 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1809 WorkflowType resourceType = WorkflowType.VFMODULE;
1810 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1811 execution.setVariable("requestAction", gAction);
1812 String bpmnRequest =
1813 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1814 execution.setVariable("bpmnRequest", bpmnRequest);
1815 execution.setVariable("vnfId", "1234");
1816 execution.setVariable("vfModuleId", "vfModuleId1234");
1817 execution.setVariable("requestUri",
1818 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1819 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1820 RequestDetails requestDetails = sIRequest.getRequestDetails();
1821 String requestAction = "deleteInstance";
1822 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1823 boolean aLaCarte = true;
1824 String apiVersion = "7";
1825 String vnfType = "vnfType";
1826 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1827 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1828 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1829 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1831 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1832 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1834 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1835 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1836 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1837 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1839 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1840 vnf.setVnfId("vnf0");
1841 vnf.setModelCustomizationId("modelCustomizationId");
1842 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1844 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1845 vfModule.setModelCustomizationId("modelCustomizationId");
1847 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1848 config1.setConfigurationId("config1");
1849 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1850 config2.setConfigurationId("config2");
1852 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1853 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1854 vnfc1.setVnfcName("zauk53avetd02svm001");
1855 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1856 vnfc2.setVnfcName("zauk53avetd02tvm001");
1860 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1861 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1862 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1863 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1864 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1865 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1866 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1868 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1870 assertFalse(results.isEmpty());
1871 assertEquals(2, results.size());
1872 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1873 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1874 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1875 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1879 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1880 String gAction = "deleteInstance";
1881 ObjectMapper mapper = new ObjectMapper();
1882 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1884 WorkflowType resourceType = WorkflowType.VFMODULE;
1885 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1886 execution.setVariable("requestAction", gAction);
1887 String bpmnRequest =
1888 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1889 execution.setVariable("bpmnRequest", bpmnRequest);
1890 execution.setVariable("vnfId", "1234");
1891 execution.setVariable("vfModuleId", "vfModuleId1234");
1892 execution.setVariable("requestUri",
1893 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1894 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1895 RequestDetails requestDetails = sIRequest.getRequestDetails();
1896 String requestAction = "deleteInstance";
1897 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1898 boolean aLaCarte = true;
1899 String apiVersion = "7";
1900 String vnfType = "vnfType";
1901 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1902 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1903 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1904 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1906 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1907 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1909 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1910 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1911 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1912 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1914 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1915 vnf.setVnfId("vnf0");
1916 vnf.setModelCustomizationId("modelCustomizationId");
1917 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1919 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1920 vfModule.setModelCustomizationId("modelCustomizationId");
1922 /* this is a test case where configuration for vnfc is null */
1923 org.onap.aai.domain.yang.Configuration config1 = null;
1924 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1925 config2.setConfigurationId("config2");
1927 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1928 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1929 vnfc1.setVnfcName("zauk53avetd02svm001");
1930 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1931 vnfc2.setVnfcName("zauk53avetd02tvm001");
1935 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1936 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1937 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1938 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1939 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1940 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1941 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1943 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1945 assertFalse(results.isEmpty());
1946 assertEquals(1, results.size());
1947 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1948 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1952 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1953 String gAction = "deleteInstance";
1954 String resource = "VfModule";
1955 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1956 initExecution(gAction, bpmnRequest, true);
1957 execution.setVariable("requestUri",
1958 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1960 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1961 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1962 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1963 northBoundRequest.setOrchestrationFlowList(orchFlows);
1965 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1966 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1968 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1969 vnf.setVnfId("vnf0");
1970 vnf.setModelCustomizationId("modelCustomizationId");
1971 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1973 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1974 vfModule.setModelCustomizationId("modelCustomizationId");
1975 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1977 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1979 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1982 SPY_workflowAction.selectExecutionList(execution);
1983 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1984 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1988 public void selectExecutionListMacroResumeTest() throws Exception {
1989 String gAction = "createInstance";
1990 String resource = "Service";
1991 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1992 initExecution(gAction, bpmnRequest, false);
1993 execution.setVariable("requestUri", "v6/serviceInstances/123");
1995 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1996 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1997 northBoundRequest.setOrchestrationFlowList(orchFlows);
1999 Service service = new Service();
2000 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2002 ServiceInstance si = new ServiceInstance();
2004 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
2005 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
2007 String flowsToExecuteString =
2008 "[{\"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\"}}]";
2009 ObjectMapper om = new ObjectMapper();
2010 List<ExecuteBuildingBlock> flowsToExecute = null;
2012 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
2013 flowsToExecute = Arrays.asList(asArray);
2014 } catch (Exception e) {
2015 e.printStackTrace();
2018 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
2020 workflowAction.selectExecutionList(execution);
2021 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2022 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
2026 public void getRelatedResourcesInVfModuleTest() throws Exception {
2027 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
2028 vnfc.setModelInvariantId("modelInvariantId");
2029 vnfc.setVnfcName("testVnfcName");
2031 String vfncPayload =
2032 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
2033 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
2035 String configurationPayload =
2036 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
2037 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
2038 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
2039 configurationResultWrappers.add(configurationWrapper);
2041 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
2042 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
2044 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
2046 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
2047 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
2048 assertEquals("testConfigurationId", configuration.getConfigurationId());
2052 * WorkflowActionBB Tests
2056 public void pluralTest() {
2057 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
2058 "networks, Network", "invalidNames, invalidNames");
2059 items.forEach(item -> {
2060 String[] split = item.split(",");
2061 String type = split[0].trim();
2062 String expected = split[1].trim();
2063 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
2068 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
2069 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2071 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
2072 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2073 executeFlows.add(ebb);
2075 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
2076 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2077 executeFlows.add(ebb2);
2079 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
2080 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2081 executeFlows.add(ebb3);
2083 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
2084 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2085 executeFlows.add(ebb4);
2087 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
2088 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2089 executeFlows.add(ebb5);
2091 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
2092 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2093 executeFlows.add(ebb6);
2095 List<ExecuteBuildingBlock> sorted =
2096 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
2097 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
2098 "CreateNetworkBB", "ActivateNetworkBB");
2102 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
2103 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2105 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
2106 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2107 executeFlows.add(ebb);
2109 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
2110 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2111 executeFlows.add(ebb2);
2113 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
2114 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2115 executeFlows.add(ebb3);
2117 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
2118 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2119 executeFlows.add(ebb4);
2121 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
2122 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2123 executeFlows.add(ebb5);
2125 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
2126 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2127 executeFlows.add(ebb6);
2129 List<ExecuteBuildingBlock> sorted =
2130 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
2131 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
2132 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
2136 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
2137 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2138 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
2139 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
2140 northBoundRequest.setOrchestrationFlowList(orchFlows);
2141 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
2142 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
2144 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
2145 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
2146 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
2147 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
2148 WorkflowType.VNF, false, "my-custom-cloud-owner");
2149 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
2150 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
2151 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
2152 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
2153 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
2154 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
2155 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
2156 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
2157 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
2158 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
2162 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
2163 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2164 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2165 northBoundRequest.setOrchestrationFlowList(orchFlows);
2166 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
2167 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
2169 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
2170 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
2171 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
2175 public void extractResourceIdAndTypeFromUriTest() {
2176 String uri = "/v6/serviceInstances/123";
2177 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
2178 String uri3 = "/v6/serviceInstances";
2179 String uri4 = "/v6/serviceInstances/assign";
2180 String uri5 = "'/v6/serviceInstances/123/vnfs";
2181 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
2182 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
2183 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
2184 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
2185 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2186 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2187 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
2188 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
2189 assertEquals(expected1.getResourceId(), result.getResourceId());
2190 assertEquals(expected1.getResourceType(), result.getResourceType());
2191 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
2192 assertEquals(expected2.getResourceId(), result.getResourceId());
2193 assertEquals(expected2.getResourceType(), result.getResourceType());
2194 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
2195 assertEquals("Service", result.getResourceType().toString());
2196 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2197 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
2198 assertEquals("Service", result.getResourceType().toString());
2199 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2200 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
2201 assertEquals("Vnf", result.getResourceType().toString());
2202 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2203 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
2204 assertEquals(expected3.getResourceId(), result.getResourceId());
2205 assertEquals(expected3.getResourceType(), result.getResourceType());
2206 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
2207 assertEquals(expected4.getResourceId(), result.getResourceId());
2208 assertEquals(expected4.getResourceType(), result.getResourceType());
2209 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
2210 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2211 assertEquals("VfModule", result.getResourceType().toString());
2216 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
2217 this.expectedException.expect(IllegalArgumentException.class);
2218 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
2219 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
2223 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
2224 this.expectedException.expect(IllegalArgumentException.class);
2225 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
2226 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2230 public void extractResourceIdAndTypeFromUriResumeTest() {
2231 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2232 "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");
2233 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2237 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2238 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2239 "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");
2240 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2244 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2245 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2246 "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");
2247 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2251 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2252 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2253 "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");
2254 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2258 public void isUriResumeTest() {
2259 assertTrue(workflowAction.isUriResume(
2260 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2261 assertTrue(workflowAction.isUriResume(
2262 " 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"));
2264 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2268 public void isRequestMacroServiceResumeTest() {
2269 ServiceInstance si = new ServiceInstance();
2270 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2271 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2272 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2276 public void populateResourceIdsFromApiHandlerTest() {
2277 execution.setVariable("serviceInstanceId", "123");
2278 execution.setVariable("vnfId", "888");
2279 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2280 assertEquals("123", x.getServiceInstanceId());
2281 assertEquals("888", x.getVnfId());
2282 assertNull(x.getVolumeGroupId());
2286 public void handleRuntimeExceptionTest() {
2287 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2288 execution.setVariable("testProcessKey", "testProcessKeyValue");
2290 workflowAction.handleRuntimeException(execution);
2291 } catch (BpmnError wfe) {
2292 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2296 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2297 List<OrchestrationFlow> result = new ArrayList<>();
2298 int sequenceNumber = 1;
2299 for (String flowName : flowNames) {
2300 OrchestrationFlow orchFlow = new OrchestrationFlow();
2301 orchFlow.setFlowName(flowName);
2302 orchFlow.setSequenceNumber(sequenceNumber++);
2303 result.add(orchFlow);
2308 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2309 for (int i = 0; i < ebbs.size(); i++) {
2310 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2312 assertEquals(ebbs.size(), flowNames.length);
2315 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2316 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2317 execution.setVariable("requestAction", gAction);
2318 execution.setVariable("bpmnRequest", bpmnRequest);
2319 execution.setVariable("aLaCarte", isAlaCarte);
2320 execution.setVariable("apiVersion", "7");
2323 private String readBpmnRequestFromFile(String fileName) throws IOException {
2324 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2327 private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
2328 List<Resource> resourceList = new ArrayList<>();
2329 Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
2330 resourceList.add(r1);
2331 Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2332 resourceList.add(r2);
2333 Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
2334 resourceList.add(r3);
2335 Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
2336 resourceList.add(r4);
2337 Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
2338 resourceList.add(r5);
2339 Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
2340 resourceList.add(r6);
2342 Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2343 resourceList.add(r7);
2346 r3.setProcessingPriority(2);
2347 r4.setProcessingPriority(1);
2348 r5.setProcessingPriority(4);
2349 r5.setBaseVfModule(true);
2350 r6.setProcessingPriority(3);
2352 return resourceList;