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;
54 import java.util.Optional;
55 import java.util.UUID;
56 import org.camunda.bpm.engine.delegate.BpmnError;
57 import org.camunda.bpm.engine.delegate.DelegateExecution;
58 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
59 import org.junit.Before;
60 import org.junit.Ignore;
61 import org.junit.Rule;
62 import org.junit.Test;
63 import org.junit.rules.ExpectedException;
64 import org.mockito.InjectMocks;
65 import org.mockito.Mock;
66 import org.mockito.Spy;
67 import org.onap.aai.domain.yang.Relationship;
68 import org.onap.aai.domain.yang.RelationshipList;
69 import org.onap.aai.domain.yang.ServiceInstance;
70 import org.onap.aai.domain.yang.VfModule;
71 import org.onap.aai.domain.yang.VolumeGroup;
72 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
73 import org.onap.aaiclient.client.aai.entities.Relationships;
74 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
75 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
76 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
77 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
78 import org.onap.so.bpmn.BaseTaskTest;
79 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
80 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
81 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
82 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
83 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
84 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
85 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
86 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
87 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
88 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
89 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
90 import org.onap.so.db.catalog.beans.CollectionResource;
91 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
92 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
93 import org.onap.so.db.catalog.beans.ConfigurationResource;
94 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
95 import org.onap.so.db.catalog.beans.CvnfcCustomization;
96 import org.onap.so.db.catalog.beans.HeatEnvironment;
97 import org.onap.so.db.catalog.beans.HeatTemplate;
98 import org.onap.so.db.catalog.beans.InstanceGroup;
99 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
100 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
101 import org.onap.so.db.catalog.beans.Service;
102 import org.onap.so.db.catalog.beans.VfModuleCustomization;
103 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
104 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
105 import org.onap.so.serviceinstancebeans.RequestDetails;
106 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
107 import org.springframework.core.env.Environment;
109 public class WorkflowActionTest extends BaseTaskTest {
111 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
112 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
113 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
114 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
115 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
116 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
117 "VfModuleReplaceRebuildVolumeGroups.json";
118 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
119 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
120 private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
123 protected Environment environment;
125 protected UserParamsServiceTraversal userParamsServiceTraversal;
128 private AaiResourceIdValidator aaiResourceIdValidator;
130 protected WorkflowAction workflowAction;
132 private DelegateExecution execution;
136 protected WorkflowAction SPY_workflowAction;
139 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
143 protected VnfEBBLoader vnfEBBLoaderSpy;
147 protected ServiceEBBLoader serviceEBBLoader;
150 public ExpectedException thrown = ExpectedException.none();
152 private String RESOURCE_PATH = "src/test/resources/__files/";
154 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
155 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
156 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
157 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
158 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
159 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
160 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
161 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
162 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
163 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
164 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
165 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
166 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
167 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
170 public void before() throws Exception {
171 execution = new DelegateExecutionFake();
172 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
173 servInstance.setServiceInstanceId("TEST");
174 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
175 workflowAction.setBbInputSetupUtils(bbSetupUtils);
176 workflowAction.setBbInputSetup(bbInputSetup);
184 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
185 String gAction = "createInstance";
186 String resource = "Network";
187 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
188 initExecution(gAction, bpmnRequest, true);
189 execution.setVariable("requestUri", "v6/networks/123");
191 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
192 List<OrchestrationFlow> orchFlows =
193 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
194 northBoundRequest.setOrchestrationFlowList(orchFlows);
196 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
197 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
199 workflowAction.selectExecutionList(execution);
200 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
201 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
205 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
206 String gAction = "deleteInstance";
207 String resource = "Network";
208 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
209 initExecution(gAction, bpmnRequest, true);
210 execution.setVariable("requestUri", "v6/networks/123");
212 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
213 List<OrchestrationFlow> orchFlows =
214 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
215 northBoundRequest.setOrchestrationFlowList(orchFlows);
217 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
218 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
220 workflowAction.selectExecutionList(execution);
221 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
222 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
226 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
227 String gAction = "createInstance";
228 String resource = "Service";
229 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
230 initExecution(gAction, bpmnRequest, true);
231 execution.setVariable("requestUri", "v6/serviceInstances/123");
234 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
235 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
236 northBoundRequest.setOrchestrationFlowList(orchFlows);
238 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
239 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
240 workflowAction.selectExecutionList(execution);
241 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
242 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
246 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
247 String gAction = "createInstance";
248 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
249 initExecution(gAction, bpmnRequest, true);
250 execution.setVariable("requestUri", "v6/serviceInstances");
252 doThrow(new DuplicateNameException(
253 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
254 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
255 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
257 SPY_workflowAction.selectExecutionList(execution);
258 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
259 "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.");
261 // verify default values are present in failure case
262 assertEquals(true, execution.getVariable("isTopLevelFlow"));
263 assertEquals(false, execution.getVariable("sentSyncResponse"));
267 * SERVICE MACRO TESTS
270 public void selectExecutionListServiceMacroAssignTest() throws Exception {
271 String gAction = "assignInstance";
272 String resource = "Service";
273 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
274 initExecution(gAction, bpmnRequest, false);
275 execution.setVariable("requestUri", "v6/serviceInstances/123");
277 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
278 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
279 "AssignVolumeGroupBB", "AssignVfModuleBB");
280 northBoundRequest.setOrchestrationFlowList(orchFlows);
282 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
283 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
284 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
285 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
286 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
287 HeatTemplate volumeHeatTemplate = new HeatTemplate();
288 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
289 vfModuleCustomization.setVfModule(vfModule);
291 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
292 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
293 HeatEnvironment heatEnvironment = new HeatEnvironment();
294 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
295 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
296 HeatTemplate moduleHeatTemplate = new HeatTemplate();
297 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
298 vfModuleCustomization2.setVfModule(vfModule2);
300 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
301 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
303 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
304 .thenReturn(prepareListWithResources(false, false));
305 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
306 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
307 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
308 .thenReturn(vfModuleCustomization);
309 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
310 .thenReturn(vfModuleCustomization2);
311 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
312 .thenReturn(vfModuleCustomization3);
314 workflowAction.selectExecutionList(execution);
315 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
316 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
317 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
321 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
322 String gAction = "assignInstance";
323 String resource = "Service";
324 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
325 initExecution(gAction, bpmnRequest, false);
326 execution.setVariable("requestUri", "v6/serviceInstances/123");
328 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
329 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
330 "AssignVolumeGroupBB", "AssignVfModuleBB");
331 northBoundRequest.setOrchestrationFlowList(orchFlows);
333 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
334 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
335 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
336 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
337 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
338 HeatTemplate volumeHeatTemplate = new HeatTemplate();
339 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
340 vfModuleCustomization.setVfModule(vfModule);
342 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
343 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
344 HeatEnvironment heatEnvironment = new HeatEnvironment();
345 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
346 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
347 HeatTemplate moduleHeatTemplate = new HeatTemplate();
348 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
349 vfModuleCustomization2.setVfModule(vfModule2);
351 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
352 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
354 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
355 .thenReturn(prepareListWithResources(false, false));
356 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
357 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
358 false, "att-aic")).thenReturn(northBoundRequest);
359 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
360 .thenReturn(vfModuleCustomization);
361 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
362 .thenReturn(vfModuleCustomization2);
363 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
364 .thenReturn(vfModuleCustomization3);
365 workflowAction.selectExecutionList(execution);
366 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
367 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
368 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
372 public void selectExecutionListServiceMacroActivateTest() throws Exception {
373 String gAction = "activateInstance";
374 String resource = "Service";
375 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
376 initExecution(gAction, bpmnRequest, false);
377 execution.setVariable("requestUri", "v6/serviceInstances/si0");
379 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
380 List<OrchestrationFlow> orchFlows =
381 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
382 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
383 northBoundRequest.setOrchestrationFlowList(orchFlows);
385 ServiceInstance serviceInstanceAAI = new ServiceInstance();
386 serviceInstanceAAI.setServiceInstanceId("si0");
387 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
388 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
389 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
390 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
391 vnf.setVnfId("vnf0");
393 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
394 vnf.getVfModules().add(vfModule);
395 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
396 vnf.getVfModules().add(vfModule2);
398 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
399 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
400 volumeGroup.setVolumeGroupId("volumeGroup0");
401 vnf.getVolumeGroups().add(volumeGroup);
403 serviceInstanceMSO.getVnfs().add(vnf);
405 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
406 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
407 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
408 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
409 workflowAction.selectExecutionList(execution);
410 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
411 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
412 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
413 "ActivateServiceInstanceBB");
414 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
415 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
416 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
417 assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
418 assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
419 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
420 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
421 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
425 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
426 String gAction = "deactivateInstance";
427 String resource = "Service";
428 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
429 initExecution(gAction, bpmnRequest, false);
430 execution.setVariable("requestUri", "v6/serviceInstances/123");
432 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
433 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
434 northBoundRequest.setOrchestrationFlowList(orchFlows);
436 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
437 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
438 workflowAction.selectExecutionList(execution);
439 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
440 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
444 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
445 String gAction = "createInstance";
446 String resource = "Service";
447 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
448 initExecution(gAction, bpmnRequest, false);
449 execution.setVariable("requestUri", "v6/serviceInstances/123");
451 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
452 northBoundRequest.setIsToplevelflow(true);
453 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
454 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
455 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
456 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
457 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
458 northBoundRequest.setOrchestrationFlowList(orchFlows);
460 Service service = new Service();
461 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
462 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
463 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
464 workflowAction.selectExecutionList(execution);
465 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
466 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
470 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
471 String gAction = "createInstance";
472 String resource = "Service";
473 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
474 initExecution(gAction, bpmnRequest, false);
475 execution.setVariable("requestUri", "v6/serviceInstances/123");
477 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
478 northBoundRequest.setIsToplevelflow(true);
479 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
480 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
481 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
482 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
483 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
484 northBoundRequest.setOrchestrationFlowList(orchFlows);
486 Service service = new Service();
487 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
488 networkCustomization.setModelCustomizationUUID("1234");
489 service.getNetworkCustomizations().add(networkCustomization);
490 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
491 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
492 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
494 workflowAction.selectExecutionList(execution);
495 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
496 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
497 "ActivateNetworkBB", "ActivateServiceInstanceBB");
501 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
502 String gAction = "createInstance";
503 String resource = "Service";
504 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
505 initExecution(gAction, bpmnRequest, false);
506 execution.setVariable("requestUri", "v6/serviceInstances/123");
508 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
509 northBoundRequest.setIsToplevelflow(true);
510 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
511 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
512 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
513 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
514 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
515 northBoundRequest.setOrchestrationFlowList(orchFlows);
517 Service service = new Service();
518 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
519 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
520 networkCust.setModelCustomizationUUID("123");
521 networkCustomizations.add(networkCust);
522 service.setNetworkCustomizations(networkCustomizations);
523 NetworkCollectionResourceCustomization collectionResourceCustomization =
524 new NetworkCollectionResourceCustomization();
525 collectionResourceCustomization.setModelCustomizationUUID("123");
527 CollectionResource collectionResource = new CollectionResource();
528 collectionResource.setToscaNodeType("NetworkCollection");
529 InstanceGroup instanceGroup = new InstanceGroup();
530 instanceGroup.setToscaNodeType("NetworkCollectionResource");
531 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
532 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
533 new CollectionNetworkResourceCustomization();
534 collectionNetworkResourceCust.setModelCustomizationUUID("123");
535 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
536 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
537 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
538 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
539 new CollectionResourceInstanceGroupCustomization();
540 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
541 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
542 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
543 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
544 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
545 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
546 collectionResource.setInstanceGroup(instanceGroup);
547 collectionResourceCustomization.setCollectionResource(collectionResource);;
548 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
549 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
550 doReturn(collectionResourceCustomization).when(catalogDbClient)
551 .getNetworkCollectionResourceCustomizationByID("123");
552 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
553 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
554 workflowAction.selectExecutionList(execution);
555 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
556 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
557 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
558 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
559 "ActivateServiceInstanceBB");
560 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
562 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
564 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
566 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
569 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
570 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
571 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
572 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
573 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
575 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
578 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
579 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
580 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
581 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
582 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
584 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
590 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
591 String gAction = "createInstance";
592 String resource = "Service";
593 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
594 initExecution(gAction, bpmnRequest, false);
595 execution.setVariable("requestUri", "v6/serviceInstances/123");
597 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
598 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
599 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
600 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
601 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
602 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
603 northBoundRequest.setOrchestrationFlowList(orchFlows);
605 Service service = new Service();
606 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
608 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
609 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
610 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
611 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
612 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
613 HeatTemplate volumeHeatTemplate = new HeatTemplate();
614 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
615 vfModuleCustomization.setVfModule(vfModule);
617 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
618 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
619 HeatEnvironment heatEnvironment = new HeatEnvironment();
620 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
621 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
622 HeatTemplate moduleHeatTemplate = new HeatTemplate();
623 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
624 vfModuleCustomization2.setVfModule(vfModule2);
626 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
627 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
629 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
630 .thenReturn(prepareListWithResources(false, false));
631 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
632 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
633 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
634 .thenReturn(vfModuleCustomization);
635 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
636 .thenReturn(vfModuleCustomization2);
637 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
638 .thenReturn(vfModuleCustomization3);
639 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
640 workflowAction.selectExecutionList(execution);
641 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
642 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
643 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
644 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
645 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
646 "ActivateServiceInstanceBB");
648 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
649 int randomUUIDLength = UUID.randomUUID().toString().length();
650 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
651 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
652 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
655 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
656 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
657 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
658 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
659 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
660 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
661 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
662 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
663 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
664 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
665 assertEquals(true, execution.getVariable("homing"));
669 public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
670 String gAction = "createInstance";
671 String resource = "Service";
672 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
673 initExecution(gAction, bpmnRequest, false);
674 execution.setVariable("requestUri", "v6/serviceInstances/123");
676 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
677 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
678 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
679 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
680 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
681 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
682 "ActivateServiceInstanceBB");
683 northBoundRequest.setOrchestrationFlowList(orchFlows);
685 Service service = new Service();
686 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
688 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
689 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
690 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
691 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
692 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
693 HeatTemplate volumeHeatTemplate = new HeatTemplate();
694 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
695 vfModuleCustomization.setVfModule(vfModule);
697 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
698 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
699 HeatEnvironment heatEnvironment = new HeatEnvironment();
700 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
701 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
702 HeatTemplate moduleHeatTemplate = new HeatTemplate();
703 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
704 vfModuleCustomization2.setVfModule(vfModule2);
706 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
707 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
709 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
710 .thenReturn(prepareListWithResources(true, true));
711 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
712 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
713 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
714 .thenReturn(vfModuleCustomization);
715 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
716 .thenReturn(vfModuleCustomization2);
717 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
718 .thenReturn(vfModuleCustomization3);
719 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
720 workflowAction.selectExecutionList(execution);
721 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
722 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
723 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
724 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
725 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
726 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
728 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
729 int randomUUIDLength = UUID.randomUUID().toString().length();
730 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
731 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
732 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
733 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
734 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
735 assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
736 assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
737 assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
738 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
739 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
740 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
741 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
742 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
743 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
744 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
745 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
746 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
747 assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
748 assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
749 assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
750 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
751 assertEquals(true, execution.getVariable("homing"));
755 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
756 String gAction = "deleteInstance";
757 String resource = "Service";
758 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
759 initExecution(gAction, bpmnRequest, false);
760 execution.setVariable("requestUri", "v6/serviceInstances/123");
762 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
763 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
764 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
765 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
766 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
767 "UnassignServiceInstanceBB");
768 northBoundRequest.setOrchestrationFlowList(orchFlows);
770 ServiceInstance serviceInstanceAAI = new ServiceInstance();
771 serviceInstanceAAI.setServiceInstanceId("aaisi123");
772 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
773 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
774 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
775 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
776 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
777 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
778 vnf.setVnfId("vnfId123");
779 pnf.setPnfId("pnfId123");
781 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
782 vnf.getVfModules().add(vfModule);
783 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
784 vnf.getVfModules().add(vfModule2);
786 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
787 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
788 volumeGroup.setVolumeGroupId("vg123");
789 vnf.getVolumeGroups().add(volumeGroup);
791 serviceInstanceMSO.getVnfs().add(vnf);
792 serviceInstanceMSO.getPnfs().add(pnf);
794 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
795 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
796 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
797 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
798 workflowAction.selectExecutionList(execution);
799 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
800 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
801 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
802 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
803 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
807 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
808 String gAction = "deleteInstance";
809 String resource = "Service";
810 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
811 initExecution(gAction, bpmnRequest, false);
812 execution.setVariable("requestUri", "v6/serviceInstances/123");
814 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
815 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
816 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
817 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
818 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
819 "UnassignServiceInstanceBB");
820 northBoundRequest.setOrchestrationFlowList(orchFlows);
822 ServiceInstance serviceInstanceAAI = new ServiceInstance();
823 serviceInstanceAAI.setServiceInstanceId("aaisi123");
824 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
825 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
826 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
827 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
828 pnf.setPnfId("pnfId123");
830 serviceInstanceMSO.getPnfs().add(pnf);
832 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
833 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
834 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
835 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
836 workflowAction.selectExecutionList(execution);
837 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
838 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
842 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
843 String gAction = "unassignInstance";
844 String resource = "Service";
845 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
846 initExecution(gAction, bpmnRequest, false);
847 execution.setVariable("requestUri", "v6/serviceInstances/123");
849 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
850 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
851 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
852 northBoundRequest.setOrchestrationFlowList(orchFlows);
854 ServiceInstance serviceInstanceAAI = new ServiceInstance();
855 serviceInstanceAAI.setServiceInstanceId("aaisi123");
856 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
857 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
858 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
859 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
860 vnf.setVnfId("vnfId123");
862 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
863 vnf.getVfModules().add(vfModule);
864 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
865 vnf.getVfModules().add(vfModule2);
867 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
868 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
869 volumeGroup.setVolumeGroupId("vg123");
870 vnf.getVolumeGroups().add(volumeGroup);
872 serviceInstanceMSO.getVnfs().add(vnf);
874 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
875 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
876 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
877 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
878 workflowAction.selectExecutionList(execution);
879 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
880 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
881 "UnassignVnfBB", "UnassignServiceInstanceBB");
885 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
886 String gAction = "deleteInstance";
887 String resource = "Service";
888 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
889 initExecution(gAction, bpmnRequest, false);
890 execution.setVariable("requestUri", "v6/serviceInstances/123");
892 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
893 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
894 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
895 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
896 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
897 northBoundRequest.setOrchestrationFlowList(orchFlows);
899 ServiceInstance serviceInstanceAAI = new ServiceInstance();
900 serviceInstanceAAI.setServiceInstanceId("aaisi123");
901 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
902 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
904 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
905 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
906 network.setNetworkId("123");
907 serviceInstanceMSO.getNetworks().add(network);
908 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
909 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
910 network2.setNetworkId("321");
911 serviceInstanceMSO.getNetworks().add(network2);
913 Collection collection = new Collection();
914 serviceInstanceMSO.setCollection(collection);
916 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
917 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
918 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
919 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
920 workflowAction.selectExecutionList(execution);
921 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
922 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
923 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
924 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
928 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
929 String gAction = "recreateInstance";
930 String resource = "Vnf";
931 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
932 initExecution(gAction, bpmnRequest, false);
933 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
934 execution.setVariable("serviceInstanceId", "123");
935 execution.setVariable("vnfId", "1234");
937 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
938 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
939 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
940 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
941 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
942 "AAIUnsetVnfInMaintBB");
943 northBoundRequest.setOrchestrationFlowList(orchFlows);
945 ServiceInstance serviceInstanceAAI = new ServiceInstance();
946 serviceInstanceAAI.setServiceInstanceId("123");
947 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
948 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
949 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
950 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
951 vnf.setVnfId("1234");
953 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
954 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
955 vfModule.setVfModuleId("vfModule1");
956 vnf.getVfModules().add(vfModule);
957 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
958 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
959 vfModule2.setVfModuleId("vfModule2");
960 vnf.getVfModules().add(vfModule2);
962 serviceInstanceMSO.getVnfs().add(vnf);
964 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
965 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
966 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
967 false, "cloud-owner")).thenReturn(northBoundRequest);
968 workflowAction.selectExecutionList(execution);
969 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
970 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
971 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
972 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
973 "AAIUnsetVnfInMaintBB");
977 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
978 String gAction = "replaceInstance";
979 String resource = "Vnf";
980 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
981 initExecution(gAction, bpmnRequest, false);
982 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
983 execution.setVariable("serviceInstanceId", "123");
984 execution.setVariable("vnfId", "1234");
986 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
987 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
988 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
989 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
990 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
991 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
992 "AAIUnsetVnfInMaintBB");
993 northBoundRequest.setOrchestrationFlowList(orchFlows);
995 ServiceInstance serviceInstanceAAI = new ServiceInstance();
996 serviceInstanceAAI.setServiceInstanceId("123");
997 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
998 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
999 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
1000 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
1001 vnf.setVnfId("1234");
1002 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
1003 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1004 vfModule.setVfModuleId("vfModule1");
1005 vnf.getVfModules().add(vfModule);
1006 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
1007 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
1008 vfModule2.setVfModuleId("vfModule2");
1009 vnf.getVfModules().add(vfModule2);
1010 serviceInstanceMSO.getVnfs().add(vnf);
1011 VfModule vfModuleAAI = new VfModule();
1012 vfModuleAAI.setVfModuleId("vfModule2");
1013 RelationshipList relationshipList = new RelationshipList();
1014 Relationship relationship = new Relationship();
1015 relationshipList.getRelationship().add(relationship);
1016 vfModuleAAI.setRelationshipList(relationshipList);
1017 Relationships relationships = new Relationships("abc");
1018 Configuration config = new Configuration();
1019 config.setConfigurationId("configId");
1020 Optional<Configuration> configOp = Optional.of(config);
1021 Optional<Relationships> relationshipsOp = Optional.of(relationships);
1023 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
1024 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
1025 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
1026 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1027 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1028 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1029 false, "cloud-owner")).thenReturn(northBoundRequest);
1030 workflowAction.selectExecutionList(execution);
1031 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1032 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
1033 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1034 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
1035 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1036 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
1037 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
1038 "AAIUnsetVnfInMaintBB");
1039 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
1040 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
1046 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
1047 String gAction = "createInstance";
1048 String resource = "NetworkCollection";
1049 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1050 initExecution(gAction, bpmnRequest, false);
1051 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1053 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1054 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
1055 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
1056 northBoundRequest.setOrchestrationFlowList(orchFlows);
1058 Service service = new Service();
1059 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1060 CollectionResource collectionResource = new CollectionResource();
1061 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1062 collectionResourceCustomization.setCollectionResource(collectionResource);
1063 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1065 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1066 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1067 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1068 workflowAction.selectExecutionList(execution);
1069 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1070 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
1071 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
1072 "ActivateNetworkCollectionBB");
1077 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
1078 String gAction = "deleteInstance";
1079 String resource = "NetworkCollection";
1080 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
1081 initExecution(gAction, bpmnRequest, false);
1082 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1084 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1085 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1086 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1087 northBoundRequest.setOrchestrationFlowList(orchFlows);
1089 Service service = new Service();
1090 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1091 CollectionResource collectionResource = new CollectionResource();
1092 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1093 collectionResourceCustomization.setCollectionResource(collectionResource);
1094 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1096 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1097 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1098 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1099 workflowAction.selectExecutionList(execution);
1100 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1101 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1102 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1103 "DeleteNetworkCollectionBB");
1107 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1108 String gAction = "createInstance";
1109 String resource = "VfModule";
1110 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1111 initExecution(gAction, bpmnRequest, true);
1112 execution.setVariable("requestUri",
1113 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1115 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1116 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1117 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1118 northBoundRequest.setOrchestrationFlowList(orchFlows);
1120 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1121 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1122 workflowAction.selectExecutionList(execution);
1123 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1124 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1128 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1129 String gAction = "createInstance";
1130 String resource = "VfModule";
1131 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1132 initExecution(gAction, bpmnRequest, true);
1133 execution.setVariable("requestUri",
1134 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1136 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1137 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1138 "AddFabricConfigurationBB");
1139 northBoundRequest.setOrchestrationFlowList(orchFlows);
1141 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1142 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1143 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1144 new CvnfcConfigurationCustomization();
1145 ConfigurationResource configurationResource = new ConfigurationResource();
1146 configurationResource.setToscaNodeType("FabricConfiguration");
1147 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1148 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1149 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1150 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1151 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1152 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1153 cvnfcCustomization.setDescription("description");
1154 cvnfcCustomizations.add(cvnfcCustomization);
1156 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1157 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1158 new CvnfcConfigurationCustomization();
1159 ConfigurationResource configurationResource2 = new ConfigurationResource();
1160 configurationResource2.setToscaNodeType("FabricConfiguration");
1161 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1162 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1163 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1164 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1165 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1166 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1167 cvnfcCustomization2.setDescription("description2");
1168 cvnfcCustomizations.add(cvnfcCustomization2);
1170 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1171 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1173 workflowAction.selectExecutionList(execution);
1174 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1175 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1181 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1182 String gAction = "replaceInstance";
1183 String resource = "VfModule";
1184 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1185 initExecution(gAction, bpmnRequest, true);
1186 execution.setVariable("requestUri",
1187 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1189 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1190 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1191 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1192 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1193 workflowAction.selectExecutionList(execution);
1194 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1196 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1197 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1198 "ChangeModelServiceInstanceBB");
1202 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1203 String gAction = "replaceInstanceRetainAssignments";
1204 String resource = "VfModule";
1205 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1206 initExecution(gAction, bpmnRequest, true);
1207 execution.setVariable("requestUri",
1208 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1210 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1211 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1212 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1213 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1214 workflowAction.selectExecutionList(execution);
1215 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1217 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1218 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1222 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1223 String gAction = "replaceInstance";
1224 String resource = "VfModule";
1225 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1226 initExecution(gAction, bpmnRequest, true);
1227 execution.setVariable("requestUri",
1228 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1229 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1230 execution.setVariable("vfModuleId", "1234");
1232 VolumeGroup volumeGroup = new VolumeGroup();
1233 volumeGroup.setVolumeGroupId("volumeGroupId");
1234 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1235 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1236 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1237 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1238 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1239 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1240 workflowAction.selectExecutionList(execution);
1241 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1243 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1244 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1245 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1249 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1251 String gAction = "replaceInstanceRetainAssignments";
1252 String resource = "VfModule";
1253 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1254 initExecution(gAction, bpmnRequest, true);
1255 execution.setVariable("requestUri",
1256 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1257 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1258 execution.setVariable("vfModuleId", "1234");
1260 VolumeGroup volumeGroup = new VolumeGroup();
1261 volumeGroup.setVolumeGroupId("volumeGroupId");
1262 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1263 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1265 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1266 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1267 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1268 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1269 workflowAction.selectExecutionList(execution);
1270 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1272 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1273 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1274 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1278 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1279 String gAction = "replaceInstance";
1280 String resource = "VfModule";
1281 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1282 initExecution(gAction, bpmnRequest, true);
1283 execution.setVariable("requestUri",
1284 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1285 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1286 execution.setVariable("vfModuleId", "1234");
1288 VolumeGroup volumeGroup = new VolumeGroup();
1289 volumeGroup.setVolumeGroupId("volumeGroupId");
1290 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1291 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1293 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1294 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1295 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1296 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1297 vfModuleCustomization.setVfModule(vfModule);
1298 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1299 .thenReturn(vfModuleCustomization);
1301 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1302 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1303 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1304 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1305 workflowAction.selectExecutionList(execution);
1306 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1308 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1309 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1310 "ChangeModelServiceInstanceBB");
1314 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1315 String gAction = "replaceInstance";
1316 String resource = "VfModule";
1317 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1318 initExecution(gAction, bpmnRequest, true);
1319 execution.setVariable("requestUri",
1320 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1321 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1322 execution.setVariable("vfModuleId", "1234");
1324 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1325 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1326 vnf.setModelCustomizationId("modelCustomizationId");
1327 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1329 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1330 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1331 vfModuleFromAAI.setVfModuleId("1234");
1332 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1334 VolumeGroup volumeGroup = new VolumeGroup();
1335 volumeGroup.setVolumeGroupId("volumeGroupId");
1336 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1337 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1339 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1340 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1341 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1342 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1343 vfModuleCustomization.setVfModule(vfModule);
1344 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1345 .thenReturn(vfModuleCustomization);
1346 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1347 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1348 vnfc.setModelInvariantId("modelInvariantId");
1349 vnfc.setVnfcName("testVnfcName");
1351 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1353 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1354 configuration.setConfigurationId("configurationId");
1355 configuration.setModelCustomizationId("modelCustimizationId");
1356 configuration.setConfigurationName("testConfigurationName");
1357 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1359 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1360 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1361 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1362 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1363 SPY_workflowAction.selectExecutionList(execution);
1364 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1366 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1367 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1368 "ChangeModelServiceInstanceBB");
1372 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1373 String gAction = "replaceInstanceRetainAssignments";
1374 String resource = "VfModule";
1375 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1376 initExecution(gAction, bpmnRequest, true);
1377 execution.setVariable("requestUri",
1378 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1379 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1380 execution.setVariable("vfModuleId", "1234");
1382 VolumeGroup volumeGroup = new VolumeGroup();
1383 volumeGroup.setVolumeGroupId("volumeGroupId");
1384 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1385 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1387 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1388 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1389 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1390 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1391 vfModuleCustomization.setVfModule(vfModule);
1392 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1393 .thenReturn(vfModuleCustomization);
1395 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1396 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1397 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1398 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1399 workflowAction.selectExecutionList(execution);
1400 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1402 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1403 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1407 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1408 String gAction = "replaceInstance";
1409 String resource = "VfModule";
1410 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1411 initExecution(gAction, bpmnRequest, true);
1412 execution.setVariable("requestUri",
1413 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1414 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1415 execution.setVariable("vfModuleId", "1234");
1417 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1418 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1419 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1420 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1421 vfModuleCustomization.setVfModule(vfModule);
1422 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1423 .thenReturn(vfModuleCustomization);
1425 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1426 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1427 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1428 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1429 workflowAction.selectExecutionList(execution);
1430 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1432 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1433 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1434 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1438 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1440 String gAction = "replaceInstanceRetainAssignments";
1441 String resource = "VfModule";
1442 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1443 initExecution(gAction, bpmnRequest, true);
1444 execution.setVariable("requestUri",
1445 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1446 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1447 execution.setVariable("vfModuleId", "1234");
1449 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1450 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1451 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1452 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1453 vfModuleCustomization.setVfModule(vfModule);
1454 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1455 .thenReturn(vfModuleCustomization);
1457 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1458 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1459 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1460 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1461 workflowAction.selectExecutionList(execution);
1462 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1464 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1465 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1466 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1470 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1471 String gAction = "replaceInstance";
1472 String resource = "VfModule";
1473 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1474 initExecution(gAction, bpmnRequest, true);
1475 execution.setVariable("requestUri",
1476 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1477 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1478 execution.setVariable("vfModuleId", "1234");
1480 VolumeGroup volumeGroup = new VolumeGroup();
1481 volumeGroup.setVolumeGroupId("volumeGroupId");
1482 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1483 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1485 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1486 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1487 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1488 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1489 vfModuleCustomization.setVfModule(vfModule);
1490 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1491 .thenReturn(vfModuleCustomization);
1493 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1494 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1495 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1496 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1497 workflowAction.selectExecutionList(execution);
1498 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1500 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1501 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1502 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1503 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1507 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1508 String gAction = "replaceInstanceRetainAssignments";
1509 String resource = "VfModule";
1510 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1511 initExecution(gAction, bpmnRequest, true);
1512 execution.setVariable("requestUri",
1513 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1514 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1515 execution.setVariable("vfModuleId", "1234");
1517 VolumeGroup volumeGroup = new VolumeGroup();
1518 volumeGroup.setVolumeGroupId("volumeGroupId");
1519 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1520 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1522 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1523 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1524 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1525 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1526 vfModuleCustomization.setVfModule(vfModule);
1527 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1528 .thenReturn(vfModuleCustomization);
1530 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1531 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1532 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1533 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1534 workflowAction.selectExecutionList(execution);
1535 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1537 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1538 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1539 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1540 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1544 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1545 String gAction = "deleteInstance";
1546 String resource = "VfModule";
1547 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1548 initExecution(gAction, bpmnRequest, true);
1549 execution.setVariable("requestUri",
1550 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1552 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1553 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1554 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1555 northBoundRequest.setOrchestrationFlowList(orchFlows);
1557 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1558 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1560 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1561 vnf.setVnfId("vnf0");
1562 vnf.setModelCustomizationId("modelCustomizationId");
1563 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1565 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1566 vfModule.setModelCustomizationId("modelCustomizationId");
1567 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1569 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1570 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1571 vnfc.setModelInvariantId("modelInvariantId");
1572 vnfc.setVnfcName("testVnfcName");
1574 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1577 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1578 configuration.setConfigurationId("configurationId");
1579 configuration.setModelCustomizationId("modelCustimizationId");
1580 configuration.setConfigurationName("testConfigurationName");
1581 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1584 SPY_workflowAction.selectExecutionList(execution);
1585 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1586 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1587 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1591 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1592 String gAction = "createInstance";
1593 String resource = "VfModule";
1594 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1595 initExecution(gAction, bpmnRequest, true);
1596 execution.setVariable("requestUri",
1597 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1599 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1600 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1601 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1602 northBoundRequest.setOrchestrationFlowList(orchFlows);
1604 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1605 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1606 workflowAction.selectExecutionList(execution);
1607 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1608 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1612 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1613 String gAction = "deleteInstance";
1614 ObjectMapper mapper = new ObjectMapper();
1615 WorkflowType resourceType = WorkflowType.VFMODULE;
1616 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1617 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1618 execution.setVariable("requestAction", gAction);
1619 execution.setVariable("bpmnRequest", bpmnRequest);
1620 execution.setVariable("vnfId", "1234");
1621 execution.setVariable("vfModuleId", "vfModuleId1234");
1622 execution.setVariable("requestUri",
1623 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1624 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1625 RequestDetails requestDetails = sIRequest.getRequestDetails();
1626 String requestAction = "deleteInstance";
1627 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1628 boolean aLaCarte = true;
1629 String apiVersion = "7";
1630 String vnfType = "vnfType";
1631 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1632 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1633 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1634 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1636 thrown.expect(AAIEntityNotFoundException.class);
1637 thrown.expectMessage(containsString(
1638 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1640 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1641 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1643 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1644 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1645 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1646 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1648 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1649 vnf.setVnfId("vnf0");
1650 vnf.setModelCustomizationId("modelCustomizationId");
1651 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1653 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1654 vfModule.setModelCustomizationId("modelCustomizationId");
1655 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1657 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1661 public void getConfigBuildingBlocksTest() throws Exception {
1662 String gAction = "deleteInstance";
1663 ObjectMapper mapper = new ObjectMapper();
1664 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1666 WorkflowType resourceType = WorkflowType.VFMODULE;
1667 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1668 execution.setVariable("requestAction", gAction);
1669 String bpmnRequest =
1670 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1671 execution.setVariable("bpmnRequest", bpmnRequest);
1672 execution.setVariable("vnfId", "1234");
1673 execution.setVariable("vfModuleId", "vfModuleId1234");
1674 execution.setVariable("requestUri",
1675 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1676 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1677 RequestDetails requestDetails = sIRequest.getRequestDetails();
1678 String requestAction = "deleteInstance";
1679 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1680 boolean aLaCarte = true;
1681 String apiVersion = "7";
1682 String vnfType = "vnfType";
1683 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1684 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1685 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1686 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1688 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1689 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1691 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1692 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1693 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1694 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1696 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1697 vnf.setVnfId("vnf0");
1698 vnf.setModelCustomizationId("modelCustomizationId");
1699 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1701 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1702 vfModule.setModelCustomizationId("modelCustomizationId");
1704 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1705 config1.setConfigurationId("config1");
1706 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1707 config2.setConfigurationId("config2");
1709 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1710 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1711 vnfc1.setVnfcName("zauk53avetd02svm001");
1712 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1713 vnfc2.setVnfcName("zauk53avetd02tvm001");
1717 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1718 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1719 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1720 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1721 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1722 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1723 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1725 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1727 assertFalse(results.isEmpty());
1728 assertEquals(2, results.size());
1729 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1730 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1731 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1732 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1736 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1737 String gAction = "deleteInstance";
1738 ObjectMapper mapper = new ObjectMapper();
1739 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1741 WorkflowType resourceType = WorkflowType.VFMODULE;
1742 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1743 execution.setVariable("requestAction", gAction);
1744 String bpmnRequest =
1745 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1746 execution.setVariable("bpmnRequest", bpmnRequest);
1747 execution.setVariable("vnfId", "1234");
1748 execution.setVariable("vfModuleId", "vfModuleId1234");
1749 execution.setVariable("requestUri",
1750 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1751 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1752 RequestDetails requestDetails = sIRequest.getRequestDetails();
1753 String requestAction = "deleteInstance";
1754 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1755 boolean aLaCarte = true;
1756 String apiVersion = "7";
1757 String vnfType = "vnfType";
1758 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1759 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1760 Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
1761 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1763 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1764 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1766 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1767 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1768 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1769 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1771 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1772 vnf.setVnfId("vnf0");
1773 vnf.setModelCustomizationId("modelCustomizationId");
1774 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1776 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1777 vfModule.setModelCustomizationId("modelCustomizationId");
1779 /* this is a test case where configuration for vnfc is null */
1780 org.onap.aai.domain.yang.Configuration config1 = null;
1781 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1782 config2.setConfigurationId("config2");
1784 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1785 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1786 vnfc1.setVnfcName("zauk53avetd02svm001");
1787 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1788 vnfc2.setVnfcName("zauk53avetd02tvm001");
1792 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1793 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1794 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1795 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1796 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1797 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1798 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1800 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1802 assertFalse(results.isEmpty());
1803 assertEquals(1, results.size());
1804 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1805 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1809 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1810 String gAction = "deleteInstance";
1811 String resource = "VfModule";
1812 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1813 initExecution(gAction, bpmnRequest, true);
1814 execution.setVariable("requestUri",
1815 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1817 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1818 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1819 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1820 northBoundRequest.setOrchestrationFlowList(orchFlows);
1822 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1823 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1825 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1826 vnf.setVnfId("vnf0");
1827 vnf.setModelCustomizationId("modelCustomizationId");
1828 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1830 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1831 vfModule.setModelCustomizationId("modelCustomizationId");
1832 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1834 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1836 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1839 SPY_workflowAction.selectExecutionList(execution);
1840 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1841 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1845 public void selectExecutionListMacroResumeTest() throws Exception {
1846 String gAction = "createInstance";
1847 String resource = "Service";
1848 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1849 initExecution(gAction, bpmnRequest, false);
1850 execution.setVariable("requestUri", "v6/serviceInstances/123");
1852 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1853 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1854 northBoundRequest.setOrchestrationFlowList(orchFlows);
1856 Service service = new Service();
1857 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1859 ServiceInstance si = new ServiceInstance();
1861 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1862 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1864 String flowsToExecuteString =
1865 "[{\"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\"}}]";
1866 ObjectMapper om = new ObjectMapper();
1867 List<ExecuteBuildingBlock> flowsToExecute = null;
1869 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1870 flowsToExecute = Arrays.asList(asArray);
1871 } catch (Exception e) {
1872 e.printStackTrace();
1875 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1877 workflowAction.selectExecutionList(execution);
1878 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1879 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1883 public void getRelatedResourcesInVfModuleTest() throws Exception {
1884 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1885 vnfc.setModelInvariantId("modelInvariantId");
1886 vnfc.setVnfcName("testVnfcName");
1888 String vfncPayload =
1889 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1890 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1892 String configurationPayload =
1893 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1894 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1895 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1896 configurationResultWrappers.add(configurationWrapper);
1898 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1899 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1901 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1903 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1904 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1905 assertEquals("testConfigurationId", configuration.getConfigurationId());
1909 * WorkflowActionBB Tests
1913 public void pluralTest() {
1914 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1915 "networks, Network", "invalidNames, invalidNames");
1916 items.forEach(item -> {
1917 String[] split = item.split(",");
1918 String type = split[0].trim();
1919 String expected = split[1].trim();
1920 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1925 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1926 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1928 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1929 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1930 executeFlows.add(ebb);
1932 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1933 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1934 executeFlows.add(ebb2);
1936 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1937 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1938 executeFlows.add(ebb3);
1940 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1941 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1942 executeFlows.add(ebb4);
1944 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1945 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1946 executeFlows.add(ebb5);
1948 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1949 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1950 executeFlows.add(ebb6);
1952 List<ExecuteBuildingBlock> sorted =
1953 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1954 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1955 "CreateNetworkBB", "ActivateNetworkBB");
1959 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1960 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1962 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1963 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1964 executeFlows.add(ebb);
1966 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1967 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1968 executeFlows.add(ebb2);
1970 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1971 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1972 executeFlows.add(ebb3);
1974 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1975 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1976 executeFlows.add(ebb4);
1978 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1979 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1980 executeFlows.add(ebb5);
1982 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1983 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1984 executeFlows.add(ebb6);
1986 List<ExecuteBuildingBlock> sorted =
1987 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1988 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1989 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1993 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1994 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1995 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1996 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1997 northBoundRequest.setOrchestrationFlowList(orchFlows);
1998 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1999 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
2001 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
2002 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
2003 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
2004 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
2005 WorkflowType.VNF, false, "my-custom-cloud-owner");
2006 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
2007 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
2008 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
2009 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
2010 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
2011 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
2012 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
2013 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
2014 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
2015 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
2019 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
2020 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
2021 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
2022 northBoundRequest.setOrchestrationFlowList(orchFlows);
2023 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
2024 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
2026 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
2027 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
2028 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
2032 public void extractResourceIdAndTypeFromUriTest() {
2033 String uri = "/v6/serviceInstances/123";
2034 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
2035 String uri3 = "/v6/serviceInstances";
2036 String uri4 = "/v6/serviceInstances/assign";
2037 String uri5 = "'/v6/serviceInstances/123/vnfs";
2038 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
2039 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
2040 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
2041 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
2042 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2043 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
2044 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
2045 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
2046 assertEquals(expected1.getResourceId(), result.getResourceId());
2047 assertEquals(expected1.getResourceType(), result.getResourceType());
2048 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
2049 assertEquals(expected2.getResourceId(), result.getResourceId());
2050 assertEquals(expected2.getResourceType(), result.getResourceType());
2051 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
2052 assertEquals("Service", result.getResourceType().toString());
2053 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2054 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
2055 assertEquals("Service", result.getResourceType().toString());
2056 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2057 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
2058 assertEquals("Vnf", result.getResourceType().toString());
2059 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2060 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
2061 assertEquals(expected3.getResourceId(), result.getResourceId());
2062 assertEquals(expected3.getResourceType(), result.getResourceType());
2063 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
2064 assertEquals(expected4.getResourceId(), result.getResourceId());
2065 assertEquals(expected4.getResourceType(), result.getResourceType());
2066 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
2067 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
2068 assertEquals("VfModule", result.getResourceType().toString());
2073 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
2074 this.expectedException.expect(IllegalArgumentException.class);
2075 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
2076 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
2080 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
2081 this.expectedException.expect(IllegalArgumentException.class);
2082 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
2083 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2087 public void extractResourceIdAndTypeFromUriResumeTest() {
2088 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2089 "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");
2090 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2094 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2095 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2096 "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");
2097 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2101 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2102 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2103 "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");
2104 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2108 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2109 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2110 "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");
2111 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2115 public void isUriResumeTest() {
2116 assertTrue(workflowAction.isUriResume(
2117 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2118 assertTrue(workflowAction.isUriResume(
2119 " 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"));
2121 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2125 public void isRequestMacroServiceResumeTest() {
2126 ServiceInstance si = new ServiceInstance();
2127 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2128 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2129 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2133 public void populateResourceIdsFromApiHandlerTest() {
2134 execution.setVariable("serviceInstanceId", "123");
2135 execution.setVariable("vnfId", "888");
2136 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2137 assertEquals("123", x.getServiceInstanceId());
2138 assertEquals("888", x.getVnfId());
2139 assertNull(x.getVolumeGroupId());
2143 public void handleRuntimeExceptionTest() {
2144 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2145 execution.setVariable("testProcessKey", "testProcessKeyValue");
2147 workflowAction.handleRuntimeException(execution);
2148 } catch (BpmnError wfe) {
2149 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2153 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2154 List<OrchestrationFlow> result = new ArrayList<>();
2155 int sequenceNumber = 1;
2156 for (String flowName : flowNames) {
2157 OrchestrationFlow orchFlow = new OrchestrationFlow();
2158 orchFlow.setFlowName(flowName);
2159 orchFlow.setSequenceNumber(sequenceNumber++);
2160 result.add(orchFlow);
2165 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2166 for (int i = 0; i < ebbs.size(); i++) {
2167 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2169 assertEquals(ebbs.size(), flowNames.length);
2172 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2173 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2174 execution.setVariable("requestAction", gAction);
2175 execution.setVariable("bpmnRequest", bpmnRequest);
2176 execution.setVariable("aLaCarte", isAlaCarte);
2177 execution.setVariable("apiVersion", "7");
2180 private String readBpmnRequestFromFile(String fileName) throws IOException {
2181 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2184 private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
2185 List<Resource> resourceList = new ArrayList<>();
2186 Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
2187 resourceList.add(r1);
2188 Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2189 resourceList.add(r2);
2190 Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
2191 resourceList.add(r3);
2192 Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
2193 resourceList.add(r4);
2194 Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
2195 resourceList.add(r5);
2196 Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
2197 resourceList.add(r6);
2199 Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
2200 resourceList.add(r7);
2203 r3.setProcessingPriority(2);
2204 r4.setProcessingPriority(1);
2205 r5.setProcessingPriority(4);
2206 r5.setBaseVfModule(true);
2207 r6.setProcessingPriority(3);
2209 return resourceList;