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 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 * ============LICENSE_END=========================================================
25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
27 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
28 import static org.hamcrest.CoreMatchers.containsString;
29 import static org.hamcrest.CoreMatchers.equalTo;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
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.junit.Assert.fail;
37 import static org.mockito.ArgumentMatchers.any;
38 import static org.mockito.ArgumentMatchers.anyList;
39 import static org.mockito.ArgumentMatchers.anyObject;
40 import static org.mockito.ArgumentMatchers.anyString;
41 import static org.mockito.ArgumentMatchers.eq;
42 import static org.mockito.ArgumentMatchers.isA;
43 import static org.mockito.Mockito.doReturn;
44 import static org.mockito.Mockito.doThrow;
45 import static org.mockito.Mockito.when;
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.ObjectMapper;
48 import java.io.IOException;
49 import java.net.MalformedURLException;
50 import java.nio.file.Files;
51 import java.nio.file.Paths;
52 import java.util.ArrayList;
53 import java.util.Arrays;
54 import java.util.List;
55 import java.util.Optional;
56 import java.util.UUID;
57 import org.camunda.bpm.engine.delegate.BpmnError;
58 import org.camunda.bpm.engine.delegate.DelegateExecution;
59 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
60 import org.javatuples.Pair;
61 import org.junit.Before;
62 import org.junit.Ignore;
63 import org.junit.Rule;
64 import org.junit.Test;
65 import org.junit.rules.ExpectedException;
66 import org.mockito.InjectMocks;
67 import org.mockito.Mock;
68 import org.mockito.Spy;
69 import org.onap.aai.domain.yang.Relationship;
70 import org.onap.aai.domain.yang.RelationshipList;
71 import org.onap.aai.domain.yang.ServiceInstance;
72 import org.onap.aai.domain.yang.VfModule;
73 import org.onap.aai.domain.yang.VolumeGroup;
74 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
75 import org.onap.aaiclient.client.aai.entities.Relationships;
76 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
77 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
78 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
79 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
80 import org.onap.so.bpmn.BaseTaskTest;
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";
122 protected Environment environment;
124 protected UserParamsServiceTraversal userParamsServiceTraversal;
127 private AaiResourceIdValidator aaiResourceIdValidator;
129 protected WorkflowAction workflowAction;
131 private DelegateExecution execution;
135 protected WorkflowAction SPY_workflowAction;
138 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
142 protected VnfEBBLoader vnfEBBLoaderSpy;
145 public ExpectedException thrown = ExpectedException.none();
147 private String RESOURCE_PATH = "src/test/resources/__files/";
149 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
150 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
151 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
152 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
153 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
154 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
155 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
156 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
157 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
158 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
159 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
160 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
161 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
162 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
165 public void before() throws Exception {
166 execution = new DelegateExecutionFake();
167 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
168 servInstance.setServiceInstanceId("TEST");
169 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
170 workflowAction.setBbInputSetupUtils(bbSetupUtils);
171 workflowAction.setBbInputSetup(bbInputSetup);
179 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
180 String gAction = "createInstance";
181 String resource = "Network";
182 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
183 initExecution(gAction, bpmnRequest, true);
184 execution.setVariable("requestUri", "v6/networks/123");
186 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
187 List<OrchestrationFlow> orchFlows =
188 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
189 northBoundRequest.setOrchestrationFlowList(orchFlows);
191 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
192 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
194 workflowAction.selectExecutionList(execution);
195 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
196 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
200 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
201 String gAction = "deleteInstance";
202 String resource = "Network";
203 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
204 initExecution(gAction, bpmnRequest, true);
205 execution.setVariable("requestUri", "v6/networks/123");
207 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
208 List<OrchestrationFlow> orchFlows =
209 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
210 northBoundRequest.setOrchestrationFlowList(orchFlows);
212 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
213 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
215 workflowAction.selectExecutionList(execution);
216 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
217 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
221 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
222 String gAction = "createInstance";
223 String resource = "Service";
224 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
225 initExecution(gAction, bpmnRequest, true);
226 execution.setVariable("requestUri", "v6/serviceInstances/123");
229 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
230 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
231 northBoundRequest.setOrchestrationFlowList(orchFlows);
233 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
234 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
235 workflowAction.selectExecutionList(execution);
236 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
237 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
241 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
242 String gAction = "createInstance";
243 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
244 initExecution(gAction, bpmnRequest, true);
245 execution.setVariable("requestUri", "v6/serviceInstances");
247 doThrow(new DuplicateNameException(
248 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
249 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
250 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
252 SPY_workflowAction.selectExecutionList(execution);
253 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
254 "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.");
256 // verify default values are present in failure case
257 assertEquals(true, execution.getVariable("isTopLevelFlow"));
258 assertEquals(false, execution.getVariable("sentSyncResponse"));
262 * SERVICE MACRO TESTS
265 public void selectExecutionListServiceMacroAssignTest() throws Exception {
266 String gAction = "assignInstance";
267 String resource = "Service";
268 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
269 initExecution(gAction, bpmnRequest, false);
270 execution.setVariable("requestUri", "v6/serviceInstances/123");
272 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
273 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
274 "AssignVolumeGroupBB", "AssignVfModuleBB");
275 northBoundRequest.setOrchestrationFlowList(orchFlows);
277 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
278 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
279 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
280 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
281 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
282 HeatTemplate volumeHeatTemplate = new HeatTemplate();
283 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
284 vfModuleCustomization.setVfModule(vfModule);
286 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
287 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
288 HeatEnvironment heatEnvironment = new HeatEnvironment();
289 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
290 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
291 HeatTemplate moduleHeatTemplate = new HeatTemplate();
292 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
293 vfModuleCustomization2.setVfModule(vfModule2);
295 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
296 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
298 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
299 .thenReturn(prepareListWithResources());
300 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
301 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
302 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
303 .thenReturn(vfModuleCustomization);
304 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
305 .thenReturn(vfModuleCustomization2);
306 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
307 .thenReturn(vfModuleCustomization3);
309 workflowAction.selectExecutionList(execution);
310 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
311 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
312 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
316 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
317 String gAction = "assignInstance";
318 String resource = "Service";
319 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
320 initExecution(gAction, bpmnRequest, false);
321 execution.setVariable("requestUri", "v6/serviceInstances/123");
323 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
324 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
325 "AssignVolumeGroupBB", "AssignVfModuleBB");
326 northBoundRequest.setOrchestrationFlowList(orchFlows);
328 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
329 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
330 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
331 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
332 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
333 HeatTemplate volumeHeatTemplate = new HeatTemplate();
334 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
335 vfModuleCustomization.setVfModule(vfModule);
337 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
338 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
339 HeatEnvironment heatEnvironment = new HeatEnvironment();
340 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
341 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
342 HeatTemplate moduleHeatTemplate = new HeatTemplate();
343 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
344 vfModuleCustomization2.setVfModule(vfModule2);
346 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
347 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
349 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
350 .thenReturn(prepareListWithResources());
351 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
352 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
353 false, "att-aic")).thenReturn(northBoundRequest);
354 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
355 .thenReturn(vfModuleCustomization);
356 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
357 .thenReturn(vfModuleCustomization2);
358 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
359 .thenReturn(vfModuleCustomization3);
360 workflowAction.selectExecutionList(execution);
361 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
362 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
363 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
367 public void selectExecutionListServiceMacroActivateTest() throws Exception {
368 String gAction = "activateInstance";
369 String resource = "Service";
370 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
371 initExecution(gAction, bpmnRequest, false);
372 execution.setVariable("requestUri", "v6/serviceInstances/si0");
374 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
375 List<OrchestrationFlow> orchFlows =
376 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
377 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
378 northBoundRequest.setOrchestrationFlowList(orchFlows);
380 ServiceInstance serviceInstanceAAI = new ServiceInstance();
381 serviceInstanceAAI.setServiceInstanceId("si0");
382 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
383 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
384 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
385 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
386 vnf.setVnfId("vnf0");
388 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
389 vnf.getVfModules().add(vfModule);
390 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
391 vnf.getVfModules().add(vfModule2);
393 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
394 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
395 volumeGroup.setVolumeGroupId("volumeGroup0");
396 vnf.getVolumeGroups().add(volumeGroup);
398 serviceInstanceMSO.getVnfs().add(vnf);
400 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
401 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
402 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
403 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
404 workflowAction.selectExecutionList(execution);
405 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
406 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
407 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
408 "ActivateServiceInstanceBB");
409 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
410 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
411 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
412 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
413 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
414 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
415 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
416 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
420 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
421 String gAction = "deactivateInstance";
422 String resource = "Service";
423 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
424 initExecution(gAction, bpmnRequest, false);
425 execution.setVariable("requestUri", "v6/serviceInstances/123");
427 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
428 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
429 northBoundRequest.setOrchestrationFlowList(orchFlows);
431 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
432 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
433 workflowAction.selectExecutionList(execution);
434 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
435 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
439 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
440 String gAction = "createInstance";
441 String resource = "Service";
442 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
443 initExecution(gAction, bpmnRequest, false);
444 execution.setVariable("requestUri", "v6/serviceInstances/123");
446 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
447 northBoundRequest.setIsToplevelflow(true);
448 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
449 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
450 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
451 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
452 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
453 northBoundRequest.setOrchestrationFlowList(orchFlows);
455 Service service = new Service();
456 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
457 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
458 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
459 workflowAction.selectExecutionList(execution);
460 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
461 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
465 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
466 String gAction = "createInstance";
467 String resource = "Service";
468 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
469 initExecution(gAction, bpmnRequest, false);
470 execution.setVariable("requestUri", "v6/serviceInstances/123");
472 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
473 northBoundRequest.setIsToplevelflow(true);
474 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
475 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
476 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
477 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
478 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
479 northBoundRequest.setOrchestrationFlowList(orchFlows);
481 Service service = new Service();
482 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
483 networkCustomization.setModelCustomizationUUID("1234");
484 service.getNetworkCustomizations().add(networkCustomization);
485 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
486 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
487 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
489 workflowAction.selectExecutionList(execution);
490 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
491 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
492 "ActivateNetworkBB", "ActivateServiceInstanceBB");
496 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
497 String gAction = "createInstance";
498 String resource = "Service";
499 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
500 initExecution(gAction, bpmnRequest, false);
501 execution.setVariable("requestUri", "v6/serviceInstances/123");
503 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
504 northBoundRequest.setIsToplevelflow(true);
505 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
506 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
507 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
508 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
509 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
510 northBoundRequest.setOrchestrationFlowList(orchFlows);
512 Service service = new Service();
513 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
514 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
515 networkCust.setModelCustomizationUUID("123");
516 networkCustomizations.add(networkCust);
517 service.setNetworkCustomizations(networkCustomizations);
518 NetworkCollectionResourceCustomization collectionResourceCustomization =
519 new NetworkCollectionResourceCustomization();
520 collectionResourceCustomization.setModelCustomizationUUID("123");
522 CollectionResource collectionResource = new CollectionResource();
523 collectionResource.setToscaNodeType("NetworkCollection");
524 InstanceGroup instanceGroup = new InstanceGroup();
525 instanceGroup.setToscaNodeType("NetworkCollectionResource");
526 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
527 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
528 new CollectionNetworkResourceCustomization();
529 collectionNetworkResourceCust.setModelCustomizationUUID("123");
530 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
531 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
532 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
533 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
534 new CollectionResourceInstanceGroupCustomization();
535 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
536 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
537 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
538 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
539 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
540 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
541 collectionResource.setInstanceGroup(instanceGroup);
542 collectionResourceCustomization.setCollectionResource(collectionResource);;
543 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
544 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
545 doReturn(collectionResourceCustomization).when(catalogDbClient)
546 .getNetworkCollectionResourceCustomizationByID("123");
547 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
548 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
549 workflowAction.selectExecutionList(execution);
550 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
551 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
552 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
553 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
554 "ActivateServiceInstanceBB");
555 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
556 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
557 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
558 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
559 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
561 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
564 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
565 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
566 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
567 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
568 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
570 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
573 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
574 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
575 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
576 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
577 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
579 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
585 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
586 String gAction = "createInstance";
587 String resource = "Service";
588 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
589 initExecution(gAction, bpmnRequest, false);
590 execution.setVariable("requestUri", "v6/serviceInstances/123");
592 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
593 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
594 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
595 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
596 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
597 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
598 northBoundRequest.setOrchestrationFlowList(orchFlows);
600 Service service = new Service();
601 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
603 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
604 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
605 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
606 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
607 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
608 HeatTemplate volumeHeatTemplate = new HeatTemplate();
609 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
610 vfModuleCustomization.setVfModule(vfModule);
612 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
613 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
614 HeatEnvironment heatEnvironment = new HeatEnvironment();
615 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
616 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
617 HeatTemplate moduleHeatTemplate = new HeatTemplate();
618 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
619 vfModuleCustomization2.setVfModule(vfModule2);
621 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
622 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
624 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
625 .thenReturn(prepareListWithResources());
626 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
627 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
628 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
629 .thenReturn(vfModuleCustomization);
630 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
631 .thenReturn(vfModuleCustomization2);
632 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
633 .thenReturn(vfModuleCustomization3);
634 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
635 workflowAction.selectExecutionList(execution);
636 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
637 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
638 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
639 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
640 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
641 "ActivateServiceInstanceBB");
643 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
644 int randomUUIDLength = UUID.randomUUID().toString().length();
645 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
646 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
647 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
651 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
652 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
655 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
656 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
657 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
658 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
659 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
660 assertEquals(true, execution.getVariable("homing"));
664 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
665 String gAction = "deleteInstance";
666 String resource = "Service";
667 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
668 initExecution(gAction, bpmnRequest, false);
669 execution.setVariable("requestUri", "v6/serviceInstances/123");
671 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
672 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
673 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
674 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
675 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
676 "UnassignServiceInstanceBB");
677 northBoundRequest.setOrchestrationFlowList(orchFlows);
679 ServiceInstance serviceInstanceAAI = new ServiceInstance();
680 serviceInstanceAAI.setServiceInstanceId("aaisi123");
681 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
682 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
683 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
684 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
685 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
686 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
687 vnf.setVnfId("vnfId123");
688 pnf.setPnfId("pnfId123");
690 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
691 vnf.getVfModules().add(vfModule);
692 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
693 vnf.getVfModules().add(vfModule2);
695 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
696 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
697 volumeGroup.setVolumeGroupId("vg123");
698 vnf.getVolumeGroups().add(volumeGroup);
700 serviceInstanceMSO.getVnfs().add(vnf);
701 serviceInstanceMSO.getPnfs().add(pnf);
703 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
704 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
705 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
706 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
707 workflowAction.selectExecutionList(execution);
708 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
709 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
710 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
711 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
712 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
716 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
717 String gAction = "deleteInstance";
718 String resource = "Service";
719 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
720 initExecution(gAction, bpmnRequest, false);
721 execution.setVariable("requestUri", "v6/serviceInstances/123");
723 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
724 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
725 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
726 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
727 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
728 "UnassignServiceInstanceBB");
729 northBoundRequest.setOrchestrationFlowList(orchFlows);
731 ServiceInstance serviceInstanceAAI = new ServiceInstance();
732 serviceInstanceAAI.setServiceInstanceId("aaisi123");
733 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
734 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
735 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
736 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
737 pnf.setPnfId("pnfId123");
739 serviceInstanceMSO.getPnfs().add(pnf);
741 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
742 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
743 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
744 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
745 workflowAction.selectExecutionList(execution);
746 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
747 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
751 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
752 String gAction = "unassignInstance";
753 String resource = "Service";
754 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
755 initExecution(gAction, bpmnRequest, false);
756 execution.setVariable("requestUri", "v6/serviceInstances/123");
758 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
759 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
760 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
761 northBoundRequest.setOrchestrationFlowList(orchFlows);
763 ServiceInstance serviceInstanceAAI = new ServiceInstance();
764 serviceInstanceAAI.setServiceInstanceId("aaisi123");
765 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
766 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
767 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
768 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
769 vnf.setVnfId("vnfId123");
771 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
772 vnf.getVfModules().add(vfModule);
773 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
774 vnf.getVfModules().add(vfModule2);
776 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
777 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
778 volumeGroup.setVolumeGroupId("vg123");
779 vnf.getVolumeGroups().add(volumeGroup);
781 serviceInstanceMSO.getVnfs().add(vnf);
783 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
784 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
785 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
786 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
787 workflowAction.selectExecutionList(execution);
788 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
789 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
790 "UnassignVnfBB", "UnassignServiceInstanceBB");
794 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
795 String gAction = "deleteInstance";
796 String resource = "Service";
797 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
798 initExecution(gAction, bpmnRequest, false);
799 execution.setVariable("requestUri", "v6/serviceInstances/123");
801 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
802 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
803 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
804 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
805 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
806 northBoundRequest.setOrchestrationFlowList(orchFlows);
808 ServiceInstance serviceInstanceAAI = new ServiceInstance();
809 serviceInstanceAAI.setServiceInstanceId("aaisi123");
810 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
811 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
813 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
814 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
815 network.setNetworkId("123");
816 serviceInstanceMSO.getNetworks().add(network);
817 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
818 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
819 network2.setNetworkId("321");
820 serviceInstanceMSO.getNetworks().add(network2);
822 Collection collection = new Collection();
823 serviceInstanceMSO.setCollection(collection);
825 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
826 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
827 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
828 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
829 workflowAction.selectExecutionList(execution);
830 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
831 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
832 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
833 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
837 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
838 String gAction = "recreateInstance";
839 String resource = "Vnf";
840 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
841 initExecution(gAction, bpmnRequest, false);
842 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
843 execution.setVariable("serviceInstanceId", "123");
844 execution.setVariable("vnfId", "1234");
846 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
847 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
848 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
849 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
850 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
851 "AAIUnsetVnfInMaintBB");
852 northBoundRequest.setOrchestrationFlowList(orchFlows);
854 ServiceInstance serviceInstanceAAI = new ServiceInstance();
855 serviceInstanceAAI.setServiceInstanceId("123");
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("1234");
862 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
863 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
864 vfModule.setVfModuleId("vfModule1");
865 vnf.getVfModules().add(vfModule);
866 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
867 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
868 vfModule2.setVfModuleId("vfModule2");
869 vnf.getVfModules().add(vfModule2);
871 serviceInstanceMSO.getVnfs().add(vnf);
873 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
874 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
875 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
876 false, "cloud-owner")).thenReturn(northBoundRequest);
877 workflowAction.selectExecutionList(execution);
878 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
879 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
880 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
881 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
882 "AAIUnsetVnfInMaintBB");
886 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
887 String gAction = "replaceInstance";
888 String resource = "Vnf";
889 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
890 initExecution(gAction, bpmnRequest, false);
891 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
892 execution.setVariable("serviceInstanceId", "123");
893 execution.setVariable("vnfId", "1234");
895 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
896 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
897 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
898 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
899 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
900 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
901 "AAIUnsetVnfInMaintBB");
902 northBoundRequest.setOrchestrationFlowList(orchFlows);
904 ServiceInstance serviceInstanceAAI = new ServiceInstance();
905 serviceInstanceAAI.setServiceInstanceId("123");
906 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
907 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
908 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
909 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
910 vnf.setVnfId("1234");
911 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
912 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
913 vfModule.setVfModuleId("vfModule1");
914 vnf.getVfModules().add(vfModule);
915 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
916 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
917 vfModule2.setVfModuleId("vfModule2");
918 vnf.getVfModules().add(vfModule2);
919 serviceInstanceMSO.getVnfs().add(vnf);
920 VfModule vfModuleAAI = new VfModule();
921 vfModuleAAI.setVfModuleId("vfModule2");
922 RelationshipList relationshipList = new RelationshipList();
923 Relationship relationship = new Relationship();
924 relationshipList.getRelationship().add(relationship);
925 vfModuleAAI.setRelationshipList(relationshipList);
926 Relationships relationships = new Relationships("abc");
927 Configuration config = new Configuration();
928 config.setConfigurationId("configId");
929 Optional<Configuration> configOp = Optional.of(config);
930 Optional<Relationships> relationshipsOp = Optional.of(relationships);
932 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
933 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
934 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
935 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
936 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
937 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
938 false, "cloud-owner")).thenReturn(northBoundRequest);
939 workflowAction.selectExecutionList(execution);
940 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
941 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
942 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
943 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
944 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
945 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
946 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
947 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
948 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
954 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
955 String gAction = "createInstance";
956 String resource = "NetworkCollection";
957 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
958 initExecution(gAction, bpmnRequest, false);
959 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
961 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
962 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
963 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
964 northBoundRequest.setOrchestrationFlowList(orchFlows);
966 Service service = new Service();
967 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
968 CollectionResource collectionResource = new CollectionResource();
969 collectionResource.setToscaNodeType("Data NetworkCollection Data");
970 collectionResourceCustomization.setCollectionResource(collectionResource);
971 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
973 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
974 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
975 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
976 workflowAction.selectExecutionList(execution);
977 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
978 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
979 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
980 "ActivateNetworkCollectionBB");
985 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
986 String gAction = "deleteInstance";
987 String resource = "NetworkCollection";
988 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
989 initExecution(gAction, bpmnRequest, false);
990 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
992 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
993 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
994 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
995 northBoundRequest.setOrchestrationFlowList(orchFlows);
997 Service service = new Service();
998 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
999 CollectionResource collectionResource = new CollectionResource();
1000 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1001 collectionResourceCustomization.setCollectionResource(collectionResource);
1002 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1004 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1005 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1006 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1007 workflowAction.selectExecutionList(execution);
1008 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1009 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1010 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1011 "DeleteNetworkCollectionBB");
1015 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1016 String gAction = "createInstance";
1017 String resource = "VfModule";
1018 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1019 initExecution(gAction, bpmnRequest, true);
1020 execution.setVariable("requestUri",
1021 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1023 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1024 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1025 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1026 northBoundRequest.setOrchestrationFlowList(orchFlows);
1028 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1029 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1030 workflowAction.selectExecutionList(execution);
1031 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1032 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1036 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1037 String gAction = "createInstance";
1038 String resource = "VfModule";
1039 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1040 initExecution(gAction, bpmnRequest, true);
1041 execution.setVariable("requestUri",
1042 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1044 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1045 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1046 "AddFabricConfigurationBB");
1047 northBoundRequest.setOrchestrationFlowList(orchFlows);
1049 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1050 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1051 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1052 new CvnfcConfigurationCustomization();
1053 ConfigurationResource configurationResource = new ConfigurationResource();
1054 configurationResource.setToscaNodeType("FabricConfiguration");
1055 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1056 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1057 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1058 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1059 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1060 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1061 cvnfcCustomization.setDescription("description");
1062 cvnfcCustomizations.add(cvnfcCustomization);
1064 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1065 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1066 new CvnfcConfigurationCustomization();
1067 ConfigurationResource configurationResource2 = new ConfigurationResource();
1068 configurationResource2.setToscaNodeType("FabricConfiguration");
1069 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1070 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1071 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1072 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1073 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1074 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1075 cvnfcCustomization2.setDescription("description2");
1076 cvnfcCustomizations.add(cvnfcCustomization2);
1078 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1079 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1081 workflowAction.selectExecutionList(execution);
1082 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1083 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1089 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1090 String gAction = "replaceInstance";
1091 String resource = "VfModule";
1092 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1093 initExecution(gAction, bpmnRequest, true);
1094 execution.setVariable("requestUri",
1095 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1097 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1098 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1099 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1100 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1101 workflowAction.selectExecutionList(execution);
1102 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1104 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1105 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1106 "ChangeModelServiceInstanceBB");
1110 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1111 String gAction = "replaceInstanceRetainAssignments";
1112 String resource = "VfModule";
1113 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1114 initExecution(gAction, bpmnRequest, true);
1115 execution.setVariable("requestUri",
1116 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1118 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1119 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
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");
1125 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1126 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1130 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1131 String gAction = "replaceInstance";
1132 String resource = "VfModule";
1133 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1134 initExecution(gAction, bpmnRequest, true);
1135 execution.setVariable("requestUri",
1136 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1137 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1138 execution.setVariable("vfModuleId", "1234");
1140 VolumeGroup volumeGroup = new VolumeGroup();
1141 volumeGroup.setVolumeGroupId("volumeGroupId");
1142 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1143 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1144 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1145 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1146 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1147 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1148 workflowAction.selectExecutionList(execution);
1149 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1151 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1152 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1153 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1157 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1159 String gAction = "replaceInstanceRetainAssignments";
1160 String resource = "VfModule";
1161 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1162 initExecution(gAction, bpmnRequest, true);
1163 execution.setVariable("requestUri",
1164 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1165 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1166 execution.setVariable("vfModuleId", "1234");
1168 VolumeGroup volumeGroup = new VolumeGroup();
1169 volumeGroup.setVolumeGroupId("volumeGroupId");
1170 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1171 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1173 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1174 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1175 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1176 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1177 workflowAction.selectExecutionList(execution);
1178 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1180 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1181 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1182 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1186 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1187 String gAction = "replaceInstance";
1188 String resource = "VfModule";
1189 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1190 initExecution(gAction, bpmnRequest, true);
1191 execution.setVariable("requestUri",
1192 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1193 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1194 execution.setVariable("vfModuleId", "1234");
1196 VolumeGroup volumeGroup = new VolumeGroup();
1197 volumeGroup.setVolumeGroupId("volumeGroupId");
1198 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1199 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1201 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1202 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1203 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1204 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1205 vfModuleCustomization.setVfModule(vfModule);
1206 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1207 .thenReturn(vfModuleCustomization);
1209 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1210 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1211 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1212 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1213 workflowAction.selectExecutionList(execution);
1214 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1216 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1217 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1218 "ChangeModelServiceInstanceBB");
1222 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() 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 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1233 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1234 vnf.setModelCustomizationId("modelCustomizationId");
1235 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1237 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1238 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1239 vfModuleFromAAI.setVfModuleId("1234");
1240 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1242 VolumeGroup volumeGroup = new VolumeGroup();
1243 volumeGroup.setVolumeGroupId("volumeGroupId");
1244 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1245 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1247 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1248 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1249 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1250 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1251 vfModuleCustomization.setVfModule(vfModule);
1252 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1253 .thenReturn(vfModuleCustomization);
1254 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1255 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1256 vnfc.setModelInvariantId("modelInvariantId");
1257 vnfc.setVnfcName("testVnfcName");
1259 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1261 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1262 configuration.setConfigurationId("configurationId");
1263 configuration.setModelCustomizationId("modelCustimizationId");
1264 configuration.setConfigurationName("testConfigurationName");
1265 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1267 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1268 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1269 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1270 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1271 SPY_workflowAction.selectExecutionList(execution);
1272 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1274 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1275 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1276 "ChangeModelServiceInstanceBB");
1280 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1281 String gAction = "replaceInstanceRetainAssignments";
1282 String resource = "VfModule";
1283 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1284 initExecution(gAction, bpmnRequest, true);
1285 execution.setVariable("requestUri",
1286 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1287 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1288 execution.setVariable("vfModuleId", "1234");
1290 VolumeGroup volumeGroup = new VolumeGroup();
1291 volumeGroup.setVolumeGroupId("volumeGroupId");
1292 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1293 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1295 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1296 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1297 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1298 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1299 vfModuleCustomization.setVfModule(vfModule);
1300 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1301 .thenReturn(vfModuleCustomization);
1303 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1304 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1305 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1306 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1307 workflowAction.selectExecutionList(execution);
1308 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1310 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1311 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1315 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1316 String gAction = "replaceInstance";
1317 String resource = "VfModule";
1318 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1319 initExecution(gAction, bpmnRequest, true);
1320 execution.setVariable("requestUri",
1321 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1322 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1323 execution.setVariable("vfModuleId", "1234");
1325 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1326 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1327 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1328 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1329 vfModuleCustomization.setVfModule(vfModule);
1330 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1331 .thenReturn(vfModuleCustomization);
1333 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1334 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1335 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1336 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1337 workflowAction.selectExecutionList(execution);
1338 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1340 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1341 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1342 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1346 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1348 String gAction = "replaceInstanceRetainAssignments";
1349 String resource = "VfModule";
1350 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1351 initExecution(gAction, bpmnRequest, true);
1352 execution.setVariable("requestUri",
1353 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1354 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1355 execution.setVariable("vfModuleId", "1234");
1357 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1358 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1359 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1360 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1361 vfModuleCustomization.setVfModule(vfModule);
1362 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1363 .thenReturn(vfModuleCustomization);
1365 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1366 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1367 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1368 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1369 workflowAction.selectExecutionList(execution);
1370 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1372 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1373 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1374 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1378 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1379 String gAction = "replaceInstance";
1380 String resource = "VfModule";
1381 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1382 initExecution(gAction, bpmnRequest, true);
1383 execution.setVariable("requestUri",
1384 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1385 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1386 execution.setVariable("vfModuleId", "1234");
1388 VolumeGroup volumeGroup = new VolumeGroup();
1389 volumeGroup.setVolumeGroupId("volumeGroupId");
1390 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1391 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1393 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1394 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1395 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1396 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1397 vfModuleCustomization.setVfModule(vfModule);
1398 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1399 .thenReturn(vfModuleCustomization);
1401 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1402 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1403 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1404 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1405 workflowAction.selectExecutionList(execution);
1406 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1408 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1409 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1410 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1411 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1415 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1416 String gAction = "replaceInstanceRetainAssignments";
1417 String resource = "VfModule";
1418 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1419 initExecution(gAction, bpmnRequest, true);
1420 execution.setVariable("requestUri",
1421 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1422 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1423 execution.setVariable("vfModuleId", "1234");
1425 VolumeGroup volumeGroup = new VolumeGroup();
1426 volumeGroup.setVolumeGroupId("volumeGroupId");
1427 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1428 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1430 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1431 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1432 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1433 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1434 vfModuleCustomization.setVfModule(vfModule);
1435 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1436 .thenReturn(vfModuleCustomization);
1438 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1439 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1440 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1441 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1442 workflowAction.selectExecutionList(execution);
1443 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1445 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1446 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1447 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1448 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1452 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1453 String gAction = "deleteInstance";
1454 String resource = "VfModule";
1455 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1456 initExecution(gAction, bpmnRequest, true);
1457 execution.setVariable("requestUri",
1458 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1460 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1461 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1462 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1463 northBoundRequest.setOrchestrationFlowList(orchFlows);
1465 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1466 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1468 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1469 vnf.setVnfId("vnf0");
1470 vnf.setModelCustomizationId("modelCustomizationId");
1471 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1473 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1474 vfModule.setModelCustomizationId("modelCustomizationId");
1475 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1477 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1478 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1479 vnfc.setModelInvariantId("modelInvariantId");
1480 vnfc.setVnfcName("testVnfcName");
1482 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1485 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1486 configuration.setConfigurationId("configurationId");
1487 configuration.setModelCustomizationId("modelCustimizationId");
1488 configuration.setConfigurationName("testConfigurationName");
1489 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1492 SPY_workflowAction.selectExecutionList(execution);
1493 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1494 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1495 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1499 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1500 String gAction = "createInstance";
1501 String resource = "VfModule";
1502 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1503 initExecution(gAction, bpmnRequest, true);
1504 execution.setVariable("requestUri",
1505 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1507 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1508 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1509 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1510 northBoundRequest.setOrchestrationFlowList(orchFlows);
1512 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1513 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1514 workflowAction.selectExecutionList(execution);
1515 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1516 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1520 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1521 String gAction = "deleteInstance";
1522 ObjectMapper mapper = new ObjectMapper();
1523 WorkflowType resourceType = WorkflowType.VFMODULE;
1524 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1525 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1526 execution.setVariable("requestAction", gAction);
1527 execution.setVariable("bpmnRequest", bpmnRequest);
1528 execution.setVariable("vnfId", "1234");
1529 execution.setVariable("vfModuleId", "vfModuleId1234");
1530 execution.setVariable("requestUri",
1531 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1532 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1533 RequestDetails requestDetails = sIRequest.getRequestDetails();
1534 String requestAction = "deleteInstance";
1535 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1536 boolean aLaCarte = true;
1537 String apiVersion = "7";
1538 String vnfType = "vnfType";
1539 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1540 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1541 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1542 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1544 thrown.expect(AAIEntityNotFoundException.class);
1545 thrown.expectMessage(containsString(
1546 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1548 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1549 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1551 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1552 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1553 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1554 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1556 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1557 vnf.setVnfId("vnf0");
1558 vnf.setModelCustomizationId("modelCustomizationId");
1559 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1561 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1562 vfModule.setModelCustomizationId("modelCustomizationId");
1563 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1565 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1569 public void getConfigBuildingBlocksTest() throws Exception {
1570 String gAction = "deleteInstance";
1571 ObjectMapper mapper = new ObjectMapper();
1572 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1574 WorkflowType resourceType = WorkflowType.VFMODULE;
1575 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1576 execution.setVariable("requestAction", gAction);
1577 String bpmnRequest =
1578 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1579 execution.setVariable("bpmnRequest", bpmnRequest);
1580 execution.setVariable("vnfId", "1234");
1581 execution.setVariable("vfModuleId", "vfModuleId1234");
1582 execution.setVariable("requestUri",
1583 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1584 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1585 RequestDetails requestDetails = sIRequest.getRequestDetails();
1586 String requestAction = "deleteInstance";
1587 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1588 boolean aLaCarte = true;
1589 String apiVersion = "7";
1590 String vnfType = "vnfType";
1591 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1592 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1593 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1594 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1596 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1597 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1599 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1600 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1601 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1602 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1604 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1605 vnf.setVnfId("vnf0");
1606 vnf.setModelCustomizationId("modelCustomizationId");
1607 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1609 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1610 vfModule.setModelCustomizationId("modelCustomizationId");
1612 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1613 config1.setConfigurationId("config1");
1614 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1615 config2.setConfigurationId("config2");
1617 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1618 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1619 vnfc1.setVnfcName("zauk53avetd02svm001");
1620 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1621 vnfc2.setVnfcName("zauk53avetd02tvm001");
1625 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1626 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1627 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1628 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1629 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1630 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1631 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1633 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1635 assertFalse(results.isEmpty());
1636 assertEquals(2, results.size());
1637 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1638 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1639 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1640 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1644 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1645 String gAction = "deleteInstance";
1646 ObjectMapper mapper = new ObjectMapper();
1647 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1649 WorkflowType resourceType = WorkflowType.VFMODULE;
1650 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1651 execution.setVariable("requestAction", gAction);
1652 String bpmnRequest =
1653 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1654 execution.setVariable("bpmnRequest", bpmnRequest);
1655 execution.setVariable("vnfId", "1234");
1656 execution.setVariable("vfModuleId", "vfModuleId1234");
1657 execution.setVariable("requestUri",
1658 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1659 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1660 RequestDetails requestDetails = sIRequest.getRequestDetails();
1661 String requestAction = "deleteInstance";
1662 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1663 boolean aLaCarte = true;
1664 String apiVersion = "7";
1665 String vnfType = "vnfType";
1666 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1667 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1668 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1669 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1671 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1672 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1674 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1675 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1676 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1677 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1679 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1680 vnf.setVnfId("vnf0");
1681 vnf.setModelCustomizationId("modelCustomizationId");
1682 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1684 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1685 vfModule.setModelCustomizationId("modelCustomizationId");
1687 /* this is a test case where configuration for vnfc is null */
1688 org.onap.aai.domain.yang.Configuration config1 = null;
1689 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1690 config2.setConfigurationId("config2");
1692 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1693 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1694 vnfc1.setVnfcName("zauk53avetd02svm001");
1695 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1696 vnfc2.setVnfcName("zauk53avetd02tvm001");
1700 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1701 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1702 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1703 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1704 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1705 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1706 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1708 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1710 assertFalse(results.isEmpty());
1711 assertEquals(1, results.size());
1712 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1713 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1717 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1718 String gAction = "deleteInstance";
1719 String resource = "VfModule";
1720 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1721 initExecution(gAction, bpmnRequest, true);
1722 execution.setVariable("requestUri",
1723 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1725 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1726 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1727 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1728 northBoundRequest.setOrchestrationFlowList(orchFlows);
1730 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1731 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1733 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1734 vnf.setVnfId("vnf0");
1735 vnf.setModelCustomizationId("modelCustomizationId");
1736 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1738 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1739 vfModule.setModelCustomizationId("modelCustomizationId");
1740 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1742 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1744 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1747 SPY_workflowAction.selectExecutionList(execution);
1748 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1749 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1753 public void selectExecutionListMacroResumeTest() throws Exception {
1754 String gAction = "createInstance";
1755 String resource = "Service";
1756 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1757 initExecution(gAction, bpmnRequest, false);
1758 execution.setVariable("requestUri", "v6/serviceInstances/123");
1760 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1761 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1762 northBoundRequest.setOrchestrationFlowList(orchFlows);
1764 Service service = new Service();
1765 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1767 ServiceInstance si = new ServiceInstance();
1769 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1770 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1772 String flowsToExecuteString =
1773 "[{\"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\"}}]";
1774 ObjectMapper om = new ObjectMapper();
1775 List<ExecuteBuildingBlock> flowsToExecute = null;
1777 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1778 flowsToExecute = Arrays.asList(asArray);
1779 } catch (Exception e) {
1780 e.printStackTrace();
1783 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1785 workflowAction.selectExecutionList(execution);
1786 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1787 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1791 public void getRelatedResourcesInVfModuleTest() throws Exception {
1792 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1793 vnfc.setModelInvariantId("modelInvariantId");
1794 vnfc.setVnfcName("testVnfcName");
1796 String vfncPayload =
1797 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1798 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1800 String configurationPayload =
1801 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1802 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1803 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1804 configurationResultWrappers.add(configurationWrapper);
1806 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1807 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1809 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1811 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1812 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1813 assertEquals("testConfigurationId", configuration.getConfigurationId());
1817 * WorkflowActionBB Tests
1821 public void pluralTest() {
1822 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1823 "networks, Network", "invalidNames, invalidNames");
1824 items.forEach(item -> {
1825 String[] split = item.split(",");
1826 String type = split[0].trim();
1827 String expected = split[1].trim();
1828 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1833 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1834 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1836 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1837 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1838 executeFlows.add(ebb);
1840 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1841 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1842 executeFlows.add(ebb2);
1844 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1845 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1846 executeFlows.add(ebb3);
1848 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1849 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1850 executeFlows.add(ebb4);
1852 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1853 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1854 executeFlows.add(ebb5);
1856 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1857 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1858 executeFlows.add(ebb6);
1860 List<ExecuteBuildingBlock> sorted =
1861 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1862 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1863 "CreateNetworkBB", "ActivateNetworkBB");
1867 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1868 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1870 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1871 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1872 executeFlows.add(ebb);
1874 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1875 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1876 executeFlows.add(ebb2);
1878 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1879 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1880 executeFlows.add(ebb3);
1882 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1883 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1884 executeFlows.add(ebb4);
1886 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1887 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1888 executeFlows.add(ebb5);
1890 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1891 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1892 executeFlows.add(ebb6);
1894 List<ExecuteBuildingBlock> sorted =
1895 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1896 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1897 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1901 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1902 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1903 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1904 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1905 northBoundRequest.setOrchestrationFlowList(orchFlows);
1906 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1907 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1909 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1910 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1911 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1912 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1913 WorkflowType.VNF, false, "my-custom-cloud-owner");
1914 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1915 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1916 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1917 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1918 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1919 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1920 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1921 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1922 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1923 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1927 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1928 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1929 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1930 northBoundRequest.setOrchestrationFlowList(orchFlows);
1931 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1932 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1934 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1935 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1936 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1940 public void extractResourceIdAndTypeFromUriTest() {
1941 String uri = "/v6/serviceInstances/123";
1942 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1943 String uri3 = "/v6/serviceInstances";
1944 String uri4 = "/v6/serviceInstances/assign";
1945 String uri5 = "'/v6/serviceInstances/123/vnfs";
1946 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1947 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1948 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1949 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1950 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1951 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1952 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1953 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1954 assertEquals(expected1.getResourceId(), result.getResourceId());
1955 assertEquals(expected1.getResourceType(), result.getResourceType());
1956 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1957 assertEquals(expected2.getResourceId(), result.getResourceId());
1958 assertEquals(expected2.getResourceType(), result.getResourceType());
1959 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1960 assertEquals("Service", result.getResourceType().toString());
1961 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1962 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1963 assertEquals("Service", result.getResourceType().toString());
1964 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1965 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1966 assertEquals("Vnf", result.getResourceType().toString());
1967 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1968 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1969 assertEquals(expected3.getResourceId(), result.getResourceId());
1970 assertEquals(expected3.getResourceType(), result.getResourceType());
1971 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1972 assertEquals(expected4.getResourceId(), result.getResourceId());
1973 assertEquals(expected4.getResourceType(), result.getResourceType());
1974 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1975 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1976 assertEquals("VfModule", result.getResourceType().toString());
1981 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1982 this.expectedException.expect(IllegalArgumentException.class);
1983 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1984 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1988 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1989 this.expectedException.expect(IllegalArgumentException.class);
1990 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1991 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1995 public void extractResourceIdAndTypeFromUriResumeTest() {
1996 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1997 "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");
1998 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2002 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2003 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2004 "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");
2005 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2009 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2010 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2011 "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");
2012 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2016 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2017 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2018 "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");
2019 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2023 public void isUriResumeTest() {
2024 assertTrue(workflowAction.isUriResume(
2025 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2026 assertTrue(workflowAction.isUriResume(
2027 " 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"));
2029 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2033 public void isRequestMacroServiceResumeTest() {
2034 ServiceInstance si = new ServiceInstance();
2035 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2036 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2037 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2041 public void populateResourceIdsFromApiHandlerTest() {
2042 execution.setVariable("serviceInstanceId", "123");
2043 execution.setVariable("vnfId", "888");
2044 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2045 assertEquals("123", x.getServiceInstanceId());
2046 assertEquals("888", x.getVnfId());
2047 assertNull(x.getVolumeGroupId());
2051 public void handleRuntimeExceptionTest() {
2052 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2053 execution.setVariable("testProcessKey", "testProcessKeyValue");
2055 workflowAction.handleRuntimeException(execution);
2056 } catch (BpmnError wfe) {
2057 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2063 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2064 execution.setVariable("testProcessKey", "testProcessKeyValue");
2065 Service service = new Service();
2066 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2067 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2068 networkCust.setModelCustomizationUUID("123");
2069 networkCustomizations.add(networkCust);
2070 service.setNetworkCustomizations(networkCustomizations);
2071 NetworkCollectionResourceCustomization collectionResourceCustomization =
2072 new NetworkCollectionResourceCustomization();
2073 collectionResourceCustomization.setModelCustomizationUUID("123");
2074 CollectionResource collectionResource = new CollectionResource();
2075 collectionResource.setToscaNodeType("NetworkCollection");
2076 InstanceGroup instanceGroup = new InstanceGroup();
2077 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2078 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2079 new CollectionResourceInstanceGroupCustomization();
2080 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2081 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2082 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2083 collectionResource.setInstanceGroup(instanceGroup);
2084 collectionResourceCustomization.setCollectionResource(collectionResource);;
2085 service.setModelUUID("abc");
2086 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2087 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2088 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2089 doReturn(collectionResourceCustomization).when(catalogDbClient)
2090 .getNetworkCollectionResourceCustomizationByID("123");
2091 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2092 ObjectMapper mapper = new ObjectMapper();
2093 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2094 List<Resource> resourceCounter = new ArrayList<>();
2095 thrown.expect(BpmnError.class);
2096 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2097 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2103 public void findCatalogNetworkCollectionTest() {
2104 Service service = new Service();
2105 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2106 networkCustomization.setModelCustomizationUUID("123");
2107 service.getCollectionResourceCustomizations().add(networkCustomization);
2108 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2109 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2110 assertNotNull(customization);
2114 public void findCatalogNetworkCollectionEmptyTest() {
2115 Service service = new Service();
2116 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2117 networkCustomization.setModelCustomizationUUID("123");
2118 service.getCollectionResourceCustomizations().add(networkCustomization);
2119 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2120 assertNull(customization);
2124 public void findCatalogNetworkCollectionMoreThanOneTest() {
2125 Service service = new Service();
2126 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2127 networkCustomization1.setModelCustomizationUUID("123");
2128 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2129 networkCustomization2.setModelCustomizationUUID("321");
2130 service.getCollectionResourceCustomizations().add(networkCustomization1);
2131 service.getCollectionResourceCustomizations().add(networkCustomization2);
2132 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2133 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2134 workflowAction.findCatalogNetworkCollection(execution, service);
2135 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2136 execution.getVariable("WorkflowActionErrorMessage"));
2141 public void traverseAAIServiceTest() {
2142 List<Resource> resourceCounter = new ArrayList<>();
2143 String resourceId = "si0";
2144 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2146 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2147 serviceInstanceAAI.setServiceInstanceId(resourceId);
2149 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2157 Configuration config = new Configuration();
2158 config.setConfigurationId("testConfigurationId2");
2159 serviceInstance.getConfigurations().add(config);
2161 Relationship relationship1 = new Relationship();
2162 relationship1.setRelatedTo("vnfc");
2163 RelationshipList relationshipList1 = new RelationshipList();
2164 relationshipList1.getRelationship().add(relationship1);
2166 Relationship relationship2 = new Relationship();
2167 relationship2.setRelatedTo("vpn-binding");
2168 RelationshipList relationshipList2 = new RelationshipList();
2169 relationshipList2.getRelationship().add(relationship2);
2171 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2172 aaiConfiguration1.setConfigurationId("testConfigurationId");
2173 aaiConfiguration1.setRelationshipList(relationshipList1);
2175 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2176 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2177 aaiConfiguration2.setRelationshipList(relationshipList1);
2180 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2181 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2182 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2183 .getConfiguration("testConfigurationId");
2184 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2185 .getConfiguration("testConfigurationId2");
2186 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2187 assertEquals(8, resourceCounter.size());
2188 assertTrue(resourceCounter.get(2).isBaseVfModule());
2189 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2190 } catch (Exception e) {
2191 fail("Unexpected exception was thrown.");
2196 public void foundRelatedTest() {
2197 List<Resource> resourceList = new ArrayList<>();
2198 resourceList.add(new Resource(WorkflowType.PNF, "model customization id", false));
2199 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2200 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2201 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2203 assertEquals(workflowAction.foundRelated(resourceList), true);
2207 public void containsWorkflowTypeTest() {
2208 List<Resource> resourceList = new ArrayList<>();
2209 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2210 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2211 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2212 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2214 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2215 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2216 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2217 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2218 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2221 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2222 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2223 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2224 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2225 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2226 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2227 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2228 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2229 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2233 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2234 List<OrchestrationFlow> result = new ArrayList<>();
2235 int sequenceNumber = 1;
2236 for (String flowName : flowNames) {
2237 OrchestrationFlow orchFlow = new OrchestrationFlow();
2238 orchFlow.setFlowName(flowName);
2239 orchFlow.setSequenceNumber(sequenceNumber++);
2240 result.add(orchFlow);
2245 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2246 for (int i = 0; i < ebbs.size(); i++) {
2247 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2249 assertEquals(ebbs.size(), flowNames.length);
2252 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2253 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2254 execution.setVariable("requestAction", gAction);
2255 execution.setVariable("bpmnRequest", bpmnRequest);
2256 execution.setVariable("aLaCarte", isAlaCarte);
2257 execution.setVariable("apiVersion", "7");
2260 private String readBpmnRequestFromFile(String fileName) throws IOException {
2261 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2264 private List<Resource> prepareListWithResources() {
2265 List<Resource> resourceList = new ArrayList<>();
2266 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2267 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2268 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2269 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2270 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2271 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2272 return resourceList;