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.Spy;
70 import org.onap.aai.domain.yang.Relationship;
71 import org.onap.aai.domain.yang.RelationshipList;
72 import org.onap.aai.domain.yang.ServiceInstance;
73 import org.onap.aai.domain.yang.VfModule;
74 import org.onap.aai.domain.yang.VolumeGroup;
75 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
76 import org.onap.aaiclient.client.aai.entities.Relationships;
77 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
78 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
79 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
80 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
81 import org.onap.so.bpmn.BaseTaskTest;
82 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
83 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
84 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
85 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
86 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
87 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
88 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
89 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
90 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
91 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
92 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
93 import org.onap.so.db.catalog.beans.CollectionResource;
94 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
95 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
96 import org.onap.so.db.catalog.beans.ConfigurationResource;
97 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
98 import org.onap.so.db.catalog.beans.CvnfcCustomization;
99 import org.onap.so.db.catalog.beans.HeatEnvironment;
100 import org.onap.so.db.catalog.beans.HeatTemplate;
101 import org.onap.so.db.catalog.beans.InstanceGroup;
102 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
103 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
104 import org.onap.so.db.catalog.beans.Service;
105 import org.onap.so.db.catalog.beans.VfModuleCustomization;
106 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
107 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
108 import org.onap.so.serviceinstancebeans.RequestDetails;
109 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
110 import org.springframework.core.env.Environment;
112 public class WorkflowActionTest extends BaseTaskTest {
114 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
115 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
116 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
117 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
118 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
119 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
120 "VfModuleReplaceRebuildVolumeGroups.json";
121 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
122 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
123 private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
124 private static final String MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE =
125 "Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
128 protected Environment environment;
130 protected UserParamsServiceTraversal userParamsServiceTraversal;
133 private AaiResourceIdValidator aaiResourceIdValidator;
135 protected WorkflowAction workflowAction;
137 private DelegateExecution execution;
141 protected WorkflowAction SPY_workflowAction;
144 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
148 protected VnfEBBLoader vnfEBBLoaderSpy;
152 protected ServiceEBBLoader serviceEBBLoader;
155 public ExpectedException thrown = ExpectedException.none();
157 private String RESOURCE_PATH = "src/test/resources/__files/";
159 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
160 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
161 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
162 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
163 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
164 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
165 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
166 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
167 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
168 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
169 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
170 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
171 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
172 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
175 public void before() throws Exception {
176 execution = new DelegateExecutionFake();
177 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
178 servInstance.setServiceInstanceId("TEST");
179 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
180 workflowAction.setBbInputSetupUtils(bbSetupUtils);
181 workflowAction.setBbInputSetup(bbInputSetup);
189 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
190 String gAction = "createInstance";
191 String resource = "Network";
192 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
193 initExecution(gAction, bpmnRequest, true);
194 execution.setVariable("requestUri", "v6/networks/123");
196 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
197 List<OrchestrationFlow> orchFlows =
198 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
199 northBoundRequest.setOrchestrationFlowList(orchFlows);
201 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
202 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
204 workflowAction.selectExecutionList(execution);
205 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
206 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
210 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
211 String gAction = "deleteInstance";
212 String resource = "Network";
213 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
214 initExecution(gAction, bpmnRequest, true);
215 execution.setVariable("requestUri", "v6/networks/123");
217 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
218 List<OrchestrationFlow> orchFlows =
219 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
220 northBoundRequest.setOrchestrationFlowList(orchFlows);
222 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
223 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
225 workflowAction.selectExecutionList(execution);
226 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
227 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
231 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
232 String gAction = "createInstance";
233 String resource = "Service";
234 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
235 initExecution(gAction, bpmnRequest, true);
236 execution.setVariable("requestUri", "v6/serviceInstances/123");
239 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
240 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
241 northBoundRequest.setOrchestrationFlowList(orchFlows);
243 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
244 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
245 workflowAction.selectExecutionList(execution);
246 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
247 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
251 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
252 String gAction = "createInstance";
253 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
254 initExecution(gAction, bpmnRequest, true);
255 execution.setVariable("requestUri", "v6/serviceInstances");
257 doThrow(new DuplicateNameException(
258 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
259 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
260 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
262 SPY_workflowAction.selectExecutionList(execution);
263 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
264 "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.");
266 // verify default values are present in failure case
267 assertEquals(true, execution.getVariable("isTopLevelFlow"));
268 assertEquals(false, execution.getVariable("sentSyncResponse"));
272 * SERVICE MACRO TESTS
275 public void selectExecutionListServiceMacroAssignTest() throws Exception {
276 String gAction = "assignInstance";
277 String resource = "Service";
278 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
279 initExecution(gAction, bpmnRequest, false);
280 execution.setVariable("requestUri", "v6/serviceInstances/123");
282 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
283 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
284 "AssignVolumeGroupBB", "AssignVfModuleBB");
285 northBoundRequest.setOrchestrationFlowList(orchFlows);
287 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
288 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
289 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
290 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
291 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
292 HeatTemplate volumeHeatTemplate = new HeatTemplate();
293 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
294 vfModuleCustomization.setVfModule(vfModule);
296 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
297 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
298 HeatEnvironment heatEnvironment = new HeatEnvironment();
299 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
300 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
301 HeatTemplate moduleHeatTemplate = new HeatTemplate();
302 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
303 vfModuleCustomization2.setVfModule(vfModule2);
305 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
306 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
308 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
309 .thenReturn(prepareListWithResources(false, false));
310 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
311 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
312 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
313 .thenReturn(vfModuleCustomization);
314 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
315 .thenReturn(vfModuleCustomization2);
316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
317 .thenReturn(vfModuleCustomization3);
319 workflowAction.selectExecutionList(execution);
320 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
321 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
322 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
326 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
327 String gAction = "assignInstance";
328 String resource = "Service";
329 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
330 initExecution(gAction, bpmnRequest, false);
331 execution.setVariable("requestUri", "v6/serviceInstances/123");
333 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
334 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
335 "AssignVolumeGroupBB", "AssignVfModuleBB");
336 northBoundRequest.setOrchestrationFlowList(orchFlows);
338 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
339 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
340 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
341 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
342 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
343 HeatTemplate volumeHeatTemplate = new HeatTemplate();
344 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
345 vfModuleCustomization.setVfModule(vfModule);
347 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
348 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
349 HeatEnvironment heatEnvironment = new HeatEnvironment();
350 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
351 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
352 HeatTemplate moduleHeatTemplate = new HeatTemplate();
353 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
354 vfModuleCustomization2.setVfModule(vfModule2);
356 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
357 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
359 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
360 .thenReturn(prepareListWithResources(false, false));
361 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
362 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
363 false, "att-aic")).thenReturn(northBoundRequest);
364 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
365 .thenReturn(vfModuleCustomization);
366 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
367 .thenReturn(vfModuleCustomization2);
368 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
369 .thenReturn(vfModuleCustomization3);
370 workflowAction.selectExecutionList(execution);
371 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
372 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
373 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
377 public void selectExecutionListServiceMacroActivateTest() throws Exception {
378 String gAction = "activateInstance";
379 String resource = "Service";
380 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
381 initExecution(gAction, bpmnRequest, false);
382 execution.setVariable("requestUri", "v6/serviceInstances/si0");
384 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
385 List<OrchestrationFlow> orchFlows =
386 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
387 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
388 northBoundRequest.setOrchestrationFlowList(orchFlows);
390 ServiceInstance serviceInstanceAAI = new ServiceInstance();
391 serviceInstanceAAI.setServiceInstanceId("si0");
392 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
393 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
394 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
395 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
396 vnf.setVnfId("vnf0");
398 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
399 vnf.getVfModules().add(vfModule);
400 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
401 vnf.getVfModules().add(vfModule2);
403 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
404 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
405 volumeGroup.setVolumeGroupId("volumeGroup0");
406 vnf.getVolumeGroups().add(volumeGroup);
408 serviceInstanceMSO.getVnfs().add(vnf);
410 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
411 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
412 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
413 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
414 workflowAction.selectExecutionList(execution);
415 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
416 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
417 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
418 "ActivateServiceInstanceBB");
419 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
420 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
421 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
422 assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
423 assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
424 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
425 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
426 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
430 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
431 String gAction = "deactivateInstance";
432 String resource = "Service";
433 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
434 initExecution(gAction, bpmnRequest, false);
435 execution.setVariable("requestUri", "v6/serviceInstances/123");
437 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
438 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
439 northBoundRequest.setOrchestrationFlowList(orchFlows);
441 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
442 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
443 workflowAction.selectExecutionList(execution);
444 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
445 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
449 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
450 String gAction = "createInstance";
451 String resource = "Service";
452 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
453 initExecution(gAction, bpmnRequest, false);
454 execution.setVariable("requestUri", "v6/serviceInstances/123");
456 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
457 northBoundRequest.setIsToplevelflow(true);
458 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
459 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
460 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
461 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
462 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
463 northBoundRequest.setOrchestrationFlowList(orchFlows);
465 Service service = new Service();
466 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
467 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
468 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
469 workflowAction.selectExecutionList(execution);
470 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
471 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
475 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
476 String gAction = "createInstance";
477 String resource = "Service";
478 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
479 initExecution(gAction, bpmnRequest, false);
480 execution.setVariable("requestUri", "v6/serviceInstances/123");
482 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
483 northBoundRequest.setIsToplevelflow(true);
484 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
485 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
486 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
487 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
488 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
489 northBoundRequest.setOrchestrationFlowList(orchFlows);
491 Service service = new Service();
492 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
493 networkCustomization.setModelCustomizationUUID("1234");
494 service.getNetworkCustomizations().add(networkCustomization);
495 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
496 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
497 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
499 workflowAction.selectExecutionList(execution);
500 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
501 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
502 "ActivateNetworkBB", "ActivateServiceInstanceBB");
506 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
507 String gAction = "createInstance";
508 String resource = "Service";
509 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
510 initExecution(gAction, bpmnRequest, false);
511 execution.setVariable("requestUri", "v6/serviceInstances/123");
513 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
514 northBoundRequest.setIsToplevelflow(true);
515 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
516 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
517 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
518 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
519 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
520 northBoundRequest.setOrchestrationFlowList(orchFlows);
522 Service service = new Service();
523 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
524 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
525 networkCust.setModelCustomizationUUID("123");
526 networkCustomizations.add(networkCust);
527 service.setNetworkCustomizations(networkCustomizations);
528 NetworkCollectionResourceCustomization collectionResourceCustomization =
529 new NetworkCollectionResourceCustomization();
530 collectionResourceCustomization.setModelCustomizationUUID("123");
532 CollectionResource collectionResource = new CollectionResource();
533 collectionResource.setToscaNodeType("NetworkCollection");
534 InstanceGroup instanceGroup = new InstanceGroup();
535 instanceGroup.setToscaNodeType("NetworkCollectionResource");
536 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
537 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
538 new CollectionNetworkResourceCustomization();
539 collectionNetworkResourceCust.setModelCustomizationUUID("123");
540 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
541 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
542 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
543 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
544 new CollectionResourceInstanceGroupCustomization();
545 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
546 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
547 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
548 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
549 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
550 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
551 collectionResource.setInstanceGroup(instanceGroup);
552 collectionResourceCustomization.setCollectionResource(collectionResource);;
553 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
554 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
555 doReturn(collectionResourceCustomization).when(catalogDbClient)
556 .getNetworkCollectionResourceCustomizationByID("123");
557 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
558 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
559 workflowAction.selectExecutionList(execution);
560 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
561 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
562 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
563 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
564 "ActivateServiceInstanceBB");
565 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
566 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
567 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
568 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
569 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
571 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
574 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
575 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
576 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
577 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
578 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
580 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
583 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
584 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
585 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
586 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
587 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
589 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
595 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
596 String gAction = "createInstance";
597 String resource = "Service";
598 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
599 initExecution(gAction, bpmnRequest, false);
600 execution.setVariable("requestUri", "v6/serviceInstances/123");
602 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
603 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
604 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
605 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
606 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
607 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
608 northBoundRequest.setOrchestrationFlowList(orchFlows);
610 Service service = new Service();
611 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
613 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
614 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
615 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
616 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
617 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
618 HeatTemplate volumeHeatTemplate = new HeatTemplate();
619 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
620 vfModuleCustomization.setVfModule(vfModule);
622 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
623 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
624 HeatEnvironment heatEnvironment = new HeatEnvironment();
625 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
626 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
627 HeatTemplate moduleHeatTemplate = new HeatTemplate();
628 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
629 vfModuleCustomization2.setVfModule(vfModule2);
631 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
632 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
634 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
635 .thenReturn(prepareListWithResources(false, false));
636 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
637 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
638 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
639 .thenReturn(vfModuleCustomization);
640 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
641 .thenReturn(vfModuleCustomization2);
642 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
643 .thenReturn(vfModuleCustomization3);
644 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
645 workflowAction.selectExecutionList(execution);
646 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
647 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
648 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
649 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
650 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
651 "ActivateServiceInstanceBB");
653 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
654 int randomUUIDLength = UUID.randomUUID().toString().length();
655 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
656 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
657 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
658 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
659 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
660 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
661 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
662 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
663 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
664 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
665 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
666 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
667 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
668 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
669 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
670 assertEquals(true, execution.getVariable("homing"));
674 public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
675 String gAction = "createInstance";
676 String resource = "Service";
677 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
678 initExecution(gAction, bpmnRequest, false);
679 execution.setVariable("requestUri", "v6/serviceInstances/123");
681 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
682 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
683 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
684 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
685 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
686 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
687 "ActivateServiceInstanceBB");
688 northBoundRequest.setOrchestrationFlowList(orchFlows);
690 Service service = new Service();
691 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
693 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
694 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
695 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
696 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
697 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
698 HeatTemplate volumeHeatTemplate = new HeatTemplate();
699 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
700 vfModuleCustomization.setVfModule(vfModule);
702 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
703 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
704 HeatEnvironment heatEnvironment = new HeatEnvironment();
705 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
706 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
707 HeatTemplate moduleHeatTemplate = new HeatTemplate();
708 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
709 vfModuleCustomization2.setVfModule(vfModule2);
711 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
712 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
714 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
715 .thenReturn(prepareListWithResources(true, true));
716 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
717 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
718 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
719 .thenReturn(vfModuleCustomization);
720 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
721 .thenReturn(vfModuleCustomization2);
722 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
723 .thenReturn(vfModuleCustomization3);
724 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
725 workflowAction.selectExecutionList(execution);
726 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
727 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
728 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
729 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
730 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
731 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
733 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
734 int randomUUIDLength = UUID.randomUUID().toString().length();
735 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
736 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
737 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
738 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
739 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
740 assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
741 assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
742 assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
743 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
744 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
745 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
746 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
747 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
748 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
749 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
750 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
751 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
752 assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
753 assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
754 assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
755 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
756 assertEquals(true, execution.getVariable("homing"));
760 public void selectExecutionListServiceMacroCreateWithMultipleSameModelVnfAndVfModules() throws Exception {
761 String gAction = "createInstance";
762 String resource = "Service";
763 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE);
764 initExecution(gAction, bpmnRequest, false);
765 execution.setVariable("requestUri", "v7/serviceInstances");
766 execution.setVariable("serviceInstanceId", UUID.randomUUID().toString());
768 // Service-Macro-Create
769 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
770 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
771 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "ControllerExecutionBB",
772 "AssignPnfBB", "WaitForPnfReadyBB", "ControllerExecutionBB", "ControllerExecutionBB", "ActivatePnfBB",
773 "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
774 "CreateVfModuleBB", "ActivateVfModuleBB", "ControllerExecutionBB", "ActivateVnfBB",
775 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
776 orchFlows.get(6).setBpmnAction("config-assign");
777 orchFlows.get(6).setBpmnScope("vnf");
778 orchFlows.get(9).setBpmnAction("config-assign");
779 orchFlows.get(9).setBpmnScope("pnf");
780 orchFlows.get(10).setBpmnAction("config-deploy");
781 orchFlows.get(10).setBpmnScope("pnf");
782 orchFlows.get(18).setBpmnAction("config-deploy");
783 orchFlows.get(18).setBpmnScope("vnf");
784 northBoundRequest.setOrchestrationFlowList(orchFlows);
786 Service service = new Service();
787 service.setModelUUID("f2444885-3c76-4ddc-8668-7741c0631495");
789 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
790 vfModuleCustomization.setModelCustomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0");
791 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
792 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
793 vfModule.setVolumeHeatTemplate(new HeatTemplate());
794 vfModuleCustomization.setVfModule(vfModule);
796 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
797 vfModuleCustomization2.setModelCustomizationUUID("83677d89-428a-407b-b4ec-738e68275d84");
798 vfModuleCustomization2.setHeatEnvironment(new HeatEnvironment());
799 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
800 vfModule2.setModuleHeatTemplate(new HeatTemplate());
801 vfModuleCustomization2.setVfModule(vfModule2);
803 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
804 false, "DEFAULT")).thenReturn(northBoundRequest);
805 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0"))
806 .thenReturn(vfModuleCustomization);
807 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("83677d89-428a-407b-b4ec-738e68275d84"))
808 .thenReturn(vfModuleCustomization2);
809 when(catalogDbClient.getServiceByID("f2444885-3c76-4ddc-8668-7741c0631495")).thenReturn(service);
812 Resource serviceResource =
813 new Resource(WorkflowType.SERVICE, "f2444885-3c76-4ddc-8668-7741c0631495", false, null);
814 Resource vnfResource1 =
815 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
816 vnfResource1.setInstanceName("vnf-instanceName-1");
817 Resource vfmResource1 =
818 new Resource(WorkflowType.VFMODULE, "3bd19000-6d21-49f1-9eb3-ea76a6eac5e0", false, vnfResource1);
819 vfmResource1.setInstanceName("demo-network-1");
820 Resource vfmResource2 =
821 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource1);
822 vfmResource2.setInstanceName("demo-1");
823 Resource vnfResource2 =
824 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
825 vnfResource2.setInstanceName("vnf-instanceName-2");
826 Resource vfmResource3 =
827 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
828 vfmResource3.setInstanceName("demo-2");
829 Resource vfmResource4 =
830 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
831 vfmResource4.setInstanceName("demo-3");
833 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), any()))
834 .thenReturn(Arrays.asList(serviceResource, vnfResource1, vnfResource2, vfmResource1, vfmResource2,
835 vfmResource3, vfmResource4));
837 workflowAction.selectExecutionList(execution);
839 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
841 Map<String, List<ExecuteBuildingBlock>> flowNamesToEbbList =
842 ebbs.stream().collect(Collectors.groupingBy(e -> e.getBuildingBlock().getBpmnFlowName()));
844 assertEquals(1, flowNamesToEbbList.get("AssignServiceInstanceBB").size());
845 assertEquals(2, flowNamesToEbbList.get("AssignVnfBB").size());
846 assertEquals(4, flowNamesToEbbList.get("AssignVfModuleBB").size());
847 assertEquals(4, flowNamesToEbbList.get("ControllerExecutionBB").size());
848 assertEquals(4, flowNamesToEbbList.get("CreateVfModuleBB").size());
849 assertEquals(4, flowNamesToEbbList.get("ActivateVfModuleBB").size());
850 assertEquals(2, flowNamesToEbbList.get("ActivateVnfBB").size());
851 assertEquals(1, flowNamesToEbbList.get("ActivateServiceInstanceBB").size());
853 String vnfInstanceId1 = flowNamesToEbbList.get("AssignVnfBB").get(0).getWorkflowResourceIds().getVnfId();
854 String vnfInstanceId2 = flowNamesToEbbList.get("AssignVnfBB").get(1).getWorkflowResourceIds().getVnfId();
856 // should be 3 = 1 AssignVfModuleBB + 1 CreateVfModuleBB + 1 ActivateVfModuleBB
857 boolean allEbbsForVfModule1HaveCorrectParentVnfId =
858 3 == ebbs.stream().map(ExecuteBuildingBlock::getWorkflowResourceIds)
859 .filter(w -> "demo-network-1".equals(w.getVfModuleInstanceName())
860 && vnfInstanceId1.equals(w.getVnfId()))
862 boolean allEbbsForVfModule2HaveCorrectParentVnfId = 3 == ebbs.stream()
863 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
864 .filter(w -> "demo-1".equals(w.getVfModuleInstanceName()) && vnfInstanceId1.equals(w.getVnfId()))
866 boolean allEbbsForVfModule3HaveCorrectParentVnfId = 3 == ebbs.stream()
867 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
868 .filter(w -> "demo-2".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
870 boolean allEbbsForVfModule4HaveCorrectParentVnfId = 3 == ebbs.stream()
871 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
872 .filter(w -> "demo-3".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
874 assertTrue(allEbbsForVfModule1HaveCorrectParentVnfId);
875 assertTrue(allEbbsForVfModule2HaveCorrectParentVnfId);
876 assertTrue(allEbbsForVfModule3HaveCorrectParentVnfId);
877 assertTrue(allEbbsForVfModule4HaveCorrectParentVnfId);
879 boolean controllerExecutionBBsforVnf1HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
880 .filter(e -> vnfInstanceId1.equals(e.getWorkflowResourceIds().getVnfId()))
881 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
882 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
883 assertTrue(controllerExecutionBBsforVnf1HaveCorrectVnfId);
885 boolean controllerExecutionBBsforVnf2HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
886 .filter(e -> vnfInstanceId2.equals(e.getWorkflowResourceIds().getVnfId()))
887 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
888 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
889 assertTrue(controllerExecutionBBsforVnf2HaveCorrectVnfId);
893 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
894 String gAction = "deleteInstance";
895 String resource = "Service";
896 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
897 initExecution(gAction, bpmnRequest, false);
898 execution.setVariable("requestUri", "v6/serviceInstances/123");
900 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
901 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
902 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
903 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
904 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
905 "UnassignServiceInstanceBB");
906 northBoundRequest.setOrchestrationFlowList(orchFlows);
908 ServiceInstance serviceInstanceAAI = new ServiceInstance();
909 serviceInstanceAAI.setServiceInstanceId("aaisi123");
910 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
911 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
912 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
913 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
914 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
915 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
916 vnf.setVnfId("vnfId123");
917 pnf.setPnfId("pnfId123");
919 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
920 vnf.getVfModules().add(vfModule);
921 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
922 vnf.getVfModules().add(vfModule2);
924 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
925 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
926 volumeGroup.setVolumeGroupId("vg123");
927 vnf.getVolumeGroups().add(volumeGroup);
929 serviceInstanceMSO.getVnfs().add(vnf);
930 serviceInstanceMSO.getPnfs().add(pnf);
932 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
933 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
934 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
935 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
936 workflowAction.selectExecutionList(execution);
937 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
938 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
939 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
940 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
941 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
945 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
946 String gAction = "deleteInstance";
947 String resource = "Service";
948 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
949 initExecution(gAction, bpmnRequest, false);
950 execution.setVariable("requestUri", "v6/serviceInstances/123");
952 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
953 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
954 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
955 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
956 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
957 "UnassignServiceInstanceBB");
958 northBoundRequest.setOrchestrationFlowList(orchFlows);
960 ServiceInstance serviceInstanceAAI = new ServiceInstance();
961 serviceInstanceAAI.setServiceInstanceId("aaisi123");
962 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
963 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
964 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
965 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
966 pnf.setPnfId("pnfId123");
968 serviceInstanceMSO.getPnfs().add(pnf);
970 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
971 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
972 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
973 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
974 workflowAction.selectExecutionList(execution);
975 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
976 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
980 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
981 String gAction = "unassignInstance";
982 String resource = "Service";
983 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
984 initExecution(gAction, bpmnRequest, false);
985 execution.setVariable("requestUri", "v6/serviceInstances/123");
987 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
988 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
989 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
990 northBoundRequest.setOrchestrationFlowList(orchFlows);
992 ServiceInstance serviceInstanceAAI = new ServiceInstance();
993 serviceInstanceAAI.setServiceInstanceId("aaisi123");
994 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
995 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
996 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
997 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
998 vnf.setVnfId("vnfId123");
1000 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
1001 vnf.getVfModules().add(vfModule);
1002 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
1003 vnf.getVfModules().add(vfModule2);
1005 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
1006 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
1007 volumeGroup.setVolumeGroupId("vg123");
1008 vnf.getVolumeGroups().add(volumeGroup);
1010 serviceInstanceMSO.getVnfs().add(vnf);
1012 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1013 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1014 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1015 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1016 workflowAction.selectExecutionList(execution);
1017 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1018 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
1019 "UnassignVnfBB", "UnassignServiceInstanceBB");
1023 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
1024 String gAction = "deleteInstance";
1025 String resource = "Service";
1026 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
1027 initExecution(gAction, bpmnRequest, false);
1028 execution.setVariable("requestUri", "v6/serviceInstances/123");
1030 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1031 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1032 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
1033 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
1034 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1035 northBoundRequest.setOrchestrationFlowList(orchFlows);
1037 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1038 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1039 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1040 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1042 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
1043 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1044 network.setNetworkId("123");
1045 serviceInstanceMSO.getNetworks().add(network);
1046 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
1047 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1048 network2.setNetworkId("321");
1049 serviceInstanceMSO.getNetworks().add(network2);
1051 Collection collection = new Collection();
1052 serviceInstanceMSO.setCollection(collection);
1054 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1055 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1056 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1057 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1058 workflowAction.selectExecutionList(execution);
1059 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1060 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1061 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
1062 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
1066 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
1067 String gAction = "recreateInstance";
1068 String resource = "Vnf";
1069 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1070 initExecution(gAction, bpmnRequest, false);
1071 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
1072 execution.setVariable("serviceInstanceId", "123");
1073 execution.setVariable("vnfId", "1234");
1075 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1076 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1077 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1078 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1079 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1080 "AAIUnsetVnfInMaintBB");
1081 northBoundRequest.setOrchestrationFlowList(orchFlows);
1083 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1084 serviceInstanceAAI.setServiceInstanceId("123");
1085 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1086 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1087 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1088 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1089 vnf.setVnfId("1234");
1091 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1092 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1093 vfModule.setVfModuleId("vfModule1");
1094 vnf.getVfModules().add(vfModule);
1095 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1096 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1097 vfModule2.setVfModuleId("vfModule2");
1098 vnf.getVfModules().add(vfModule2);
1100 serviceInstanceMSO.getVnfs().add(vnf);
1102 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1103 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1104 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1105 false, "cloud-owner")).thenReturn(northBoundRequest);
1106 workflowAction.selectExecutionList(execution);
1107 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1108 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1109 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
1110 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1111 "AAIUnsetVnfInMaintBB");
1115 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
1116 String gAction = "replaceInstance";
1117 String resource = "Vnf";
1118 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1119 initExecution(gAction, bpmnRequest, false);
1120 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
1121 execution.setVariable("serviceInstanceId", "123");
1122 execution.setVariable("vnfId", "1234");
1124 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1125 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1126 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1127 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1128 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1129 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1130 "AAIUnsetVnfInMaintBB");
1131 northBoundRequest.setOrchestrationFlowList(orchFlows);
1133 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1134 serviceInstanceAAI.setServiceInstanceId("123");
1135 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1136 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1137 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1138 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1139 vnf.setVnfId("1234");
1140 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1141 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1142 vfModule.setVfModuleId("vfModule1");
1143 vnf.getVfModules().add(vfModule);
1144 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1145 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1146 vfModule2.setVfModuleId("vfModule2");
1147 vnf.getVfModules().add(vfModule2);
1148 serviceInstanceMSO.getVnfs().add(vnf);
1149 VfModule vfModuleAAI = new VfModule();
1150 vfModuleAAI.setVfModuleId("vfModule2");
1151 RelationshipList relationshipList = new RelationshipList();
1152 Relationship relationship = new Relationship();
1153 relationshipList.getRelationship().add(relationship);
1154 vfModuleAAI.setRelationshipList(relationshipList);
1155 Relationships relationships = new Relationships("abc");
1156 Configuration config = new Configuration();
1157 config.setConfigurationId("configId");
1158 Optional<Configuration> configOp = Optional.of(config);
1159 Optional<Relationships> relationshipsOp = Optional.of(relationships);
1161 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
1162 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
1163 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
1164 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1165 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1166 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1167 false, "cloud-owner")).thenReturn(northBoundRequest);
1168 workflowAction.selectExecutionList(execution);
1169 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1170 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1171 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1172 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
1173 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1174 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1175 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1176 "AAIUnsetVnfInMaintBB");
1177 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
1178 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
1184 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
1185 String gAction = "createInstance";
1186 String resource = "NetworkCollection";
1187 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1188 initExecution(gAction, bpmnRequest, false);
1189 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1191 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1192 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
1193 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
1194 northBoundRequest.setOrchestrationFlowList(orchFlows);
1196 Service service = new Service();
1197 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1198 CollectionResource collectionResource = new CollectionResource();
1199 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1200 collectionResourceCustomization.setCollectionResource(collectionResource);
1201 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1203 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1204 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1205 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1206 workflowAction.selectExecutionList(execution);
1207 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1208 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
1209 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
1210 "ActivateNetworkCollectionBB");
1215 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
1216 String gAction = "deleteInstance";
1217 String resource = "NetworkCollection";
1218 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1219 initExecution(gAction, bpmnRequest, false);
1220 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1222 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1223 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1224 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1225 northBoundRequest.setOrchestrationFlowList(orchFlows);
1227 Service service = new Service();
1228 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1229 CollectionResource collectionResource = new CollectionResource();
1230 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1231 collectionResourceCustomization.setCollectionResource(collectionResource);
1232 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1234 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1235 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1236 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1237 workflowAction.selectExecutionList(execution);
1238 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1239 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1240 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1241 "DeleteNetworkCollectionBB");
1245 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1246 String gAction = "createInstance";
1247 String resource = "VfModule";
1248 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1249 initExecution(gAction, bpmnRequest, true);
1250 execution.setVariable("requestUri",
1251 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1253 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1254 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1255 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1256 northBoundRequest.setOrchestrationFlowList(orchFlows);
1258 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1259 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1260 workflowAction.selectExecutionList(execution);
1261 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1262 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1266 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1267 String gAction = "createInstance";
1268 String resource = "VfModule";
1269 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1270 initExecution(gAction, bpmnRequest, true);
1271 execution.setVariable("requestUri",
1272 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1274 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1275 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1276 "AddFabricConfigurationBB");
1277 northBoundRequest.setOrchestrationFlowList(orchFlows);
1279 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1280 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1281 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1282 new CvnfcConfigurationCustomization();
1283 ConfigurationResource configurationResource = new ConfigurationResource();
1284 configurationResource.setToscaNodeType("FabricConfiguration");
1285 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1286 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1287 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1288 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1289 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1290 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1291 cvnfcCustomization.setDescription("description");
1292 cvnfcCustomizations.add(cvnfcCustomization);
1294 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1295 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1296 new CvnfcConfigurationCustomization();
1297 ConfigurationResource configurationResource2 = new ConfigurationResource();
1298 configurationResource2.setToscaNodeType("FabricConfiguration");
1299 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1300 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1301 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1302 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1303 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1304 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1305 cvnfcCustomization2.setDescription("description2");
1306 cvnfcCustomizations.add(cvnfcCustomization2);
1308 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1309 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1311 workflowAction.selectExecutionList(execution);
1312 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1313 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1319 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1320 String gAction = "replaceInstance";
1321 String resource = "VfModule";
1322 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1323 initExecution(gAction, bpmnRequest, true);
1324 execution.setVariable("requestUri",
1325 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1327 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1328 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1329 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1330 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1331 workflowAction.selectExecutionList(execution);
1332 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1334 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1335 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1336 "ChangeModelServiceInstanceBB");
1340 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1341 String gAction = "replaceInstanceRetainAssignments";
1342 String resource = "VfModule";
1343 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1344 initExecution(gAction, bpmnRequest, true);
1345 execution.setVariable("requestUri",
1346 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1348 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1349 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1350 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1351 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1352 workflowAction.selectExecutionList(execution);
1353 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1355 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1356 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1360 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1361 String gAction = "replaceInstance";
1362 String resource = "VfModule";
1363 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1364 initExecution(gAction, bpmnRequest, true);
1365 execution.setVariable("requestUri",
1366 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1367 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1368 execution.setVariable("vfModuleId", "1234");
1370 VolumeGroup volumeGroup = new VolumeGroup();
1371 volumeGroup.setVolumeGroupId("volumeGroupId");
1372 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1373 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1374 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1375 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1376 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1377 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1378 workflowAction.selectExecutionList(execution);
1379 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1381 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1382 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1383 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1387 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1389 String gAction = "replaceInstanceRetainAssignments";
1390 String resource = "VfModule";
1391 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1392 initExecution(gAction, bpmnRequest, true);
1393 execution.setVariable("requestUri",
1394 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1395 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1396 execution.setVariable("vfModuleId", "1234");
1398 VolumeGroup volumeGroup = new VolumeGroup();
1399 volumeGroup.setVolumeGroupId("volumeGroupId");
1400 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1401 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1403 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1404 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1405 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1406 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1407 workflowAction.selectExecutionList(execution);
1408 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1410 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1411 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1412 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1416 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1417 String gAction = "replaceInstance";
1418 String resource = "VfModule";
1419 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1420 initExecution(gAction, bpmnRequest, true);
1421 execution.setVariable("requestUri",
1422 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1423 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1424 execution.setVariable("vfModuleId", "1234");
1426 VolumeGroup volumeGroup = new VolumeGroup();
1427 volumeGroup.setVolumeGroupId("volumeGroupId");
1428 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1429 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1431 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1432 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1433 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1434 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1435 vfModuleCustomization.setVfModule(vfModule);
1436 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1437 .thenReturn(vfModuleCustomization);
1439 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1440 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1441 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1442 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1443 workflowAction.selectExecutionList(execution);
1444 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1446 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1447 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1448 "ChangeModelServiceInstanceBB");
1452 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1453 String gAction = "replaceInstance";
1454 String resource = "VfModule";
1455 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1456 initExecution(gAction, bpmnRequest, true);
1457 execution.setVariable("requestUri",
1458 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1459 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1460 execution.setVariable("vfModuleId", "1234");
1462 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1463 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1464 vnf.setModelCustomizationId("modelCustomizationId");
1465 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1467 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1468 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1469 vfModuleFromAAI.setVfModuleId("1234");
1470 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1472 VolumeGroup volumeGroup = new VolumeGroup();
1473 volumeGroup.setVolumeGroupId("volumeGroupId");
1474 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1475 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1477 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1478 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1479 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1480 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1481 vfModuleCustomization.setVfModule(vfModule);
1482 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1483 .thenReturn(vfModuleCustomization);
1484 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1485 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1486 vnfc.setModelInvariantId("modelInvariantId");
1487 vnfc.setVnfcName("testVnfcName");
1489 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1491 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1492 configuration.setConfigurationId("configurationId");
1493 configuration.setModelCustomizationId("modelCustimizationId");
1494 configuration.setConfigurationName("testConfigurationName");
1495 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1497 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1498 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1499 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1500 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1501 SPY_workflowAction.selectExecutionList(execution);
1502 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1504 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1505 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1506 "ChangeModelServiceInstanceBB");
1510 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1511 String gAction = "replaceInstanceRetainAssignments";
1512 String resource = "VfModule";
1513 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1514 initExecution(gAction, bpmnRequest, true);
1515 execution.setVariable("requestUri",
1516 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1517 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1518 execution.setVariable("vfModuleId", "1234");
1520 VolumeGroup volumeGroup = new VolumeGroup();
1521 volumeGroup.setVolumeGroupId("volumeGroupId");
1522 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1523 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1525 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1526 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1527 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1528 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1529 vfModuleCustomization.setVfModule(vfModule);
1530 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1531 .thenReturn(vfModuleCustomization);
1533 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1534 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1535 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1536 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1537 workflowAction.selectExecutionList(execution);
1538 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1540 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1541 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1545 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1546 String gAction = "replaceInstance";
1547 String resource = "VfModule";
1548 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1549 initExecution(gAction, bpmnRequest, true);
1550 execution.setVariable("requestUri",
1551 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1552 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1553 execution.setVariable("vfModuleId", "1234");
1555 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1556 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1557 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1558 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1559 vfModuleCustomization.setVfModule(vfModule);
1560 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1561 .thenReturn(vfModuleCustomization);
1563 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1564 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1565 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1566 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1567 workflowAction.selectExecutionList(execution);
1568 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1570 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1571 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1572 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1576 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1578 String gAction = "replaceInstanceRetainAssignments";
1579 String resource = "VfModule";
1580 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1581 initExecution(gAction, bpmnRequest, true);
1582 execution.setVariable("requestUri",
1583 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1584 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1585 execution.setVariable("vfModuleId", "1234");
1587 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1588 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1589 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1590 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1591 vfModuleCustomization.setVfModule(vfModule);
1592 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1593 .thenReturn(vfModuleCustomization);
1595 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1596 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1597 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1598 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1599 workflowAction.selectExecutionList(execution);
1600 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1602 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1603 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1604 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1608 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1609 String gAction = "replaceInstance";
1610 String resource = "VfModule";
1611 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1612 initExecution(gAction, bpmnRequest, true);
1613 execution.setVariable("requestUri",
1614 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1615 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1616 execution.setVariable("vfModuleId", "1234");
1618 VolumeGroup volumeGroup = new VolumeGroup();
1619 volumeGroup.setVolumeGroupId("volumeGroupId");
1620 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1621 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1623 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1624 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1625 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1626 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1627 vfModuleCustomization.setVfModule(vfModule);
1628 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1629 .thenReturn(vfModuleCustomization);
1631 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1632 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1633 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1634 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1635 workflowAction.selectExecutionList(execution);
1636 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1638 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1639 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1640 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1641 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1645 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1646 String gAction = "replaceInstanceRetainAssignments";
1647 String resource = "VfModule";
1648 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1649 initExecution(gAction, bpmnRequest, true);
1650 execution.setVariable("requestUri",
1651 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1652 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1653 execution.setVariable("vfModuleId", "1234");
1655 VolumeGroup volumeGroup = new VolumeGroup();
1656 volumeGroup.setVolumeGroupId("volumeGroupId");
1657 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1658 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1660 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1661 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1662 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1663 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1664 vfModuleCustomization.setVfModule(vfModule);
1665 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1666 .thenReturn(vfModuleCustomization);
1668 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1669 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1670 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1671 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1672 workflowAction.selectExecutionList(execution);
1673 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1675 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1676 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1677 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1678 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1682 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1683 String gAction = "deleteInstance";
1684 String resource = "VfModule";
1685 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1686 initExecution(gAction, bpmnRequest, true);
1687 execution.setVariable("requestUri",
1688 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1690 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1691 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1692 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1693 northBoundRequest.setOrchestrationFlowList(orchFlows);
1695 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1696 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1698 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1699 vnf.setVnfId("vnf0");
1700 vnf.setModelCustomizationId("modelCustomizationId");
1701 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1703 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1704 vfModule.setModelCustomizationId("modelCustomizationId");
1705 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1707 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1708 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1709 vnfc.setModelInvariantId("modelInvariantId");
1710 vnfc.setVnfcName("testVnfcName");
1712 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1715 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1716 configuration.setConfigurationId("configurationId");
1717 configuration.setModelCustomizationId("modelCustimizationId");
1718 configuration.setConfigurationName("testConfigurationName");
1719 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1722 SPY_workflowAction.selectExecutionList(execution);
1723 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1724 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1725 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1729 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1730 String gAction = "createInstance";
1731 String resource = "VfModule";
1732 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1733 initExecution(gAction, bpmnRequest, true);
1734 execution.setVariable("requestUri",
1735 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1737 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1738 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1739 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1740 northBoundRequest.setOrchestrationFlowList(orchFlows);
1742 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1743 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1744 workflowAction.selectExecutionList(execution);
1745 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1746 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1750 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1751 String gAction = "deleteInstance";
1752 ObjectMapper mapper = new ObjectMapper();
1753 WorkflowType resourceType = WorkflowType.VFMODULE;
1754 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1755 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1756 execution.setVariable("requestAction", gAction);
1757 execution.setVariable("bpmnRequest", bpmnRequest);
1758 execution.setVariable("vnfId", "1234");
1759 execution.setVariable("vfModuleId", "vfModuleId1234");
1760 execution.setVariable("requestUri",
1761 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1762 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1763 RequestDetails requestDetails = sIRequest.getRequestDetails();
1764 String requestAction = "deleteInstance";
1765 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1766 boolean aLaCarte = true;
1767 String apiVersion = "7";
1768 String vnfType = "vnfType";
1769 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1770 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1771 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1772 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1774 thrown.expect(AAIEntityNotFoundException.class);
1775 thrown.expectMessage(containsString(
1776 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1778 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1779 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1781 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1782 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1783 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1784 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1786 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1787 vnf.setVnfId("vnf0");
1788 vnf.setModelCustomizationId("modelCustomizationId");
1789 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1791 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1792 vfModule.setModelCustomizationId("modelCustomizationId");
1793 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1795 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1799 public void getConfigBuildingBlocksTest() throws Exception {
1800 String gAction = "deleteInstance";
1801 ObjectMapper mapper = new ObjectMapper();
1802 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1804 WorkflowType resourceType = WorkflowType.VFMODULE;
1805 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1806 execution.setVariable("requestAction", gAction);
1807 String bpmnRequest =
1808 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1809 execution.setVariable("bpmnRequest", bpmnRequest);
1810 execution.setVariable("vnfId", "1234");
1811 execution.setVariable("vfModuleId", "vfModuleId1234");
1812 execution.setVariable("requestUri",
1813 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1814 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1815 RequestDetails requestDetails = sIRequest.getRequestDetails();
1816 String requestAction = "deleteInstance";
1817 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1818 boolean aLaCarte = true;
1819 String apiVersion = "7";
1820 String vnfType = "vnfType";
1821 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1822 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1823 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1824 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1826 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1827 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1829 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1830 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1831 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1832 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1834 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1835 vnf.setVnfId("vnf0");
1836 vnf.setModelCustomizationId("modelCustomizationId");
1837 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1839 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1840 vfModule.setModelCustomizationId("modelCustomizationId");
1842 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1843 config1.setConfigurationId("config1");
1844 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1845 config2.setConfigurationId("config2");
1847 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1848 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1849 vnfc1.setVnfcName("zauk53avetd02svm001");
1850 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1851 vnfc2.setVnfcName("zauk53avetd02tvm001");
1855 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1856 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1857 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1858 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1859 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1860 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1861 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1863 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1865 assertFalse(results.isEmpty());
1866 assertEquals(2, results.size());
1867 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1868 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1869 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1870 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1874 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1875 String gAction = "deleteInstance";
1876 ObjectMapper mapper = new ObjectMapper();
1877 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1879 WorkflowType resourceType = WorkflowType.VFMODULE;
1880 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1881 execution.setVariable("requestAction", gAction);
1882 String bpmnRequest =
1883 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1884 execution.setVariable("bpmnRequest", bpmnRequest);
1885 execution.setVariable("vnfId", "1234");
1886 execution.setVariable("vfModuleId", "vfModuleId1234");
1887 execution.setVariable("requestUri",
1888 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1889 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1890 RequestDetails requestDetails = sIRequest.getRequestDetails();
1891 String requestAction = "deleteInstance";
1892 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1893 boolean aLaCarte = true;
1894 String apiVersion = "7";
1895 String vnfType = "vnfType";
1896 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1897 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1898 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1899 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1901 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1902 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1904 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1905 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1906 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1907 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1909 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1910 vnf.setVnfId("vnf0");
1911 vnf.setModelCustomizationId("modelCustomizationId");
1912 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1914 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1915 vfModule.setModelCustomizationId("modelCustomizationId");
1917 /* this is a test case where configuration for vnfc is null */
1918 org.onap.aai.domain.yang.Configuration config1 = null;
1919 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1920 config2.setConfigurationId("config2");
1922 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1923 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1924 vnfc1.setVnfcName("zauk53avetd02svm001");
1925 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1926 vnfc2.setVnfcName("zauk53avetd02tvm001");
1930 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1931 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1932 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1933 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1934 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1935 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1936 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1938 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1940 assertFalse(results.isEmpty());
1941 assertEquals(1, results.size());
1942 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1943 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1947 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1948 String gAction = "deleteInstance";
1949 String resource = "VfModule";
1950 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1951 initExecution(gAction, bpmnRequest, true);
1952 execution.setVariable("requestUri",
1953 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1955 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1956 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1957 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1958 northBoundRequest.setOrchestrationFlowList(orchFlows);
1960 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1961 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1963 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1964 vnf.setVnfId("vnf0");
1965 vnf.setModelCustomizationId("modelCustomizationId");
1966 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1968 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1969 vfModule.setModelCustomizationId("modelCustomizationId");
1970 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1972 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1974 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1977 SPY_workflowAction.selectExecutionList(execution);
1978 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1979 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1983 public void selectExecutionListMacroResumeTest() throws Exception {
1984 String gAction = "createInstance";
1985 String resource = "Service";
1986 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1987 initExecution(gAction, bpmnRequest, false);
1988 execution.setVariable("requestUri", "v6/serviceInstances/123");
1990 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1991 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1992 northBoundRequest.setOrchestrationFlowList(orchFlows);
1994 Service service = new Service();
1995 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1997 ServiceInstance si = new ServiceInstance();
1999 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
2000 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
2002 String flowsToExecuteString =
2003 "[{\"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\"}}]";
2004 ObjectMapper om = new ObjectMapper();
2005 List<ExecuteBuildingBlock> flowsToExecute = null;
2007 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
2008 flowsToExecute = Arrays.asList(asArray);
2009 } catch (Exception e) {
2010 e.printStackTrace();
2013 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
2015 workflowAction.selectExecutionList(execution);
2016 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2017 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
2021 public void getRelatedResourcesInVfModuleTest() throws Exception {
2022 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
2023 vnfc.setModelInvariantId("modelInvariantId");
2024 vnfc.setVnfcName("testVnfcName");
2026 String vfncPayload =
2027 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
2028 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
2030 String configurationPayload =
2031 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
2032 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
2033 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
2034 configurationResultWrappers.add(configurationWrapper);
2036 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
2037 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
2039 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
2041 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
2042 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
2043 assertEquals("testConfigurationId", configuration.getConfigurationId());
2047 * WorkflowActionBB Tests
2051 public void pluralTest() {
2052 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
2053 "networks, Network", "invalidNames, invalidNames");
2054 items.forEach(item -> {
2055 String[] split = item.split(",");
2056 String type = split[0].trim();
2057 String expected = split[1].trim();
2058 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
2063 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
2064 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2066 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
2067 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2068 executeFlows.add(ebb);
2070 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
2071 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2072 executeFlows.add(ebb2);
2074 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
2075 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2076 executeFlows.add(ebb3);
2078 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
2079 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2080 executeFlows.add(ebb4);
2082 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
2083 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2084 executeFlows.add(ebb5);
2086 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
2087 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2088 executeFlows.add(ebb6);
2090 List<ExecuteBuildingBlock> sorted =
2091 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
2092 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
2093 "CreateNetworkBB", "ActivateNetworkBB");
2097 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
2098 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2100 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
2101 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2102 executeFlows.add(ebb);
2104 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
2105 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2106 executeFlows.add(ebb2);
2108 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
2109 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2110 executeFlows.add(ebb3);
2112 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
2113 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2114 executeFlows.add(ebb4);
2116 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
2117 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2118 executeFlows.add(ebb5);
2120 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
2121 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2122 executeFlows.add(ebb6);
2124 List<ExecuteBuildingBlock> sorted =
2125 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
2126 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
2127 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
2131 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
2132 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2133 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
2134 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
2135 northBoundRequest.setOrchestrationFlowList(orchFlows);
2136 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
2137 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
2139 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
2140 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
2141 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
2142 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
2143 WorkflowType.VNF, false, "my-custom-cloud-owner");
2144 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
2145 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
2146 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
2147 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
2148 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
2149 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
2150 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
2151 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
2152 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
2153 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
2157 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
2158 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2159 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2160 northBoundRequest.setOrchestrationFlowList(orchFlows);
2161 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
2162 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
2164 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
2165 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
2166 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
2170 public void extractResourceIdAndTypeFromUriTest() {
2171 String uri = "/v6/serviceInstances/123";
2172 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
2173 String uri3 = "/v6/serviceInstances";
2174 String uri4 = "/v6/serviceInstances/assign";
2175 String uri5 = "'/v6/serviceInstances/123/vnfs";
2176 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
2177 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
2178 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
2179 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
2180 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2181 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2182 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
2183 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
2184 assertEquals(expected1.getResourceId(), result.getResourceId());
2185 assertEquals(expected1.getResourceType(), result.getResourceType());
2186 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
2187 assertEquals(expected2.getResourceId(), result.getResourceId());
2188 assertEquals(expected2.getResourceType(), result.getResourceType());
2189 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
2190 assertEquals("Service", result.getResourceType().toString());
2191 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2192 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
2193 assertEquals("Service", result.getResourceType().toString());
2194 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2195 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
2196 assertEquals("Vnf", result.getResourceType().toString());
2197 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2198 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
2199 assertEquals(expected3.getResourceId(), result.getResourceId());
2200 assertEquals(expected3.getResourceType(), result.getResourceType());
2201 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
2202 assertEquals(expected4.getResourceId(), result.getResourceId());
2203 assertEquals(expected4.getResourceType(), result.getResourceType());
2204 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
2205 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2206 assertEquals("VfModule", result.getResourceType().toString());
2211 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
2212 this.expectedException.expect(IllegalArgumentException.class);
2213 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
2214 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
2218 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
2219 this.expectedException.expect(IllegalArgumentException.class);
2220 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
2221 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2225 public void extractResourceIdAndTypeFromUriResumeTest() {
2226 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2227 "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");
2228 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2232 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2233 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2234 "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");
2235 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2239 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2240 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2241 "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");
2242 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2246 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2247 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2248 "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");
2249 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2253 public void isUriResumeTest() {
2254 assertTrue(workflowAction.isUriResume(
2255 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2256 assertTrue(workflowAction.isUriResume(
2257 " 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"));
2259 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2263 public void isRequestMacroServiceResumeTest() {
2264 ServiceInstance si = new ServiceInstance();
2265 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2266 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2267 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2271 public void populateResourceIdsFromApiHandlerTest() {
2272 execution.setVariable("serviceInstanceId", "123");
2273 execution.setVariable("vnfId", "888");
2274 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2275 assertEquals("123", x.getServiceInstanceId());
2276 assertEquals("888", x.getVnfId());
2277 assertNull(x.getVolumeGroupId());
2281 public void handleRuntimeExceptionTest() {
2282 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2283 execution.setVariable("testProcessKey", "testProcessKeyValue");
2285 workflowAction.handleRuntimeException(execution);
2286 } catch (BpmnError wfe) {
2287 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2291 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2292 List<OrchestrationFlow> result = new ArrayList<>();
2293 int sequenceNumber = 1;
2294 for (String flowName : flowNames) {
2295 OrchestrationFlow orchFlow = new OrchestrationFlow();
2296 orchFlow.setFlowName(flowName);
2297 orchFlow.setSequenceNumber(sequenceNumber++);
2298 result.add(orchFlow);
2303 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2304 for (int i = 0; i < ebbs.size(); i++) {
2305 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2307 assertEquals(ebbs.size(), flowNames.length);
2310 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2311 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2312 execution.setVariable("requestAction", gAction);
2313 execution.setVariable("bpmnRequest", bpmnRequest);
2314 execution.setVariable("aLaCarte", isAlaCarte);
2315 execution.setVariable("apiVersion", "7");
2318 private String readBpmnRequestFromFile(String fileName) throws IOException {
2319 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2322 private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
2323 List<Resource> resourceList = new ArrayList<>();
2324 Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
2325 resourceList.add(r1);
2326 Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2327 resourceList.add(r2);
2328 Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
2329 resourceList.add(r3);
2330 Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
2331 resourceList.add(r4);
2332 Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
2333 resourceList.add(r5);
2334 Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
2335 resourceList.add(r6);
2337 Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2338 resourceList.add(r7);
2341 r3.setProcessingPriority(2);
2342 r4.setProcessingPriority(1);
2343 r5.setProcessingPriority(4);
2344 r5.setBaseVfModule(true);
2345 r6.setProcessingPriority(3);
2347 return resourceList;