2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Modifications Copyright (c) 2020 Nokia
10 * ================================================================================
11 * Modifications Copyright (c) 2021 Orange
12 * ================================================================================
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
17 * http://www.apache.org/licenses/LICENSE-2.0
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 * ============LICENSE_END=========================================================
27 package org.onap.so.bpmn.infrastructure.workflow.tasks;
29 import static org.hamcrest.CoreMatchers.containsString;
30 import static org.hamcrest.CoreMatchers.equalTo;
31 import static org.junit.Assert.assertEquals;
32 import static org.junit.Assert.assertFalse;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.mockito.ArgumentMatchers.any;
37 import static org.mockito.ArgumentMatchers.anyList;
38 import static org.mockito.ArgumentMatchers.anyObject;
39 import static org.mockito.ArgumentMatchers.anyString;
40 import static org.mockito.ArgumentMatchers.eq;
41 import static org.mockito.ArgumentMatchers.isA;
42 import static org.mockito.Mockito.doReturn;
43 import static org.mockito.Mockito.doThrow;
44 import static org.mockito.Mockito.when;
45 import com.fasterxml.jackson.databind.DeserializationFeature;
46 import com.fasterxml.jackson.databind.ObjectMapper;
47 import java.io.IOException;
48 import java.net.MalformedURLException;
49 import java.nio.file.Files;
50 import java.nio.file.Paths;
51 import java.util.ArrayList;
52 import java.util.Arrays;
53 import java.util.List;
55 import java.util.Optional;
57 import java.util.UUID;
58 import java.util.stream.Collectors;
59 import org.camunda.bpm.engine.delegate.BpmnError;
60 import org.camunda.bpm.engine.delegate.DelegateExecution;
61 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
62 import org.junit.Before;
63 import org.junit.Ignore;
64 import org.junit.Rule;
65 import org.junit.Test;
66 import org.junit.rules.ExpectedException;
67 import org.mockito.InjectMocks;
68 import org.mockito.Mock;
69 import org.mockito.Mockito;
70 import org.mockito.Spy;
71 import org.onap.aai.domain.yang.GenericVnf;
72 import org.onap.aai.domain.yang.Relationship;
73 import org.onap.aai.domain.yang.RelationshipList;
74 import org.onap.aai.domain.yang.ServiceInstance;
75 import org.onap.aai.domain.yang.VfModule;
76 import org.onap.aai.domain.yang.VolumeGroup;
77 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
78 import org.onap.aaiclient.client.aai.entities.Relationships;
79 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
80 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
81 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
82 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
83 import org.onap.so.bpmn.BaseTaskTest;
84 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
85 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
86 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
87 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
88 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
89 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
90 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
91 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
92 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
93 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
94 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
95 import org.onap.so.db.catalog.beans.CollectionResource;
96 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
97 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
98 import org.onap.so.db.catalog.beans.ConfigurationResource;
99 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
100 import org.onap.so.db.catalog.beans.CvnfcCustomization;
101 import org.onap.so.db.catalog.beans.HeatEnvironment;
102 import org.onap.so.db.catalog.beans.HeatTemplate;
103 import org.onap.so.db.catalog.beans.InstanceGroup;
104 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
105 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
106 import org.onap.so.db.catalog.beans.Service;
107 import org.onap.so.db.catalog.beans.VfModuleCustomization;
108 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
109 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
110 import org.onap.so.serviceinstancebeans.RequestDetails;
111 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
112 import org.springframework.core.env.Environment;
114 public class WorkflowActionTest extends BaseTaskTest {
116 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
117 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
118 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
119 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
120 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
121 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
122 "VfModuleReplaceRebuildVolumeGroups.json";
123 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
124 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
125 private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
126 private static final String MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE =
127 "Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
130 protected Environment environment;
132 protected UserParamsServiceTraversal userParamsServiceTraversal;
135 private AaiResourceIdValidator aaiResourceIdValidator;
137 protected WorkflowAction workflowAction;
139 private DelegateExecution execution;
143 protected WorkflowAction SPY_workflowAction;
146 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
150 protected VnfEBBLoader vnfEBBLoaderSpy;
154 protected ServiceEBBLoader serviceEBBLoader;
157 public ExpectedException thrown = ExpectedException.none();
159 private String RESOURCE_PATH = "src/test/resources/__files/";
161 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
162 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
163 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
164 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
165 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
166 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
167 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
168 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
169 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
170 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
171 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
172 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
173 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
174 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
177 public void before() throws Exception {
178 execution = new DelegateExecutionFake();
179 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
180 servInstance.setServiceInstanceId("TEST");
181 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
182 workflowAction.setBbInputSetupUtils(bbSetupUtils);
183 workflowAction.setBbInputSetup(bbInputSetup);
191 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
192 String gAction = "createInstance";
193 String resource = "Network";
194 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
195 initExecution(gAction, bpmnRequest, true);
196 execution.setVariable("requestUri", "v6/networks/123");
198 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
199 List<OrchestrationFlow> orchFlows =
200 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
201 northBoundRequest.setOrchestrationFlowList(orchFlows);
203 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
204 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
206 workflowAction.selectExecutionList(execution);
207 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
208 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
212 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
213 String gAction = "deleteInstance";
214 String resource = "Network";
215 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
216 initExecution(gAction, bpmnRequest, true);
217 execution.setVariable("requestUri", "v6/networks/123");
219 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
220 List<OrchestrationFlow> orchFlows =
221 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
222 northBoundRequest.setOrchestrationFlowList(orchFlows);
224 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
225 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
227 workflowAction.selectExecutionList(execution);
228 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
229 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
233 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
234 String gAction = "createInstance";
235 String resource = "Service";
236 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
237 initExecution(gAction, bpmnRequest, true);
238 execution.setVariable("requestUri", "v6/serviceInstances/123");
241 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
242 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
243 northBoundRequest.setOrchestrationFlowList(orchFlows);
245 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
246 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
247 workflowAction.selectExecutionList(execution);
248 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
249 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
253 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
254 String gAction = "createInstance";
255 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
256 initExecution(gAction, bpmnRequest, true);
257 execution.setVariable("requestUri", "v6/serviceInstances");
259 doThrow(new DuplicateNameException(
260 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
261 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
262 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
264 SPY_workflowAction.selectExecutionList(execution);
265 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
266 "Exception while setting execution list. serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique.");
268 // verify default values are present in failure case
269 assertEquals(true, execution.getVariable("isTopLevelFlow"));
270 assertEquals(false, execution.getVariable("sentSyncResponse"));
274 * SERVICE MACRO TESTS
277 public void selectExecutionListServiceMacroAssignTest() throws Exception {
278 String gAction = "assignInstance";
279 String resource = "Service";
280 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
281 initExecution(gAction, bpmnRequest, false);
282 execution.setVariable("requestUri", "v6/serviceInstances/123");
284 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
285 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
286 "AssignVolumeGroupBB", "AssignVfModuleBB");
287 northBoundRequest.setOrchestrationFlowList(orchFlows);
289 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
290 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
291 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
292 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
293 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
294 HeatTemplate volumeHeatTemplate = new HeatTemplate();
295 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
296 vfModuleCustomization.setVfModule(vfModule);
298 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
299 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
300 HeatEnvironment heatEnvironment = new HeatEnvironment();
301 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
302 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
303 HeatTemplate moduleHeatTemplate = new HeatTemplate();
304 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
305 vfModuleCustomization2.setVfModule(vfModule2);
307 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
308 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
310 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
311 .thenReturn(prepareListWithResources(false, false));
312 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
313 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
314 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
315 .thenReturn(vfModuleCustomization);
316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
317 .thenReturn(vfModuleCustomization2);
318 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
319 .thenReturn(vfModuleCustomization3);
321 workflowAction.selectExecutionList(execution);
322 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
323 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
324 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
328 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
329 String gAction = "assignInstance";
330 String resource = "Service";
331 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
332 initExecution(gAction, bpmnRequest, false);
333 execution.setVariable("requestUri", "v6/serviceInstances/123");
335 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
336 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
337 "AssignVolumeGroupBB", "AssignVfModuleBB");
338 northBoundRequest.setOrchestrationFlowList(orchFlows);
340 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
341 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
342 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
343 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
344 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
345 HeatTemplate volumeHeatTemplate = new HeatTemplate();
346 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
347 vfModuleCustomization.setVfModule(vfModule);
349 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
350 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
351 HeatEnvironment heatEnvironment = new HeatEnvironment();
352 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
353 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
354 HeatTemplate moduleHeatTemplate = new HeatTemplate();
355 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
356 vfModuleCustomization2.setVfModule(vfModule2);
358 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
359 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
361 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
362 .thenReturn(prepareListWithResources(false, false));
363 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
364 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
365 false, "att-aic")).thenReturn(northBoundRequest);
366 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
367 .thenReturn(vfModuleCustomization);
368 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
369 .thenReturn(vfModuleCustomization2);
370 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
371 .thenReturn(vfModuleCustomization3);
372 workflowAction.selectExecutionList(execution);
373 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
374 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
375 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
379 public void selectExecutionListServiceMacroActivateTest() throws Exception {
380 String gAction = "activateInstance";
381 String resource = "Service";
382 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
383 initExecution(gAction, bpmnRequest, false);
384 execution.setVariable("requestUri", "v6/serviceInstances/si0");
386 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
387 List<OrchestrationFlow> orchFlows =
388 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
389 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
390 northBoundRequest.setOrchestrationFlowList(orchFlows);
392 ServiceInstance serviceInstanceAAI = new ServiceInstance();
393 serviceInstanceAAI.setServiceInstanceId("si0");
394 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
395 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
396 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
397 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
398 vnf.setVnfId("vnf0");
400 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
401 vnf.getVfModules().add(vfModule);
402 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
403 vnf.getVfModules().add(vfModule2);
405 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
406 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
407 volumeGroup.setVolumeGroupId("volumeGroup0");
408 vnf.getVolumeGroups().add(volumeGroup);
410 serviceInstanceMSO.getVnfs().add(vnf);
412 VfModule aaiVfModule = new VfModule();
413 aaiVfModule.setIsBaseVfModule(false);
415 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
416 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
417 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
418 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
419 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
420 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
421 workflowAction.selectExecutionList(execution);
422 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
423 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
424 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
425 "ActivateServiceInstanceBB");
426 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
427 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
428 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
429 assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
430 assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
431 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
432 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
433 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
437 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
438 String gAction = "deactivateInstance";
439 String resource = "Service";
440 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
441 initExecution(gAction, bpmnRequest, false);
442 execution.setVariable("requestUri", "v6/serviceInstances/123");
444 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
445 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
446 northBoundRequest.setOrchestrationFlowList(orchFlows);
448 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
449 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
450 workflowAction.selectExecutionList(execution);
451 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
452 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
456 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
457 String gAction = "createInstance";
458 String resource = "Service";
459 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
460 initExecution(gAction, bpmnRequest, false);
461 execution.setVariable("requestUri", "v6/serviceInstances/123");
463 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
464 northBoundRequest.setIsToplevelflow(true);
465 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
466 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
467 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
468 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
469 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
470 northBoundRequest.setOrchestrationFlowList(orchFlows);
472 Service service = new Service();
473 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
474 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
475 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
476 workflowAction.selectExecutionList(execution);
477 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
478 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
482 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
483 String gAction = "createInstance";
484 String resource = "Service";
485 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
486 initExecution(gAction, bpmnRequest, false);
487 execution.setVariable("requestUri", "v6/serviceInstances/123");
489 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
490 northBoundRequest.setIsToplevelflow(true);
491 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
492 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
493 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
494 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
495 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
496 northBoundRequest.setOrchestrationFlowList(orchFlows);
498 Service service = new Service();
499 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
500 networkCustomization.setModelCustomizationUUID("1234");
501 service.getNetworkCustomizations().add(networkCustomization);
502 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
503 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
504 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
506 workflowAction.selectExecutionList(execution);
507 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
508 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
509 "ActivateNetworkBB", "ActivateServiceInstanceBB");
513 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
514 String gAction = "createInstance";
515 String resource = "Service";
516 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
517 initExecution(gAction, bpmnRequest, false);
518 execution.setVariable("requestUri", "v6/serviceInstances/123");
520 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
521 northBoundRequest.setIsToplevelflow(true);
522 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
523 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
524 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
525 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
526 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
527 northBoundRequest.setOrchestrationFlowList(orchFlows);
529 Service service = new Service();
530 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
531 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
532 networkCust.setModelCustomizationUUID("123");
533 networkCustomizations.add(networkCust);
534 service.setNetworkCustomizations(networkCustomizations);
535 NetworkCollectionResourceCustomization collectionResourceCustomization =
536 new NetworkCollectionResourceCustomization();
537 collectionResourceCustomization.setModelCustomizationUUID("123");
539 CollectionResource collectionResource = new CollectionResource();
540 collectionResource.setToscaNodeType("NetworkCollection");
541 InstanceGroup instanceGroup = new InstanceGroup();
542 instanceGroup.setToscaNodeType("NetworkCollectionResource");
543 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
544 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
545 new CollectionNetworkResourceCustomization();
546 collectionNetworkResourceCust.setModelCustomizationUUID("123");
547 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
548 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
549 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
550 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
551 new CollectionResourceInstanceGroupCustomization();
552 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
553 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
554 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
555 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
556 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
557 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
558 collectionResource.setInstanceGroup(instanceGroup);
559 collectionResourceCustomization.setCollectionResource(collectionResource);;
560 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
561 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
562 doReturn(collectionResourceCustomization).when(catalogDbClient)
563 .getNetworkCollectionResourceCustomizationByID("123");
564 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
565 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
566 workflowAction.selectExecutionList(execution);
567 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
568 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
569 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
570 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
571 "ActivateServiceInstanceBB");
572 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
573 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
574 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
575 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
576 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
578 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
581 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
582 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
583 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
584 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
585 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
587 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
590 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
591 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
592 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
593 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
594 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
596 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
602 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
603 String gAction = "createInstance";
604 String resource = "Service";
605 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
606 initExecution(gAction, bpmnRequest, false);
607 execution.setVariable("requestUri", "v6/serviceInstances/123");
609 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
610 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
611 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
612 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
613 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
614 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
615 northBoundRequest.setOrchestrationFlowList(orchFlows);
617 Service service = new Service();
618 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
620 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
621 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
622 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
623 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
624 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
625 HeatTemplate volumeHeatTemplate = new HeatTemplate();
626 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
627 vfModuleCustomization.setVfModule(vfModule);
629 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
630 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
631 HeatEnvironment heatEnvironment = new HeatEnvironment();
632 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
633 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
634 HeatTemplate moduleHeatTemplate = new HeatTemplate();
635 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
636 vfModuleCustomization2.setVfModule(vfModule2);
638 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
639 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
641 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
642 .thenReturn(prepareListWithResources(false, false));
643 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
644 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
645 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
646 .thenReturn(vfModuleCustomization);
647 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
648 .thenReturn(vfModuleCustomization2);
649 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
650 .thenReturn(vfModuleCustomization3);
651 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
652 workflowAction.selectExecutionList(execution);
653 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
654 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
655 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
656 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
657 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
658 "ActivateServiceInstanceBB");
660 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
661 int randomUUIDLength = UUID.randomUUID().toString().length();
662 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
663 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
664 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
665 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
666 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
667 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
668 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
669 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
670 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
671 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
672 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
673 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
674 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
675 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
676 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
677 assertEquals(true, execution.getVariable("homing"));
681 public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
682 String gAction = "createInstance";
683 String resource = "Service";
684 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
685 initExecution(gAction, bpmnRequest, false);
686 execution.setVariable("requestUri", "v6/serviceInstances/123");
688 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
689 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
690 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
691 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
692 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
693 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
694 "ActivateServiceInstanceBB");
695 northBoundRequest.setOrchestrationFlowList(orchFlows);
697 Service service = new Service();
698 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
700 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
701 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
702 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
703 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
704 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
705 HeatTemplate volumeHeatTemplate = new HeatTemplate();
706 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
707 vfModuleCustomization.setVfModule(vfModule);
709 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
710 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
711 HeatEnvironment heatEnvironment = new HeatEnvironment();
712 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
713 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
714 HeatTemplate moduleHeatTemplate = new HeatTemplate();
715 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
716 vfModuleCustomization2.setVfModule(vfModule2);
718 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
719 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
721 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
722 .thenReturn(prepareListWithResources(true, true));
723 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
724 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
725 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
726 .thenReturn(vfModuleCustomization);
727 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
728 .thenReturn(vfModuleCustomization2);
729 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
730 .thenReturn(vfModuleCustomization3);
731 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
732 workflowAction.selectExecutionList(execution);
733 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
734 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
735 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
736 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
737 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
738 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
740 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
741 int randomUUIDLength = UUID.randomUUID().toString().length();
742 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
743 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
744 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
745 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
746 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
747 assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
748 assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
749 assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
750 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
751 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
752 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
753 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
754 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
755 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
756 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
757 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
758 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
759 assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
760 assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
761 assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
762 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
763 assertEquals(true, execution.getVariable("homing"));
767 public void selectExecutionListServiceMacroCreateWithMultipleSameModelVnfAndVfModules() throws Exception {
768 String gAction = "createInstance";
769 String resource = "Service";
770 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE);
771 initExecution(gAction, bpmnRequest, false);
772 execution.setVariable("requestUri", "v7/serviceInstances");
773 execution.setVariable("serviceInstanceId", UUID.randomUUID().toString());
775 // Service-Macro-Create
776 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
777 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
778 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "ControllerExecutionBB",
779 "AssignPnfBB", "WaitForPnfReadyBB", "ControllerExecutionBB", "ControllerExecutionBB", "ActivatePnfBB",
780 "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
781 "CreateVfModuleBB", "ActivateVfModuleBB", "ControllerExecutionBB", "ActivateVnfBB",
782 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
783 orchFlows.get(6).setBpmnAction("config-assign");
784 orchFlows.get(6).setBpmnScope("vnf");
785 orchFlows.get(9).setBpmnAction("config-assign");
786 orchFlows.get(9).setBpmnScope("pnf");
787 orchFlows.get(10).setBpmnAction("config-deploy");
788 orchFlows.get(10).setBpmnScope("pnf");
789 orchFlows.get(18).setBpmnAction("config-deploy");
790 orchFlows.get(18).setBpmnScope("vnf");
791 northBoundRequest.setOrchestrationFlowList(orchFlows);
793 Service service = new Service();
794 service.setModelUUID("f2444885-3c76-4ddc-8668-7741c0631495");
796 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
797 vfModuleCustomization.setModelCustomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0");
798 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
799 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
800 vfModule.setVolumeHeatTemplate(new HeatTemplate());
801 vfModuleCustomization.setVfModule(vfModule);
803 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
804 vfModuleCustomization2.setModelCustomizationUUID("83677d89-428a-407b-b4ec-738e68275d84");
805 vfModuleCustomization2.setHeatEnvironment(new HeatEnvironment());
806 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
807 vfModule2.setModuleHeatTemplate(new HeatTemplate());
808 vfModuleCustomization2.setVfModule(vfModule2);
810 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
811 false, "DEFAULT")).thenReturn(northBoundRequest);
812 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0"))
813 .thenReturn(vfModuleCustomization);
814 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("83677d89-428a-407b-b4ec-738e68275d84"))
815 .thenReturn(vfModuleCustomization2);
816 when(catalogDbClient.getServiceByID("f2444885-3c76-4ddc-8668-7741c0631495")).thenReturn(service);
819 Resource serviceResource =
820 new Resource(WorkflowType.SERVICE, "f2444885-3c76-4ddc-8668-7741c0631495", false, null);
821 Resource vnfResource1 =
822 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
823 vnfResource1.setInstanceName("vnf-instanceName-1");
824 Resource vfmResource1 =
825 new Resource(WorkflowType.VFMODULE, "3bd19000-6d21-49f1-9eb3-ea76a6eac5e0", false, vnfResource1);
826 vfmResource1.setInstanceName("demo-network-1");
827 Resource vfmResource2 =
828 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource1);
829 vfmResource2.setInstanceName("demo-1");
830 Resource vnfResource2 =
831 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
832 vnfResource2.setInstanceName("vnf-instanceName-2");
833 Resource vfmResource3 =
834 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
835 vfmResource3.setInstanceName("demo-2");
836 Resource vfmResource4 =
837 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
838 vfmResource4.setInstanceName("demo-3");
840 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), any()))
841 .thenReturn(Arrays.asList(serviceResource, vnfResource1, vnfResource2, vfmResource1, vfmResource2,
842 vfmResource3, vfmResource4));
844 workflowAction.selectExecutionList(execution);
846 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
848 Map<String, List<ExecuteBuildingBlock>> flowNamesToEbbList =
849 ebbs.stream().collect(Collectors.groupingBy(e -> e.getBuildingBlock().getBpmnFlowName()));
851 assertEquals(1, flowNamesToEbbList.get("AssignServiceInstanceBB").size());
852 assertEquals(2, flowNamesToEbbList.get("AssignVnfBB").size());
853 assertEquals(4, flowNamesToEbbList.get("AssignVfModuleBB").size());
854 assertEquals(4, flowNamesToEbbList.get("ControllerExecutionBB").size());
855 assertEquals(4, flowNamesToEbbList.get("CreateVfModuleBB").size());
856 assertEquals(4, flowNamesToEbbList.get("ActivateVfModuleBB").size());
857 assertEquals(2, flowNamesToEbbList.get("ActivateVnfBB").size());
858 assertEquals(1, flowNamesToEbbList.get("ActivateServiceInstanceBB").size());
860 String vnfInstanceId1 = flowNamesToEbbList.get("AssignVnfBB").get(0).getWorkflowResourceIds().getVnfId();
861 String vnfInstanceId2 = flowNamesToEbbList.get("AssignVnfBB").get(1).getWorkflowResourceIds().getVnfId();
863 // should be 3 = 1 AssignVfModuleBB + 1 CreateVfModuleBB + 1 ActivateVfModuleBB
864 boolean allEbbsForVfModule1HaveCorrectParentVnfId =
865 3 == ebbs.stream().map(ExecuteBuildingBlock::getWorkflowResourceIds)
866 .filter(w -> "demo-network-1".equals(w.getVfModuleInstanceName())
867 && vnfInstanceId1.equals(w.getVnfId()))
869 boolean allEbbsForVfModule2HaveCorrectParentVnfId = 3 == ebbs.stream()
870 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
871 .filter(w -> "demo-1".equals(w.getVfModuleInstanceName()) && vnfInstanceId1.equals(w.getVnfId()))
873 boolean allEbbsForVfModule3HaveCorrectParentVnfId = 3 == ebbs.stream()
874 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
875 .filter(w -> "demo-2".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
877 boolean allEbbsForVfModule4HaveCorrectParentVnfId = 3 == ebbs.stream()
878 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
879 .filter(w -> "demo-3".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
881 assertTrue(allEbbsForVfModule1HaveCorrectParentVnfId);
882 assertTrue(allEbbsForVfModule2HaveCorrectParentVnfId);
883 assertTrue(allEbbsForVfModule3HaveCorrectParentVnfId);
884 assertTrue(allEbbsForVfModule4HaveCorrectParentVnfId);
886 boolean controllerExecutionBBsforVnf1HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
887 .filter(e -> vnfInstanceId1.equals(e.getWorkflowResourceIds().getVnfId()))
888 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
889 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
890 assertTrue(controllerExecutionBBsforVnf1HaveCorrectVnfId);
892 boolean controllerExecutionBBsforVnf2HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
893 .filter(e -> vnfInstanceId2.equals(e.getWorkflowResourceIds().getVnfId()))
894 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
895 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
896 assertTrue(controllerExecutionBBsforVnf2HaveCorrectVnfId);
900 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
901 String gAction = "deleteInstance";
902 String resource = "Service";
903 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
904 initExecution(gAction, bpmnRequest, false);
905 execution.setVariable("requestUri", "v6/serviceInstances/123");
907 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
908 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
909 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
910 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
911 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
912 "UnassignServiceInstanceBB");
913 northBoundRequest.setOrchestrationFlowList(orchFlows);
915 ServiceInstance serviceInstanceAAI = new ServiceInstance();
916 serviceInstanceAAI.setServiceInstanceId("aaisi123");
917 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
918 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
919 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
920 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
921 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
922 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
923 vnf.setVnfId("vnfId123");
924 pnf.setPnfId("pnfId123");
926 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
927 vnf.getVfModules().add(vfModule);
928 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
929 vnf.getVfModules().add(vfModule2);
931 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
932 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
933 volumeGroup.setVolumeGroupId("vg123");
934 vnf.getVolumeGroups().add(volumeGroup);
936 serviceInstanceMSO.getVnfs().add(vnf);
937 serviceInstanceMSO.getPnfs().add(pnf);
939 VfModule aaiVfModule = new VfModule();
940 aaiVfModule.setIsBaseVfModule(false);
942 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
943 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
944 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
945 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
946 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
947 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
948 workflowAction.selectExecutionList(execution);
949 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
950 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
951 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
952 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
953 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
957 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
958 String gAction = "deleteInstance";
959 String resource = "Service";
960 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
961 initExecution(gAction, bpmnRequest, false);
962 execution.setVariable("requestUri", "v6/serviceInstances/123");
964 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
965 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
966 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
967 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
968 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
969 "UnassignServiceInstanceBB");
970 northBoundRequest.setOrchestrationFlowList(orchFlows);
972 ServiceInstance serviceInstanceAAI = new ServiceInstance();
973 serviceInstanceAAI.setServiceInstanceId("aaisi123");
974 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
975 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
976 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
977 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
978 pnf.setPnfId("pnfId123");
980 serviceInstanceMSO.getPnfs().add(pnf);
982 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
983 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
984 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
985 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
986 workflowAction.selectExecutionList(execution);
987 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
988 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
992 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
993 String gAction = "unassignInstance";
994 String resource = "Service";
995 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
996 initExecution(gAction, bpmnRequest, false);
997 execution.setVariable("requestUri", "v6/serviceInstances/123");
999 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1000 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
1001 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1002 northBoundRequest.setOrchestrationFlowList(orchFlows);
1004 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1005 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1006 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1007 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1008 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1009 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1010 vnf.setVnfId("vnfId123");
1012 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
1013 vnf.getVfModules().add(vfModule);
1014 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
1015 vnf.getVfModules().add(vfModule2);
1017 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
1018 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
1019 volumeGroup.setVolumeGroupId("vg123");
1020 vnf.getVolumeGroups().add(volumeGroup);
1022 serviceInstanceMSO.getVnfs().add(vnf);
1024 VfModule aaiVfModule = new VfModule();
1025 aaiVfModule.setIsBaseVfModule(false);
1027 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
1028 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1029 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1030 doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
1031 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1032 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1033 workflowAction.selectExecutionList(execution);
1034 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1035 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
1036 "UnassignVnfBB", "UnassignServiceInstanceBB");
1040 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
1041 String gAction = "deleteInstance";
1042 String resource = "Service";
1043 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
1044 initExecution(gAction, bpmnRequest, false);
1045 execution.setVariable("requestUri", "v6/serviceInstances/123");
1047 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1048 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1049 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
1050 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
1051 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
1052 northBoundRequest.setOrchestrationFlowList(orchFlows);
1054 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1055 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1056 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1057 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1059 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
1060 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1061 network.setNetworkId("123");
1062 serviceInstanceMSO.getNetworks().add(network);
1063 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
1064 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1065 network2.setNetworkId("321");
1066 serviceInstanceMSO.getNetworks().add(network2);
1068 Collection collection = new Collection();
1069 serviceInstanceMSO.setCollection(collection);
1071 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1072 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1073 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1074 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1075 workflowAction.selectExecutionList(execution);
1076 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1077 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1078 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
1079 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
1083 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
1084 String gAction = "recreateInstance";
1085 String resource = "Vnf";
1086 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1087 initExecution(gAction, bpmnRequest, false);
1088 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
1089 execution.setVariable("serviceInstanceId", "123");
1090 execution.setVariable("vnfId", "1234");
1092 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1093 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1094 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1095 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1096 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1097 "AAIUnsetVnfInMaintBB");
1098 northBoundRequest.setOrchestrationFlowList(orchFlows);
1100 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1101 serviceInstanceAAI.setServiceInstanceId("123");
1102 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1103 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1104 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1105 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1106 vnf.setVnfId("1234");
1108 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1109 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1110 vfModule.setVfModuleId("vfModule1");
1111 vnf.getVfModules().add(vfModule);
1112 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1113 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1114 vfModule2.setVfModuleId("vfModule2");
1115 vnf.getVfModules().add(vfModule2);
1117 serviceInstanceMSO.getVnfs().add(vnf);
1119 org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
1120 aaiVfModule.setIsBaseVfModule(false);
1122 doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
1123 doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1124 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1125 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1126 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1127 false, "cloud-owner")).thenReturn(northBoundRequest);
1128 workflowAction.selectExecutionList(execution);
1129 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1130 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1131 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
1132 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
1133 "AAIUnsetVnfInMaintBB");
1137 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
1138 String gAction = "replaceInstance";
1139 String resource = "Vnf";
1140 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
1141 initExecution(gAction, bpmnRequest, false);
1142 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
1143 execution.setVariable("serviceInstanceId", "123");
1144 execution.setVariable("vnfId", "1234");
1146 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1147 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1148 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
1149 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1150 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1151 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1152 "AAIUnsetVnfInMaintBB");
1153 northBoundRequest.setOrchestrationFlowList(orchFlows);
1155 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1156 serviceInstanceAAI.setServiceInstanceId("123");
1157 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
1158 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1159 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1160 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1161 vnf.setVnfId("1234");
1162 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1163 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1164 vfModule.setVfModuleId("vfModule1");
1165 vnf.getVfModules().add(vfModule);
1166 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1167 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1168 vfModule2.setVfModuleId("vfModule2");
1169 vnf.getVfModules().add(vfModule2);
1170 serviceInstanceMSO.getVnfs().add(vnf);
1171 VfModule vfModuleAAI1 = new VfModule();
1172 vfModuleAAI1.setIsBaseVfModule(false);
1173 VfModule vfModuleAAI2 = new VfModule();
1174 vfModuleAAI2.setIsBaseVfModule(false);
1175 vfModuleAAI2.setVfModuleId("vfModule2");
1176 RelationshipList relationshipList = new RelationshipList();
1177 Relationship relationship = new Relationship();
1178 relationshipList.getRelationship().add(relationship);
1179 vfModuleAAI2.setRelationshipList(relationshipList);
1180 Relationships relationships = new Relationships("abc");
1181 Configuration config = new Configuration();
1182 config.setConfigurationId("configId");
1183 Optional<Configuration> configOp = Optional.of(config);
1184 Optional<Relationships> relationshipsOp = Optional.of(relationships);
1186 doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1187 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
1188 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
1189 doReturn(vfModuleAAI1).when(bbSetupUtils).getAAIVfModule("1234", "vfModule1");
1190 doReturn(vfModuleAAI2).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
1191 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1192 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1193 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1194 false, "cloud-owner")).thenReturn(northBoundRequest);
1195 workflowAction.selectExecutionList(execution);
1196 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1197 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1198 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1199 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
1200 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1201 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1202 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1203 "AAIUnsetVnfInMaintBB");
1204 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
1205 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
1211 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
1212 String gAction = "createInstance";
1213 String resource = "NetworkCollection";
1214 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1215 initExecution(gAction, bpmnRequest, false);
1216 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1218 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1219 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
1220 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
1221 northBoundRequest.setOrchestrationFlowList(orchFlows);
1223 Service service = new Service();
1224 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1225 CollectionResource collectionResource = new CollectionResource();
1226 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1227 collectionResourceCustomization.setCollectionResource(collectionResource);
1228 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1230 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1231 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1232 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1233 workflowAction.selectExecutionList(execution);
1234 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1235 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
1236 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
1237 "ActivateNetworkCollectionBB");
1242 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
1243 String gAction = "deleteInstance";
1244 String resource = "NetworkCollection";
1245 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1246 initExecution(gAction, bpmnRequest, false);
1247 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1249 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1250 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1251 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1252 northBoundRequest.setOrchestrationFlowList(orchFlows);
1254 Service service = new Service();
1255 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1256 CollectionResource collectionResource = new CollectionResource();
1257 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1258 collectionResourceCustomization.setCollectionResource(collectionResource);
1259 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1261 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1262 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1263 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1264 workflowAction.selectExecutionList(execution);
1265 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1266 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1267 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1268 "DeleteNetworkCollectionBB");
1272 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1273 String gAction = "createInstance";
1274 String resource = "VfModule";
1275 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1276 initExecution(gAction, bpmnRequest, true);
1277 execution.setVariable("requestUri",
1278 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1280 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1281 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1282 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1283 northBoundRequest.setOrchestrationFlowList(orchFlows);
1285 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1286 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1287 workflowAction.selectExecutionList(execution);
1288 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1289 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1293 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1294 String gAction = "createInstance";
1295 String resource = "VfModule";
1296 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1297 initExecution(gAction, bpmnRequest, true);
1298 execution.setVariable("requestUri",
1299 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1301 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1302 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1303 "AddFabricConfigurationBB");
1304 northBoundRequest.setOrchestrationFlowList(orchFlows);
1306 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1307 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1308 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1309 new CvnfcConfigurationCustomization();
1310 ConfigurationResource configurationResource = new ConfigurationResource();
1311 configurationResource.setToscaNodeType("FabricConfiguration");
1312 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1313 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1314 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1315 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1316 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1317 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1318 cvnfcCustomization.setDescription("description");
1319 cvnfcCustomizations.add(cvnfcCustomization);
1321 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1322 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1323 new CvnfcConfigurationCustomization();
1324 ConfigurationResource configurationResource2 = new ConfigurationResource();
1325 configurationResource2.setToscaNodeType("FabricConfiguration");
1326 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1327 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1328 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1329 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1330 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1331 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1332 cvnfcCustomization2.setDescription("description2");
1333 cvnfcCustomizations.add(cvnfcCustomization2);
1335 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1336 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1338 workflowAction.selectExecutionList(execution);
1339 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1340 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1346 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1347 String gAction = "replaceInstance";
1348 String resource = "VfModule";
1349 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1350 initExecution(gAction, bpmnRequest, true);
1351 execution.setVariable("requestUri",
1352 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1354 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1355 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1356 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1357 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1358 workflowAction.selectExecutionList(execution);
1359 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1361 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1362 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1363 "ChangeModelServiceInstanceBB");
1367 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1368 String gAction = "replaceInstanceRetainAssignments";
1369 String resource = "VfModule";
1370 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1371 initExecution(gAction, bpmnRequest, true);
1372 execution.setVariable("requestUri",
1373 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1375 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1376 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1377 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1378 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1379 workflowAction.selectExecutionList(execution);
1380 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1382 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1383 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1387 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1388 String gAction = "replaceInstance";
1389 String resource = "VfModule";
1390 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1391 initExecution(gAction, bpmnRequest, true);
1392 execution.setVariable("requestUri",
1393 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1394 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1395 execution.setVariable("vfModuleId", "1234");
1397 VolumeGroup volumeGroup = new VolumeGroup();
1398 volumeGroup.setVolumeGroupId("volumeGroupId");
1399 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1400 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1401 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1402 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1403 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1404 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1405 workflowAction.selectExecutionList(execution);
1406 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1408 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1409 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1410 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1414 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1416 String gAction = "replaceInstanceRetainAssignments";
1417 String resource = "VfModule";
1418 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1419 initExecution(gAction, bpmnRequest, true);
1420 execution.setVariable("requestUri",
1421 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1422 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1423 execution.setVariable("vfModuleId", "1234");
1425 VolumeGroup volumeGroup = new VolumeGroup();
1426 volumeGroup.setVolumeGroupId("volumeGroupId");
1427 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1428 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1430 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1431 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1432 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1433 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1434 workflowAction.selectExecutionList(execution);
1435 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1437 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1438 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1439 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1443 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1444 String gAction = "replaceInstance";
1445 String resource = "VfModule";
1446 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1447 initExecution(gAction, bpmnRequest, true);
1448 execution.setVariable("requestUri",
1449 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1450 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1451 execution.setVariable("vfModuleId", "1234");
1453 VolumeGroup volumeGroup = new VolumeGroup();
1454 volumeGroup.setVolumeGroupId("volumeGroupId");
1455 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1456 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1458 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1459 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1460 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1461 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1462 vfModuleCustomization.setVfModule(vfModule);
1463 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1464 .thenReturn(vfModuleCustomization);
1466 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1467 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1468 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1469 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1470 workflowAction.selectExecutionList(execution);
1471 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1473 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1474 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1475 "ChangeModelServiceInstanceBB");
1479 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1480 String gAction = "replaceInstance";
1481 String resource = "VfModule";
1482 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1483 initExecution(gAction, bpmnRequest, true);
1484 execution.setVariable("requestUri",
1485 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1486 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1487 execution.setVariable("vfModuleId", "1234");
1489 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1490 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1491 vnf.setModelCustomizationId("modelCustomizationId");
1492 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1494 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1495 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1496 vfModuleFromAAI.setVfModuleId("1234");
1497 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1499 VolumeGroup volumeGroup = new VolumeGroup();
1500 volumeGroup.setVolumeGroupId("volumeGroupId");
1501 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1502 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1504 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1505 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1506 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1507 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1508 vfModuleCustomization.setVfModule(vfModule);
1509 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1510 .thenReturn(vfModuleCustomization);
1511 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1512 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1513 vnfc.setModelInvariantId("modelInvariantId");
1514 vnfc.setVnfcName("testVnfcName");
1516 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1518 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1519 configuration.setConfigurationId("configurationId");
1520 configuration.setModelCustomizationId("modelCustimizationId");
1521 configuration.setConfigurationName("testConfigurationName");
1522 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1524 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1525 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1526 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1527 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1528 SPY_workflowAction.selectExecutionList(execution);
1529 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1531 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1532 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1533 "ChangeModelServiceInstanceBB");
1537 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1538 String gAction = "replaceInstanceRetainAssignments";
1539 String resource = "VfModule";
1540 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1541 initExecution(gAction, bpmnRequest, true);
1542 execution.setVariable("requestUri",
1543 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1544 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1545 execution.setVariable("vfModuleId", "1234");
1547 VolumeGroup volumeGroup = new VolumeGroup();
1548 volumeGroup.setVolumeGroupId("volumeGroupId");
1549 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1550 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1552 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1553 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1554 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1555 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1556 vfModuleCustomization.setVfModule(vfModule);
1557 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1558 .thenReturn(vfModuleCustomization);
1560 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1561 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1562 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1563 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1564 workflowAction.selectExecutionList(execution);
1565 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1567 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1568 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1572 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1573 String gAction = "replaceInstance";
1574 String resource = "VfModule";
1575 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1576 initExecution(gAction, bpmnRequest, true);
1577 execution.setVariable("requestUri",
1578 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1579 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1580 execution.setVariable("vfModuleId", "1234");
1582 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1583 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1584 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1585 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1586 vfModuleCustomization.setVfModule(vfModule);
1587 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1588 .thenReturn(vfModuleCustomization);
1590 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1591 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1592 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1593 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1594 workflowAction.selectExecutionList(execution);
1595 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1597 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1598 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1599 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1603 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1605 String gAction = "replaceInstanceRetainAssignments";
1606 String resource = "VfModule";
1607 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1608 initExecution(gAction, bpmnRequest, true);
1609 execution.setVariable("requestUri",
1610 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1611 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1612 execution.setVariable("vfModuleId", "1234");
1614 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1615 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1616 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1617 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1618 vfModuleCustomization.setVfModule(vfModule);
1619 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1620 .thenReturn(vfModuleCustomization);
1622 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1623 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1624 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1625 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1626 workflowAction.selectExecutionList(execution);
1627 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1629 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1630 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1631 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1635 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1636 String gAction = "replaceInstance";
1637 String resource = "VfModule";
1638 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1639 initExecution(gAction, bpmnRequest, true);
1640 execution.setVariable("requestUri",
1641 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1642 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1643 execution.setVariable("vfModuleId", "1234");
1645 VolumeGroup volumeGroup = new VolumeGroup();
1646 volumeGroup.setVolumeGroupId("volumeGroupId");
1647 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1648 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1650 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1651 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1652 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1653 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1654 vfModuleCustomization.setVfModule(vfModule);
1655 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1656 .thenReturn(vfModuleCustomization);
1658 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1659 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1660 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1661 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1662 workflowAction.selectExecutionList(execution);
1663 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1665 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1666 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1667 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1668 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1672 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1673 String gAction = "replaceInstanceRetainAssignments";
1674 String resource = "VfModule";
1675 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1676 initExecution(gAction, bpmnRequest, true);
1677 execution.setVariable("requestUri",
1678 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1679 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1680 execution.setVariable("vfModuleId", "1234");
1682 VolumeGroup volumeGroup = new VolumeGroup();
1683 volumeGroup.setVolumeGroupId("volumeGroupId");
1684 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1685 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1687 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1688 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1689 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1690 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1691 vfModuleCustomization.setVfModule(vfModule);
1692 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1693 .thenReturn(vfModuleCustomization);
1695 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1696 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1697 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1698 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1699 workflowAction.selectExecutionList(execution);
1700 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1702 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1703 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1704 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1705 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1709 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1710 String gAction = "deleteInstance";
1711 String resource = "VfModule";
1712 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1713 initExecution(gAction, bpmnRequest, true);
1714 execution.setVariable("requestUri",
1715 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1717 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1718 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1719 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1720 northBoundRequest.setOrchestrationFlowList(orchFlows);
1722 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1723 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1725 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1726 vnf.setVnfId("vnf0");
1727 vnf.setModelCustomizationId("modelCustomizationId");
1728 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1730 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1731 vfModule.setModelCustomizationId("modelCustomizationId");
1732 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1734 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1735 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1736 vnfc.setModelInvariantId("modelInvariantId");
1737 vnfc.setVnfcName("testVnfcName");
1739 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1742 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1743 configuration.setConfigurationId("configurationId");
1744 configuration.setModelCustomizationId("modelCustimizationId");
1745 configuration.setConfigurationName("testConfigurationName");
1746 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1749 SPY_workflowAction.selectExecutionList(execution);
1750 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1751 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1752 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1756 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1757 String gAction = "createInstance";
1758 String resource = "VfModule";
1759 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1760 initExecution(gAction, bpmnRequest, true);
1761 execution.setVariable("requestUri",
1762 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1764 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1765 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1766 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1767 northBoundRequest.setOrchestrationFlowList(orchFlows);
1769 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1770 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1771 workflowAction.selectExecutionList(execution);
1772 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1773 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1777 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1778 String gAction = "deleteInstance";
1779 ObjectMapper mapper = new ObjectMapper();
1780 WorkflowType resourceType = WorkflowType.VFMODULE;
1781 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1782 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1783 execution.setVariable("requestAction", gAction);
1784 execution.setVariable("bpmnRequest", bpmnRequest);
1785 execution.setVariable("vnfId", "1234");
1786 execution.setVariable("vfModuleId", "vfModuleId1234");
1787 execution.setVariable("requestUri",
1788 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1789 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1790 RequestDetails requestDetails = sIRequest.getRequestDetails();
1791 String requestAction = "deleteInstance";
1792 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1793 boolean aLaCarte = true;
1794 String apiVersion = "7";
1795 String vnfType = "vnfType";
1796 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1797 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1798 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1799 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1801 thrown.expect(AAIEntityNotFoundException.class);
1802 thrown.expectMessage(containsString(
1803 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1805 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1806 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1808 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1809 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1810 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1811 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1813 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1814 vnf.setVnfId("vnf0");
1815 vnf.setModelCustomizationId("modelCustomizationId");
1816 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1818 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1819 vfModule.setModelCustomizationId("modelCustomizationId");
1820 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1822 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1826 public void getConfigBuildingBlocksTest() throws Exception {
1827 String gAction = "deleteInstance";
1828 ObjectMapper mapper = new ObjectMapper();
1829 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1831 WorkflowType resourceType = WorkflowType.VFMODULE;
1832 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1833 execution.setVariable("requestAction", gAction);
1834 String bpmnRequest =
1835 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1836 execution.setVariable("bpmnRequest", bpmnRequest);
1837 execution.setVariable("vnfId", "1234");
1838 execution.setVariable("vfModuleId", "vfModuleId1234");
1839 execution.setVariable("requestUri",
1840 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1841 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1842 RequestDetails requestDetails = sIRequest.getRequestDetails();
1843 String requestAction = "deleteInstance";
1844 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1845 boolean aLaCarte = true;
1846 String apiVersion = "7";
1847 String vnfType = "vnfType";
1848 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1849 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1850 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1851 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1853 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1854 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1856 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1857 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1858 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1859 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1861 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1862 vnf.setVnfId("vnf0");
1863 vnf.setModelCustomizationId("modelCustomizationId");
1864 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1866 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1867 vfModule.setModelCustomizationId("modelCustomizationId");
1869 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1870 config1.setConfigurationId("config1");
1871 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1872 config2.setConfigurationId("config2");
1874 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1875 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1876 vnfc1.setVnfcName("zauk53avetd02svm001");
1877 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1878 vnfc2.setVnfcName("zauk53avetd02tvm001");
1882 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1883 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1884 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1885 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1886 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1887 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1888 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1890 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1892 assertFalse(results.isEmpty());
1893 assertEquals(2, results.size());
1894 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1895 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1896 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1897 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1901 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1902 String gAction = "deleteInstance";
1903 ObjectMapper mapper = new ObjectMapper();
1904 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1906 WorkflowType resourceType = WorkflowType.VFMODULE;
1907 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1908 execution.setVariable("requestAction", gAction);
1909 String bpmnRequest =
1910 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1911 execution.setVariable("bpmnRequest", bpmnRequest);
1912 execution.setVariable("vnfId", "1234");
1913 execution.setVariable("vfModuleId", "vfModuleId1234");
1914 execution.setVariable("requestUri",
1915 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1916 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1917 RequestDetails requestDetails = sIRequest.getRequestDetails();
1918 String requestAction = "deleteInstance";
1919 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1920 boolean aLaCarte = true;
1921 String apiVersion = "7";
1922 String vnfType = "vnfType";
1923 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1924 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1925 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1926 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1928 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1929 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1931 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1932 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1933 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1934 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1936 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1937 vnf.setVnfId("vnf0");
1938 vnf.setModelCustomizationId("modelCustomizationId");
1939 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1941 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1942 vfModule.setModelCustomizationId("modelCustomizationId");
1944 /* this is a test case where configuration for vnfc is null */
1945 org.onap.aai.domain.yang.Configuration config1 = null;
1946 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1947 config2.setConfigurationId("config2");
1949 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1950 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1951 vnfc1.setVnfcName("zauk53avetd02svm001");
1952 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1953 vnfc2.setVnfcName("zauk53avetd02tvm001");
1957 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1958 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1959 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1960 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1961 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1962 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1963 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1965 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1967 assertFalse(results.isEmpty());
1968 assertEquals(1, results.size());
1969 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1970 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1974 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1975 String gAction = "deleteInstance";
1976 String resource = "VfModule";
1977 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1978 initExecution(gAction, bpmnRequest, true);
1979 execution.setVariable("requestUri",
1980 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1982 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1983 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1984 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1985 northBoundRequest.setOrchestrationFlowList(orchFlows);
1987 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1988 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1990 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1991 vnf.setVnfId("vnf0");
1992 vnf.setModelCustomizationId("modelCustomizationId");
1993 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1995 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1996 vfModule.setModelCustomizationId("modelCustomizationId");
1997 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1999 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
2001 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
2004 SPY_workflowAction.selectExecutionList(execution);
2005 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2006 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
2010 public void selectExecutionListMacroResumeTest() throws Exception {
2011 String gAction = "createInstance";
2012 String resource = "Service";
2013 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
2014 initExecution(gAction, bpmnRequest, false);
2015 execution.setVariable("requestUri", "v6/serviceInstances/123");
2017 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2018 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2019 northBoundRequest.setOrchestrationFlowList(orchFlows);
2021 Service service = new Service();
2022 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2024 ServiceInstance si = new ServiceInstance();
2026 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
2027 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
2029 String flowsToExecuteString =
2030 "[{\"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\"}}]";
2031 ObjectMapper om = new ObjectMapper();
2032 List<ExecuteBuildingBlock> flowsToExecute = null;
2034 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
2035 flowsToExecute = Arrays.asList(asArray);
2036 } catch (Exception e) {
2037 e.printStackTrace();
2040 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
2042 workflowAction.selectExecutionList(execution);
2043 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
2044 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
2048 public void getRelatedResourcesInVfModuleTest() throws Exception {
2049 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
2050 vnfc.setModelInvariantId("modelInvariantId");
2051 vnfc.setVnfcName("testVnfcName");
2053 String vfncPayload =
2054 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
2055 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
2057 String configurationPayload =
2058 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
2059 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
2060 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
2061 configurationResultWrappers.add(configurationWrapper);
2063 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
2064 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
2066 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
2068 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
2069 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
2070 assertEquals("testConfigurationId", configuration.getConfigurationId());
2074 * WorkflowActionBB Tests
2078 public void pluralTest() {
2079 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
2080 "networks, Network", "invalidNames, invalidNames");
2081 items.forEach(item -> {
2082 String[] split = item.split(",");
2083 String type = split[0].trim();
2084 String expected = split[1].trim();
2085 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
2090 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
2091 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2093 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
2094 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2095 executeFlows.add(ebb);
2097 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
2098 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2099 executeFlows.add(ebb2);
2101 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
2102 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2103 executeFlows.add(ebb3);
2105 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
2106 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2107 executeFlows.add(ebb4);
2109 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
2110 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2111 executeFlows.add(ebb5);
2113 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
2114 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2115 executeFlows.add(ebb6);
2117 List<ExecuteBuildingBlock> sorted =
2118 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
2119 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
2120 "CreateNetworkBB", "ActivateNetworkBB");
2124 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
2125 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
2127 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
2128 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
2129 executeFlows.add(ebb);
2131 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
2132 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
2133 executeFlows.add(ebb2);
2135 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
2136 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
2137 executeFlows.add(ebb3);
2139 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
2140 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
2141 executeFlows.add(ebb4);
2143 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
2144 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
2145 executeFlows.add(ebb5);
2147 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
2148 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
2149 executeFlows.add(ebb6);
2151 List<ExecuteBuildingBlock> sorted =
2152 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
2153 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
2154 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
2158 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
2159 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2160 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
2161 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
2162 northBoundRequest.setOrchestrationFlowList(orchFlows);
2163 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
2164 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
2166 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
2167 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
2168 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
2169 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
2170 WorkflowType.VNF, false, "my-custom-cloud-owner");
2171 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
2172 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
2173 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
2174 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
2175 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
2176 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
2177 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
2178 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
2179 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
2180 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
2184 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
2185 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2186 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2187 northBoundRequest.setOrchestrationFlowList(orchFlows);
2188 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
2189 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
2191 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
2192 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
2193 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
2197 public void extractResourceIdAndTypeFromUriTest() {
2198 String uri = "/v6/serviceInstances/123";
2199 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
2200 String uri3 = "/v6/serviceInstances";
2201 String uri4 = "/v6/serviceInstances/assign";
2202 String uri5 = "'/v6/serviceInstances/123/vnfs";
2203 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
2204 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
2205 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
2206 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
2207 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2208 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2209 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
2210 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
2211 assertEquals(expected1.getResourceId(), result.getResourceId());
2212 assertEquals(expected1.getResourceType(), result.getResourceType());
2213 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
2214 assertEquals(expected2.getResourceId(), result.getResourceId());
2215 assertEquals(expected2.getResourceType(), result.getResourceType());
2216 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
2217 assertEquals("Service", result.getResourceType().toString());
2218 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2219 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
2220 assertEquals("Service", result.getResourceType().toString());
2221 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2222 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
2223 assertEquals("Vnf", result.getResourceType().toString());
2224 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2225 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
2226 assertEquals(expected3.getResourceId(), result.getResourceId());
2227 assertEquals(expected3.getResourceType(), result.getResourceType());
2228 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
2229 assertEquals(expected4.getResourceId(), result.getResourceId());
2230 assertEquals(expected4.getResourceType(), result.getResourceType());
2231 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
2232 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2233 assertEquals("VfModule", result.getResourceType().toString());
2238 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
2239 this.expectedException.expect(IllegalArgumentException.class);
2240 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
2241 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
2245 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
2246 this.expectedException.expect(IllegalArgumentException.class);
2247 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
2248 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2252 public void extractResourceIdAndTypeFromUriResumeTest() {
2253 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2254 "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");
2255 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2259 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2260 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2261 "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");
2262 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2266 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2267 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2268 "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");
2269 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2273 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2274 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2275 "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");
2276 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2280 public void isUriResumeTest() {
2281 assertTrue(workflowAction.isUriResume(
2282 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2283 assertTrue(workflowAction.isUriResume(
2284 " 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"));
2286 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2290 public void isRequestMacroServiceResumeTest() {
2291 ServiceInstance si = new ServiceInstance();
2292 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2293 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2294 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2298 public void populateResourceIdsFromApiHandlerTest() {
2299 execution.setVariable("serviceInstanceId", "123");
2300 execution.setVariable("vnfId", "888");
2301 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2302 assertEquals("123", x.getServiceInstanceId());
2303 assertEquals("888", x.getVnfId());
2304 assertNull(x.getVolumeGroupId());
2308 public void handleRuntimeExceptionTest() {
2309 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2310 execution.setVariable("testProcessKey", "testProcessKeyValue");
2312 workflowAction.handleRuntimeException(execution);
2313 } catch (BpmnError wfe) {
2314 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2318 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2319 List<OrchestrationFlow> result = new ArrayList<>();
2320 int sequenceNumber = 1;
2321 for (String flowName : flowNames) {
2322 OrchestrationFlow orchFlow = new OrchestrationFlow();
2323 orchFlow.setFlowName(flowName);
2324 orchFlow.setSequenceNumber(sequenceNumber++);
2325 result.add(orchFlow);
2330 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2331 for (int i = 0; i < ebbs.size(); i++) {
2332 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2334 assertEquals(ebbs.size(), flowNames.length);
2337 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2338 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2339 execution.setVariable("requestAction", gAction);
2340 execution.setVariable("bpmnRequest", bpmnRequest);
2341 execution.setVariable("aLaCarte", isAlaCarte);
2342 execution.setVariable("apiVersion", "7");
2345 private String readBpmnRequestFromFile(String fileName) throws IOException {
2346 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2349 private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
2350 List<Resource> resourceList = new ArrayList<>();
2351 Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
2352 resourceList.add(r1);
2353 Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2354 resourceList.add(r2);
2355 Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
2356 resourceList.add(r3);
2357 Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
2358 resourceList.add(r4);
2359 Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
2360 resourceList.add(r5);
2361 Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
2362 resourceList.add(r6);
2364 Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2365 resourceList.add(r7);
2368 r3.setProcessingPriority(2);
2369 r4.setProcessingPriority(1);
2370 r5.setProcessingPriority(4);
2371 r5.setBaseVfModule(true);
2372 r6.setProcessingPriority(3);
2374 return resourceList;