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.servicedecomposition.bbobjects.Collection;
82 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
83 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
84 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
85 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
86 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
87 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
88 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
89 import org.onap.so.db.catalog.beans.CollectionResource;
90 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
91 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
92 import org.onap.so.db.catalog.beans.ConfigurationResource;
93 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
94 import org.onap.so.db.catalog.beans.CvnfcCustomization;
95 import org.onap.so.db.catalog.beans.HeatEnvironment;
96 import org.onap.so.db.catalog.beans.HeatTemplate;
97 import org.onap.so.db.catalog.beans.InstanceGroup;
98 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
99 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
100 import org.onap.so.db.catalog.beans.Service;
101 import org.onap.so.db.catalog.beans.VfModuleCustomization;
102 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
103 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
104 import org.onap.so.serviceinstancebeans.RequestDetails;
105 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
106 import org.springframework.core.env.Environment;
108 public class WorkflowActionTest extends BaseTaskTest {
110 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
111 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
112 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
113 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
114 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
115 "VfModuleReplaceRebuildVolumeGroups.json";
116 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
117 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
120 protected Environment environment;
122 protected UserParamsServiceTraversal userParamsServiceTraversal;
124 private AaiResourceIdValidator aaiResourceIdValidator;
126 protected WorkflowAction workflowAction;
128 private DelegateExecution execution;
132 protected WorkflowAction SPY_workflowAction;
135 public ExpectedException thrown = ExpectedException.none();
137 private String RESOURCE_PATH = "src/test/resources/__files/";
139 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
140 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
141 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
142 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
143 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
144 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
145 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
146 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
147 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
148 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
149 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
150 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
151 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
152 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
155 public void before() throws Exception {
156 execution = new DelegateExecutionFake();
157 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
158 servInstance.setServiceInstanceId("TEST");
159 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
160 workflowAction.setBbInputSetupUtils(bbSetupUtils);
161 workflowAction.setBbInputSetup(bbInputSetup);
168 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
169 String gAction = "createInstance";
170 String resource = "Network";
171 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
172 initExecution(gAction, bpmnRequest, true);
173 execution.setVariable("requestUri", "v6/networks/123");
175 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
176 List<OrchestrationFlow> orchFlows =
177 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
178 northBoundRequest.setOrchestrationFlowList(orchFlows);
180 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
181 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
182 workflowAction.selectExecutionList(execution);
183 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
184 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
188 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
189 String gAction = "deleteInstance";
190 String resource = "Network";
191 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
192 initExecution(gAction, bpmnRequest, true);
193 execution.setVariable("requestUri", "v6/networks/123");
195 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
196 List<OrchestrationFlow> orchFlows =
197 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
198 northBoundRequest.setOrchestrationFlowList(orchFlows);
200 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
201 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
202 workflowAction.selectExecutionList(execution);
203 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
204 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
208 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
209 String gAction = "createInstance";
210 String resource = "Service";
211 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
212 initExecution(gAction, bpmnRequest, true);
213 execution.setVariable("requestUri", "v6/serviceInstances/123");
216 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
217 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
218 northBoundRequest.setOrchestrationFlowList(orchFlows);
220 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
221 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
222 workflowAction.selectExecutionList(execution);
223 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
224 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
228 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
229 String gAction = "createInstance";
230 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
231 initExecution(gAction, bpmnRequest, true);
232 execution.setVariable("requestUri", "v6/serviceInstances");
234 doThrow(new DuplicateNameException(
235 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
236 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
237 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
239 SPY_workflowAction.selectExecutionList(execution);
240 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
241 "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.");
243 // verify default values are present in failure case
244 assertEquals(true, execution.getVariable("isTopLevelFlow"));
245 assertEquals(false, execution.getVariable("sentSyncResponse"));
249 * SERVICE MACRO TESTS
252 public void selectExecutionListServiceMacroAssignTest() throws Exception {
253 String gAction = "assignInstance";
254 String resource = "Service";
255 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
256 initExecution(gAction, bpmnRequest, false);
257 execution.setVariable("requestUri", "v6/serviceInstances/123");
259 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
260 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
261 "AssignVolumeGroupBB", "AssignVfModuleBB");
262 northBoundRequest.setOrchestrationFlowList(orchFlows);
264 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
265 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
266 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
267 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
268 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
269 HeatTemplate volumeHeatTemplate = new HeatTemplate();
270 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
271 vfModuleCustomization.setVfModule(vfModule);
273 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
274 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
275 HeatEnvironment heatEnvironment = new HeatEnvironment();
276 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
277 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
278 HeatTemplate moduleHeatTemplate = new HeatTemplate();
279 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
280 vfModuleCustomization2.setVfModule(vfModule2);
282 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
283 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
285 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
286 .thenReturn(prepareListWithResources());
287 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
288 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
289 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
290 .thenReturn(vfModuleCustomization);
291 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
292 .thenReturn(vfModuleCustomization2);
293 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
294 .thenReturn(vfModuleCustomization3);
295 workflowAction.selectExecutionList(execution);
296 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
297 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
298 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
302 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
303 String gAction = "assignInstance";
304 String resource = "Service";
305 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
306 initExecution(gAction, bpmnRequest, false);
307 execution.setVariable("requestUri", "v6/serviceInstances/123");
309 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
310 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
311 "AssignVolumeGroupBB", "AssignVfModuleBB");
312 northBoundRequest.setOrchestrationFlowList(orchFlows);
314 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
315 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
316 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
317 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
318 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
319 HeatTemplate volumeHeatTemplate = new HeatTemplate();
320 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
321 vfModuleCustomization.setVfModule(vfModule);
323 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
324 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
325 HeatEnvironment heatEnvironment = new HeatEnvironment();
326 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
327 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
328 HeatTemplate moduleHeatTemplate = new HeatTemplate();
329 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
330 vfModuleCustomization2.setVfModule(vfModule2);
332 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
333 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
335 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
336 .thenReturn(prepareListWithResources());
337 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
338 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
339 false, "att-aic")).thenReturn(northBoundRequest);
340 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
341 .thenReturn(vfModuleCustomization);
342 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
343 .thenReturn(vfModuleCustomization2);
344 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
345 .thenReturn(vfModuleCustomization3);
346 workflowAction.selectExecutionList(execution);
347 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
348 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
349 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
353 public void selectExecutionListServiceMacroActivateTest() throws Exception {
354 String gAction = "activateInstance";
355 String resource = "Service";
356 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
357 initExecution(gAction, bpmnRequest, false);
358 execution.setVariable("requestUri", "v6/serviceInstances/si0");
360 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
361 List<OrchestrationFlow> orchFlows =
362 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
363 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
364 northBoundRequest.setOrchestrationFlowList(orchFlows);
366 ServiceInstance serviceInstanceAAI = new ServiceInstance();
367 serviceInstanceAAI.setServiceInstanceId("si0");
368 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
369 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
370 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
371 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
372 vnf.setVnfId("vnf0");
374 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
375 vnf.getVfModules().add(vfModule);
376 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
377 vnf.getVfModules().add(vfModule2);
379 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
380 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
381 volumeGroup.setVolumeGroupId("volumeGroup0");
382 vnf.getVolumeGroups().add(volumeGroup);
384 serviceInstanceMSO.getVnfs().add(vnf);
386 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
387 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
388 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
389 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
390 workflowAction.selectExecutionList(execution);
391 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
392 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
393 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
394 "ActivateServiceInstanceBB");
395 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
396 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
397 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
398 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
399 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
400 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
401 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
402 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
406 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
407 String gAction = "deactivateInstance";
408 String resource = "Service";
409 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
410 initExecution(gAction, bpmnRequest, false);
411 execution.setVariable("requestUri", "v6/serviceInstances/123");
413 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
414 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
415 northBoundRequest.setOrchestrationFlowList(orchFlows);
417 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
418 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
419 workflowAction.selectExecutionList(execution);
420 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
421 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
425 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
426 String gAction = "createInstance";
427 String resource = "Service";
428 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
429 initExecution(gAction, bpmnRequest, false);
430 execution.setVariable("requestUri", "v6/serviceInstances/123");
432 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
433 northBoundRequest.setIsToplevelflow(true);
434 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
435 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
436 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
437 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
438 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
439 northBoundRequest.setOrchestrationFlowList(orchFlows);
441 Service service = new Service();
442 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
443 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
444 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
445 workflowAction.selectExecutionList(execution);
446 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
447 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
451 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
452 String gAction = "createInstance";
453 String resource = "Service";
454 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
455 initExecution(gAction, bpmnRequest, false);
456 execution.setVariable("requestUri", "v6/serviceInstances/123");
458 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
459 northBoundRequest.setIsToplevelflow(true);
460 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
461 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
462 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
463 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
464 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
465 northBoundRequest.setOrchestrationFlowList(orchFlows);
467 Service service = new Service();
468 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
469 networkCustomization.setModelCustomizationUUID("1234");
470 service.getNetworkCustomizations().add(networkCustomization);
471 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
472 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
473 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
474 workflowAction.selectExecutionList(execution);
475 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
476 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
477 "ActivateNetworkBB", "ActivateServiceInstanceBB");
481 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
482 String gAction = "createInstance";
483 String resource = "Service";
484 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
485 initExecution(gAction, bpmnRequest, false);
486 execution.setVariable("requestUri", "v6/serviceInstances/123");
488 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
489 northBoundRequest.setIsToplevelflow(true);
490 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
491 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
492 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
493 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
494 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
495 northBoundRequest.setOrchestrationFlowList(orchFlows);
497 Service service = new Service();
498 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
499 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
500 networkCust.setModelCustomizationUUID("123");
501 networkCustomizations.add(networkCust);
502 service.setNetworkCustomizations(networkCustomizations);
503 NetworkCollectionResourceCustomization collectionResourceCustomization =
504 new NetworkCollectionResourceCustomization();
505 collectionResourceCustomization.setModelCustomizationUUID("123");
507 CollectionResource collectionResource = new CollectionResource();
508 collectionResource.setToscaNodeType("NetworkCollection");
509 InstanceGroup instanceGroup = new InstanceGroup();
510 instanceGroup.setToscaNodeType("NetworkCollectionResource");
511 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
512 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
513 new CollectionNetworkResourceCustomization();
514 collectionNetworkResourceCust.setModelCustomizationUUID("123");
515 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
516 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
517 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
518 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
519 new CollectionResourceInstanceGroupCustomization();
520 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
521 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
522 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
523 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
524 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
525 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
526 collectionResource.setInstanceGroup(instanceGroup);
527 collectionResourceCustomization.setCollectionResource(collectionResource);;
528 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
529 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
530 doReturn(collectionResourceCustomization).when(catalogDbClient)
531 .getNetworkCollectionResourceCustomizationByID("123");
532 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
533 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
534 workflowAction.selectExecutionList(execution);
535 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
536 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
537 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
538 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
539 "ActivateServiceInstanceBB");
540 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
541 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
542 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
543 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
544 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
546 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
549 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
550 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
551 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
552 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
553 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
555 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
558 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
559 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
560 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
562 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
564 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
570 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
571 String gAction = "createInstance";
572 String resource = "Service";
573 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
574 initExecution(gAction, bpmnRequest, false);
575 execution.setVariable("requestUri", "v6/serviceInstances/123");
577 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
578 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
579 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
580 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
581 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
582 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
583 northBoundRequest.setOrchestrationFlowList(orchFlows);
585 Service service = new Service();
586 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
588 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
589 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
590 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
591 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
592 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
593 HeatTemplate volumeHeatTemplate = new HeatTemplate();
594 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
595 vfModuleCustomization.setVfModule(vfModule);
597 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
598 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
599 HeatEnvironment heatEnvironment = new HeatEnvironment();
600 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
601 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
602 HeatTemplate moduleHeatTemplate = new HeatTemplate();
603 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
604 vfModuleCustomization2.setVfModule(vfModule2);
606 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
607 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
609 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
610 .thenReturn(prepareListWithResources());
611 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
612 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
613 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
614 .thenReturn(vfModuleCustomization);
615 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
616 .thenReturn(vfModuleCustomization2);
617 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
618 .thenReturn(vfModuleCustomization3);
619 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
620 workflowAction.selectExecutionList(execution);
621 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
622 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
623 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
624 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
625 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
626 "ActivateServiceInstanceBB");
628 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
629 int randomUUIDLength = UUID.randomUUID().toString().length();
630 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
631 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
632 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
633 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
634 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
635 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
636 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
637 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
638 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
639 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
640 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
641 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
642 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
644 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
645 assertEquals(true, execution.getVariable("homing"));
649 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
650 String gAction = "deleteInstance";
651 String resource = "Service";
652 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
653 initExecution(gAction, bpmnRequest, false);
654 execution.setVariable("requestUri", "v6/serviceInstances/123");
656 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
657 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
658 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
659 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
660 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
661 "UnassignServiceInstanceBB");
662 northBoundRequest.setOrchestrationFlowList(orchFlows);
664 ServiceInstance serviceInstanceAAI = new ServiceInstance();
665 serviceInstanceAAI.setServiceInstanceId("aaisi123");
666 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
667 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
668 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
669 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
670 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
671 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
672 vnf.setVnfId("vnfId123");
673 pnf.setPnfId("pnfId123");
675 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
676 vnf.getVfModules().add(vfModule);
677 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
678 vnf.getVfModules().add(vfModule2);
680 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
681 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
682 volumeGroup.setVolumeGroupId("vg123");
683 vnf.getVolumeGroups().add(volumeGroup);
685 serviceInstanceMSO.getVnfs().add(vnf);
686 serviceInstanceMSO.getPnfs().add(pnf);
688 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
689 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
690 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
691 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
692 workflowAction.selectExecutionList(execution);
693 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
694 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
695 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
696 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
697 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
701 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
702 String gAction = "deleteInstance";
703 String resource = "Service";
704 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
705 initExecution(gAction, bpmnRequest, false);
706 execution.setVariable("requestUri", "v6/serviceInstances/123");
708 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
709 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
710 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
711 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
712 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
713 "UnassignServiceInstanceBB");
714 northBoundRequest.setOrchestrationFlowList(orchFlows);
716 ServiceInstance serviceInstanceAAI = new ServiceInstance();
717 serviceInstanceAAI.setServiceInstanceId("aaisi123");
718 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
719 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
720 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
721 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
722 pnf.setPnfId("pnfId123");
724 serviceInstanceMSO.getPnfs().add(pnf);
726 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
727 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
728 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
729 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
730 workflowAction.selectExecutionList(execution);
731 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
732 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
736 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
737 String gAction = "unassignInstance";
738 String resource = "Service";
739 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
740 initExecution(gAction, bpmnRequest, false);
741 execution.setVariable("requestUri", "v6/serviceInstances/123");
743 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
744 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
745 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
746 northBoundRequest.setOrchestrationFlowList(orchFlows);
748 ServiceInstance serviceInstanceAAI = new ServiceInstance();
749 serviceInstanceAAI.setServiceInstanceId("aaisi123");
750 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
751 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
752 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
753 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
754 vnf.setVnfId("vnfId123");
756 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
757 vnf.getVfModules().add(vfModule);
758 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
759 vnf.getVfModules().add(vfModule2);
761 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
762 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
763 volumeGroup.setVolumeGroupId("vg123");
764 vnf.getVolumeGroups().add(volumeGroup);
766 serviceInstanceMSO.getVnfs().add(vnf);
768 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
769 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
770 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
771 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
772 workflowAction.selectExecutionList(execution);
773 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
774 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
775 "UnassignVnfBB", "UnassignServiceInstanceBB");
779 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
780 String gAction = "deleteInstance";
781 String resource = "Service";
782 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
783 initExecution(gAction, bpmnRequest, false);
784 execution.setVariable("requestUri", "v6/serviceInstances/123");
786 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
787 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
788 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
789 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
790 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
791 northBoundRequest.setOrchestrationFlowList(orchFlows);
793 ServiceInstance serviceInstanceAAI = new ServiceInstance();
794 serviceInstanceAAI.setServiceInstanceId("aaisi123");
795 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
796 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
798 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
799 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
800 network.setNetworkId("123");
801 serviceInstanceMSO.getNetworks().add(network);
802 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
803 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
804 network2.setNetworkId("321");
805 serviceInstanceMSO.getNetworks().add(network2);
807 Collection collection = new Collection();
808 serviceInstanceMSO.setCollection(collection);
810 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
811 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
812 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
813 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
814 workflowAction.selectExecutionList(execution);
815 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
816 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
817 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
818 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
822 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
823 String gAction = "recreateInstance";
824 String resource = "Vnf";
825 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
826 initExecution(gAction, bpmnRequest, false);
827 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
828 execution.setVariable("serviceInstanceId", "123");
829 execution.setVariable("vnfId", "1234");
831 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
832 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
833 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
834 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
835 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
836 "AAIUnsetVnfInMaintBB");
837 northBoundRequest.setOrchestrationFlowList(orchFlows);
839 ServiceInstance serviceInstanceAAI = new ServiceInstance();
840 serviceInstanceAAI.setServiceInstanceId("123");
841 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
842 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
843 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
844 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
845 vnf.setVnfId("1234");
847 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
848 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
849 vfModule.setVfModuleId("vfModule1");
850 vnf.getVfModules().add(vfModule);
851 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
852 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
853 vfModule2.setVfModuleId("vfModule2");
854 vnf.getVfModules().add(vfModule2);
856 serviceInstanceMSO.getVnfs().add(vnf);
858 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
859 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
860 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
861 false, "cloud-owner")).thenReturn(northBoundRequest);
862 workflowAction.selectExecutionList(execution);
863 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
864 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
865 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
866 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
867 "AAIUnsetVnfInMaintBB");
871 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
872 String gAction = "replaceInstance";
873 String resource = "Vnf";
874 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
875 initExecution(gAction, bpmnRequest, false);
876 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
877 execution.setVariable("serviceInstanceId", "123");
878 execution.setVariable("vnfId", "1234");
880 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
881 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
882 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
883 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
884 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
885 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
886 "AAIUnsetVnfInMaintBB");
887 northBoundRequest.setOrchestrationFlowList(orchFlows);
889 ServiceInstance serviceInstanceAAI = new ServiceInstance();
890 serviceInstanceAAI.setServiceInstanceId("123");
891 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
892 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
893 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
894 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
895 vnf.setVnfId("1234");
896 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
897 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
898 vfModule.setVfModuleId("vfModule1");
899 vnf.getVfModules().add(vfModule);
900 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
901 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
902 vfModule2.setVfModuleId("vfModule2");
903 vnf.getVfModules().add(vfModule2);
904 serviceInstanceMSO.getVnfs().add(vnf);
905 VfModule vfModuleAAI = new VfModule();
906 vfModuleAAI.setVfModuleId("vfModule2");
907 RelationshipList relationshipList = new RelationshipList();
908 Relationship relationship = new Relationship();
909 relationshipList.getRelationship().add(relationship);
910 vfModuleAAI.setRelationshipList(relationshipList);
911 Relationships relationships = new Relationships("abc");
912 Configuration config = new Configuration();
913 config.setConfigurationId("configId");
914 Optional<Configuration> configOp = Optional.of(config);
915 Optional<Relationships> relationshipsOp = Optional.of(relationships);
917 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
918 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
919 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
920 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
921 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
922 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
923 false, "cloud-owner")).thenReturn(northBoundRequest);
924 workflowAction.selectExecutionList(execution);
925 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
926 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
927 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
928 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
929 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
930 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
931 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
932 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
933 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
939 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
940 String gAction = "createInstance";
941 String resource = "NetworkCollection";
942 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
943 initExecution(gAction, bpmnRequest, false);
944 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
946 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
947 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
948 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
949 northBoundRequest.setOrchestrationFlowList(orchFlows);
951 Service service = new Service();
952 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
953 CollectionResource collectionResource = new CollectionResource();
954 collectionResource.setToscaNodeType("Data NetworkCollection Data");
955 collectionResourceCustomization.setCollectionResource(collectionResource);
956 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
958 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
959 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
960 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
961 workflowAction.selectExecutionList(execution);
962 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
963 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
964 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
965 "ActivateNetworkCollectionBB");
970 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
971 String gAction = "deleteInstance";
972 String resource = "NetworkCollection";
973 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
974 initExecution(gAction, bpmnRequest, false);
975 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
977 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
978 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
979 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
980 northBoundRequest.setOrchestrationFlowList(orchFlows);
982 Service service = new Service();
983 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
984 CollectionResource collectionResource = new CollectionResource();
985 collectionResource.setToscaNodeType("Data NetworkCollection Data");
986 collectionResourceCustomization.setCollectionResource(collectionResource);
987 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
989 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
990 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
991 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
992 workflowAction.selectExecutionList(execution);
993 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
994 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
995 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
996 "DeleteNetworkCollectionBB");
1000 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1001 String gAction = "createInstance";
1002 String resource = "VfModule";
1003 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1004 initExecution(gAction, bpmnRequest, true);
1005 execution.setVariable("requestUri",
1006 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1008 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1009 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1010 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1011 northBoundRequest.setOrchestrationFlowList(orchFlows);
1013 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1014 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1015 workflowAction.selectExecutionList(execution);
1016 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1017 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1021 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1022 String gAction = "createInstance";
1023 String resource = "VfModule";
1024 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1025 initExecution(gAction, bpmnRequest, true);
1026 execution.setVariable("requestUri",
1027 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1029 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1030 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1031 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1032 northBoundRequest.setOrchestrationFlowList(orchFlows);
1034 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1035 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1036 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1037 new CvnfcConfigurationCustomization();
1038 ConfigurationResource configurationResource = new ConfigurationResource();
1039 configurationResource.setToscaNodeType("FabricConfiguration");
1040 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1041 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1042 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1043 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1044 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1045 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1046 cvnfcCustomization.setDescription("description");
1047 cvnfcCustomizations.add(cvnfcCustomization);
1049 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1050 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1051 new CvnfcConfigurationCustomization();
1052 ConfigurationResource configurationResource2 = new ConfigurationResource();
1053 configurationResource2.setToscaNodeType("FabricConfiguration");
1054 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1055 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1056 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1057 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1058 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1059 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1060 cvnfcCustomization2.setDescription("description2");
1061 cvnfcCustomizations.add(cvnfcCustomization2);
1063 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1064 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1065 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1066 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1067 workflowAction.selectExecutionList(execution);
1068 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1069 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1070 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1071 "ActivateFabricConfigurationBB");
1075 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1076 String gAction = "replaceInstance";
1077 String resource = "VfModule";
1078 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1079 initExecution(gAction, bpmnRequest, true);
1080 execution.setVariable("requestUri",
1081 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1083 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1084 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1085 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1086 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1087 workflowAction.selectExecutionList(execution);
1088 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1090 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1091 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1092 "ChangeModelServiceInstanceBB");
1096 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1097 String gAction = "replaceInstanceRetainAssignments";
1098 String resource = "VfModule";
1099 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1100 initExecution(gAction, bpmnRequest, true);
1101 execution.setVariable("requestUri",
1102 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1104 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1105 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1106 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1107 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1108 workflowAction.selectExecutionList(execution);
1109 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1111 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1112 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1116 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1117 String gAction = "replaceInstance";
1118 String resource = "VfModule";
1119 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1120 initExecution(gAction, bpmnRequest, true);
1121 execution.setVariable("requestUri",
1122 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1123 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1124 execution.setVariable("vfModuleId", "1234");
1126 VolumeGroup volumeGroup = new VolumeGroup();
1127 volumeGroup.setVolumeGroupId("volumeGroupId");
1128 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1129 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1130 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1131 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1132 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1133 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1134 workflowAction.selectExecutionList(execution);
1135 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1137 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1138 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1139 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1143 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1145 String gAction = "replaceInstanceRetainAssignments";
1146 String resource = "VfModule";
1147 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1148 initExecution(gAction, bpmnRequest, true);
1149 execution.setVariable("requestUri",
1150 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1151 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1152 execution.setVariable("vfModuleId", "1234");
1154 VolumeGroup volumeGroup = new VolumeGroup();
1155 volumeGroup.setVolumeGroupId("volumeGroupId");
1156 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1157 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1159 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1160 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1161 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1162 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1163 workflowAction.selectExecutionList(execution);
1164 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1166 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1167 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1168 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1172 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1173 String gAction = "replaceInstance";
1174 String resource = "VfModule";
1175 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1176 initExecution(gAction, bpmnRequest, true);
1177 execution.setVariable("requestUri",
1178 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1179 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1180 execution.setVariable("vfModuleId", "1234");
1182 VolumeGroup volumeGroup = new VolumeGroup();
1183 volumeGroup.setVolumeGroupId("volumeGroupId");
1184 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1185 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1187 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1188 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1189 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1190 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1191 vfModuleCustomization.setVfModule(vfModule);
1192 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1193 .thenReturn(vfModuleCustomization);
1195 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1196 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1197 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1198 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1199 workflowAction.selectExecutionList(execution);
1200 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1202 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1203 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1204 "ChangeModelServiceInstanceBB");
1208 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1209 String gAction = "replaceInstance";
1210 String resource = "VfModule";
1211 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1212 initExecution(gAction, bpmnRequest, true);
1213 execution.setVariable("requestUri",
1214 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1215 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1216 execution.setVariable("vfModuleId", "1234");
1218 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1219 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1220 vnf.setModelCustomizationId("modelCustomizationId");
1221 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1223 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1224 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1225 vfModuleFromAAI.setVfModuleId("1234");
1226 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1228 VolumeGroup volumeGroup = new VolumeGroup();
1229 volumeGroup.setVolumeGroupId("volumeGroupId");
1230 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1231 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1233 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1234 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1235 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1236 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1237 vfModuleCustomization.setVfModule(vfModule);
1238 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1239 .thenReturn(vfModuleCustomization);
1240 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1241 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1242 vnfc.setModelInvariantId("modelInvariantId");
1243 vnfc.setVnfcName("testVnfcName");
1245 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1247 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1248 configuration.setConfigurationId("configurationId");
1249 configuration.setModelCustomizationId("modelCustimizationId");
1250 configuration.setConfigurationName("testConfigurationName");
1251 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1253 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1254 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1255 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1256 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1257 SPY_workflowAction.selectExecutionList(execution);
1258 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1260 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1261 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1262 "AddFabricConfigurationBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1266 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1267 String gAction = "replaceInstanceRetainAssignments";
1268 String resource = "VfModule";
1269 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1270 initExecution(gAction, bpmnRequest, true);
1271 execution.setVariable("requestUri",
1272 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1273 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1274 execution.setVariable("vfModuleId", "1234");
1276 VolumeGroup volumeGroup = new VolumeGroup();
1277 volumeGroup.setVolumeGroupId("volumeGroupId");
1278 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1279 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1281 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1282 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1283 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1284 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1285 vfModuleCustomization.setVfModule(vfModule);
1286 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1287 .thenReturn(vfModuleCustomization);
1289 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1290 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1291 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1292 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1293 workflowAction.selectExecutionList(execution);
1294 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1296 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1297 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1301 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1302 String gAction = "replaceInstance";
1303 String resource = "VfModule";
1304 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1305 initExecution(gAction, bpmnRequest, true);
1306 execution.setVariable("requestUri",
1307 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1308 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1309 execution.setVariable("vfModuleId", "1234");
1311 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1312 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1313 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1314 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1315 vfModuleCustomization.setVfModule(vfModule);
1316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1317 .thenReturn(vfModuleCustomization);
1319 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1320 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1321 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1322 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1323 workflowAction.selectExecutionList(execution);
1324 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1326 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1327 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1328 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1332 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1334 String gAction = "replaceInstanceRetainAssignments";
1335 String resource = "VfModule";
1336 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1337 initExecution(gAction, bpmnRequest, true);
1338 execution.setVariable("requestUri",
1339 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1340 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1341 execution.setVariable("vfModuleId", "1234");
1343 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1344 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1345 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1346 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1347 vfModuleCustomization.setVfModule(vfModule);
1348 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1349 .thenReturn(vfModuleCustomization);
1351 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1352 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1353 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1354 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1355 workflowAction.selectExecutionList(execution);
1356 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1358 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1359 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1360 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1364 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1365 String gAction = "replaceInstance";
1366 String resource = "VfModule";
1367 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1368 initExecution(gAction, bpmnRequest, true);
1369 execution.setVariable("requestUri",
1370 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1371 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1372 execution.setVariable("vfModuleId", "1234");
1374 VolumeGroup volumeGroup = new VolumeGroup();
1375 volumeGroup.setVolumeGroupId("volumeGroupId");
1376 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1377 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1379 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1380 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1381 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1382 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1383 vfModuleCustomization.setVfModule(vfModule);
1384 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1385 .thenReturn(vfModuleCustomization);
1387 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1388 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1389 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1390 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1391 workflowAction.selectExecutionList(execution);
1392 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1394 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1395 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1396 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1397 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1401 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1402 String gAction = "replaceInstanceRetainAssignments";
1403 String resource = "VfModule";
1404 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1405 initExecution(gAction, bpmnRequest, true);
1406 execution.setVariable("requestUri",
1407 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1408 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1409 execution.setVariable("vfModuleId", "1234");
1411 VolumeGroup volumeGroup = new VolumeGroup();
1412 volumeGroup.setVolumeGroupId("volumeGroupId");
1413 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1414 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1416 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1417 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1418 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1419 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1420 vfModuleCustomization.setVfModule(vfModule);
1421 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1422 .thenReturn(vfModuleCustomization);
1424 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1425 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1426 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1427 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1428 workflowAction.selectExecutionList(execution);
1429 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1431 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1432 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1433 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1434 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1439 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1440 String gAction = "deleteInstance";
1441 String resource = "VfModule";
1442 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1443 initExecution(gAction, bpmnRequest, true);
1444 execution.setVariable("requestUri",
1445 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1447 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1448 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1449 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1450 northBoundRequest.setOrchestrationFlowList(orchFlows);
1452 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1453 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1455 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1456 vnf.setVnfId("vnf0");
1457 vnf.setModelCustomizationId("modelCustomizationId");
1458 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1460 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1461 vfModule.setModelCustomizationId("modelCustomizationId");
1462 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1464 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1465 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1466 vnfc.setModelInvariantId("modelInvariantId");
1467 vnfc.setVnfcName("testVnfcName");
1469 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1472 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1473 configuration.setConfigurationId("configurationId");
1474 configuration.setModelCustomizationId("modelCustimizationId");
1475 configuration.setConfigurationName("testConfigurationName");
1476 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1479 SPY_workflowAction.selectExecutionList(execution);
1480 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1481 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1482 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1486 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1487 String gAction = "deleteInstance";
1488 ObjectMapper mapper = new ObjectMapper();
1489 WorkflowType resourceType = WorkflowType.VFMODULE;
1490 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1491 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1492 execution.setVariable("requestAction", gAction);
1493 execution.setVariable("bpmnRequest", bpmnRequest);
1494 execution.setVariable("vnfId", "1234");
1495 execution.setVariable("vfModuleId", "vfModuleId1234");
1496 execution.setVariable("requestUri",
1497 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1498 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1499 RequestDetails requestDetails = sIRequest.getRequestDetails();
1500 String requestAction = "deleteInstance";
1501 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1502 boolean aLaCarte = true;
1503 String apiVersion = "7";
1504 String vnfType = "vnfType";
1505 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1506 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1507 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1508 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1510 thrown.expect(AAIEntityNotFoundException.class);
1511 thrown.expectMessage(containsString(
1512 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1514 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1515 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1517 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1518 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1519 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1520 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1522 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1523 vnf.setVnfId("vnf0");
1524 vnf.setModelCustomizationId("modelCustomizationId");
1525 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1527 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1528 vfModule.setModelCustomizationId("modelCustomizationId");
1529 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1531 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1535 public void getConfigBuildingBlocksTest() throws Exception {
1536 String gAction = "deleteInstance";
1537 ObjectMapper mapper = new ObjectMapper();
1538 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1540 WorkflowType resourceType = WorkflowType.VFMODULE;
1541 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1542 execution.setVariable("requestAction", gAction);
1543 String bpmnRequest =
1544 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1545 execution.setVariable("bpmnRequest", bpmnRequest);
1546 execution.setVariable("vnfId", "1234");
1547 execution.setVariable("vfModuleId", "vfModuleId1234");
1548 execution.setVariable("requestUri",
1549 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1550 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1551 RequestDetails requestDetails = sIRequest.getRequestDetails();
1552 String requestAction = "deleteInstance";
1553 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1554 boolean aLaCarte = true;
1555 String apiVersion = "7";
1556 String vnfType = "vnfType";
1557 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1558 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1559 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1560 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1562 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1563 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1565 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1566 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1567 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1568 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1570 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1571 vnf.setVnfId("vnf0");
1572 vnf.setModelCustomizationId("modelCustomizationId");
1573 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1575 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1576 vfModule.setModelCustomizationId("modelCustomizationId");
1578 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1579 config1.setConfigurationId("config1");
1580 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1581 config2.setConfigurationId("config2");
1583 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1584 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1585 vnfc1.setVnfcName("zauk53avetd02svm001");
1586 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1587 vnfc2.setVnfcName("zauk53avetd02tvm001");
1591 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1592 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1593 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1594 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1595 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1596 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1597 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1599 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1601 assertFalse(results.isEmpty());
1602 assertEquals(2, results.size());
1603 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1604 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1605 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1606 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1610 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1611 String gAction = "deleteInstance";
1612 ObjectMapper mapper = new ObjectMapper();
1613 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1615 WorkflowType resourceType = WorkflowType.VFMODULE;
1616 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1617 execution.setVariable("requestAction", gAction);
1618 String bpmnRequest =
1619 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1620 execution.setVariable("bpmnRequest", bpmnRequest);
1621 execution.setVariable("vnfId", "1234");
1622 execution.setVariable("vfModuleId", "vfModuleId1234");
1623 execution.setVariable("requestUri",
1624 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1625 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1626 RequestDetails requestDetails = sIRequest.getRequestDetails();
1627 String requestAction = "deleteInstance";
1628 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1629 boolean aLaCarte = true;
1630 String apiVersion = "7";
1631 String vnfType = "vnfType";
1632 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1633 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1634 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1635 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1637 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1638 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1640 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1641 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1642 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1643 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1645 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1646 vnf.setVnfId("vnf0");
1647 vnf.setModelCustomizationId("modelCustomizationId");
1648 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1650 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1651 vfModule.setModelCustomizationId("modelCustomizationId");
1653 /* this is a test case where configuration for vnfc is null */
1654 org.onap.aai.domain.yang.Configuration config1 = null;
1655 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1656 config2.setConfigurationId("config2");
1658 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1659 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1660 vnfc1.setVnfcName("zauk53avetd02svm001");
1661 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1662 vnfc2.setVnfcName("zauk53avetd02tvm001");
1666 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1667 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1668 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1669 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1670 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1671 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1672 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1674 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1676 assertFalse(results.isEmpty());
1677 assertEquals(1, results.size());
1678 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1679 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1683 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1684 String gAction = "deleteInstance";
1685 String resource = "VfModule";
1686 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1687 initExecution(gAction, bpmnRequest, true);
1688 execution.setVariable("requestUri",
1689 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1691 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1692 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1693 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1694 northBoundRequest.setOrchestrationFlowList(orchFlows);
1696 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1697 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1699 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1700 vnf.setVnfId("vnf0");
1701 vnf.setModelCustomizationId("modelCustomizationId");
1702 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1704 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1705 vfModule.setModelCustomizationId("modelCustomizationId");
1706 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1708 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1710 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1713 SPY_workflowAction.selectExecutionList(execution);
1714 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1715 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1719 public void selectExecutionListMacroResumeTest() throws Exception {
1720 String gAction = "createInstance";
1721 String resource = "Service";
1722 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1723 initExecution(gAction, bpmnRequest, false);
1724 execution.setVariable("requestUri", "v6/serviceInstances/123");
1726 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1727 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1728 northBoundRequest.setOrchestrationFlowList(orchFlows);
1730 Service service = new Service();
1731 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1733 ServiceInstance si = new ServiceInstance();
1735 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1736 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1738 String flowsToExecuteString =
1739 "[{\"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\"}}]";
1740 ObjectMapper om = new ObjectMapper();
1741 List<ExecuteBuildingBlock> flowsToExecute = null;
1743 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1744 flowsToExecute = Arrays.asList(asArray);
1745 } catch (Exception e) {
1746 e.printStackTrace();
1749 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1751 workflowAction.selectExecutionList(execution);
1752 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1753 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1757 public void getRelatedResourcesInVfModuleTest() throws Exception {
1758 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1759 vnfc.setModelInvariantId("modelInvariantId");
1760 vnfc.setVnfcName("testVnfcName");
1762 String vfncPayload =
1763 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1764 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1766 String configurationPayload =
1767 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1768 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1769 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1770 configurationResultWrappers.add(configurationWrapper);
1772 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1773 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1775 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1777 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1778 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1779 assertEquals("testConfigurationId", configuration.getConfigurationId());
1783 * WorkflowActionBB Tests
1787 public void pluralTest() {
1788 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1789 "networks, Network", "invalidNames, invalidNames");
1790 items.forEach(item -> {
1791 String[] split = item.split(",");
1792 String type = split[0].trim();
1793 String expected = split[1].trim();
1794 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1799 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1800 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1802 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1803 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1804 executeFlows.add(ebb);
1806 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1807 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1808 executeFlows.add(ebb2);
1810 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1811 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1812 executeFlows.add(ebb3);
1814 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1815 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1816 executeFlows.add(ebb4);
1818 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1819 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1820 executeFlows.add(ebb5);
1822 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1823 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1824 executeFlows.add(ebb6);
1826 List<ExecuteBuildingBlock> sorted =
1827 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1828 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1829 "CreateNetworkBB", "ActivateNetworkBB");
1833 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1834 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1836 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1837 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1838 executeFlows.add(ebb);
1840 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1841 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1842 executeFlows.add(ebb2);
1844 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1845 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1846 executeFlows.add(ebb3);
1848 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1849 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1850 executeFlows.add(ebb4);
1852 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1853 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1854 executeFlows.add(ebb5);
1856 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1857 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1858 executeFlows.add(ebb6);
1860 List<ExecuteBuildingBlock> sorted =
1861 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1862 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1863 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1867 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1868 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1869 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1870 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1871 northBoundRequest.setOrchestrationFlowList(orchFlows);
1872 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1873 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1875 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1876 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1877 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1878 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1879 WorkflowType.VNF, false, "my-custom-cloud-owner");
1880 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1881 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1882 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1883 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1884 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1885 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1886 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1887 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1888 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1889 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1893 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1894 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1895 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1896 northBoundRequest.setOrchestrationFlowList(orchFlows);
1897 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1898 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1900 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1901 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1902 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1906 public void extractResourceIdAndTypeFromUriTest() {
1907 String uri = "/v6/serviceInstances/123";
1908 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1909 String uri3 = "/v6/serviceInstances";
1910 String uri4 = "/v6/serviceInstances/assign";
1911 String uri5 = "'/v6/serviceInstances/123/vnfs";
1912 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1913 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1914 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1915 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1916 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1917 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1918 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1919 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1920 assertEquals(expected1.getResourceId(), result.getResourceId());
1921 assertEquals(expected1.getResourceType(), result.getResourceType());
1922 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1923 assertEquals(expected2.getResourceId(), result.getResourceId());
1924 assertEquals(expected2.getResourceType(), result.getResourceType());
1925 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1926 assertEquals("Service", result.getResourceType().toString());
1927 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1928 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1929 assertEquals("Service", result.getResourceType().toString());
1930 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1931 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1932 assertEquals("Vnf", result.getResourceType().toString());
1933 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1934 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1935 assertEquals(expected3.getResourceId(), result.getResourceId());
1936 assertEquals(expected3.getResourceType(), result.getResourceType());
1937 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1938 assertEquals(expected4.getResourceId(), result.getResourceId());
1939 assertEquals(expected4.getResourceType(), result.getResourceType());
1940 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1941 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1942 assertEquals("VfModule", result.getResourceType().toString());
1947 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1948 this.expectedException.expect(IllegalArgumentException.class);
1949 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1950 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1954 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1955 this.expectedException.expect(IllegalArgumentException.class);
1956 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1957 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1961 public void extractResourceIdAndTypeFromUriResumeTest() {
1962 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1963 "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");
1964 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1968 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
1969 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1970 "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");
1971 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1975 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
1976 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1977 "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");
1978 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1982 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
1983 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1984 "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");
1985 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1989 public void isUriResumeTest() {
1990 assertTrue(workflowAction.isUriResume(
1991 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
1992 assertTrue(workflowAction.isUriResume(
1993 " 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"));
1995 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
1999 public void isRequestMacroServiceResumeTest() {
2000 ServiceInstance si = new ServiceInstance();
2001 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2002 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2003 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2007 public void populateResourceIdsFromApiHandlerTest() {
2008 execution.setVariable("serviceInstanceId", "123");
2009 execution.setVariable("vnfId", "888");
2010 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2011 assertEquals("123", x.getServiceInstanceId());
2012 assertEquals("888", x.getVnfId());
2013 assertNull(x.getVolumeGroupId());
2017 public void handleRuntimeExceptionTest() {
2018 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2019 execution.setVariable("testProcessKey", "testProcessKeyValue");
2021 workflowAction.handleRuntimeException(execution);
2022 } catch (BpmnError wfe) {
2023 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2029 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2030 execution.setVariable("testProcessKey", "testProcessKeyValue");
2031 Service service = new Service();
2032 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2033 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2034 networkCust.setModelCustomizationUUID("123");
2035 networkCustomizations.add(networkCust);
2036 service.setNetworkCustomizations(networkCustomizations);
2037 NetworkCollectionResourceCustomization collectionResourceCustomization =
2038 new NetworkCollectionResourceCustomization();
2039 collectionResourceCustomization.setModelCustomizationUUID("123");
2040 CollectionResource collectionResource = new CollectionResource();
2041 collectionResource.setToscaNodeType("NetworkCollection");
2042 InstanceGroup instanceGroup = new InstanceGroup();
2043 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2044 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2045 new CollectionResourceInstanceGroupCustomization();
2046 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2047 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2048 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2049 collectionResource.setInstanceGroup(instanceGroup);
2050 collectionResourceCustomization.setCollectionResource(collectionResource);;
2051 service.setModelUUID("abc");
2052 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2053 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2054 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2055 doReturn(collectionResourceCustomization).when(catalogDbClient)
2056 .getNetworkCollectionResourceCustomizationByID("123");
2057 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2058 ObjectMapper mapper = new ObjectMapper();
2059 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2060 List<Resource> resourceCounter = new ArrayList<>();
2061 thrown.expect(BpmnError.class);
2062 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2063 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2067 public void sortVfModulesByBaseFirstTest() {
2068 List<Resource> resources = new ArrayList<>();
2069 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
2070 resource1.setBaseVfModule(false);
2071 resources.add(resource1);
2072 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
2073 resource2.setBaseVfModule(false);
2074 resources.add(resource2);
2075 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
2076 resource3.setBaseVfModule(true);
2077 resources.add(resource3);
2078 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
2079 assertEquals("333", result.get(0).getResourceId());
2080 assertEquals("222", result.get(1).getResourceId());
2081 assertEquals("111", result.get(2).getResourceId());
2085 public void sortVfModulesByBaseLastTest() {
2086 List<Resource> resources = new ArrayList<>();
2087 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
2088 resource1.setBaseVfModule(true);
2089 resources.add(resource1);
2090 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
2091 resource2.setBaseVfModule(false);
2092 resources.add(resource2);
2093 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
2094 resource3.setBaseVfModule(false);
2095 resources.add(resource3);
2096 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
2097 assertEquals("333", result.get(0).getResourceId());
2098 assertEquals("222", result.get(1).getResourceId());
2099 assertEquals("111", result.get(2).getResourceId());
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"));
2140 public void verifyLackOfNullPointerExceptionForNullResource() {
2141 ExecuteBuildingBlock result = null;
2143 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
2144 false, null, null, null, false, null, null, true, null);
2145 } catch (NullPointerException e) {
2146 fail("NullPointerException should not be thrown when 'resource' is null");
2148 assertNotNull(result);
2152 public void traverseAAIServiceTest() {
2153 List<Resource> resourceCounter = new ArrayList<>();
2154 String resourceId = "si0";
2155 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2157 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2158 serviceInstanceAAI.setServiceInstanceId(resourceId);
2160 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2168 Configuration config = new Configuration();
2169 config.setConfigurationId("testConfigurationId2");
2170 serviceInstance.getConfigurations().add(config);
2172 Relationship relationship1 = new Relationship();
2173 relationship1.setRelatedTo("vnfc");
2174 RelationshipList relationshipList1 = new RelationshipList();
2175 relationshipList1.getRelationship().add(relationship1);
2177 Relationship relationship2 = new Relationship();
2178 relationship2.setRelatedTo("vpn-binding");
2179 RelationshipList relationshipList2 = new RelationshipList();
2180 relationshipList2.getRelationship().add(relationship2);
2182 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2183 aaiConfiguration1.setConfigurationId("testConfigurationId");
2184 aaiConfiguration1.setRelationshipList(relationshipList1);
2186 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2187 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2188 aaiConfiguration2.setRelationshipList(relationshipList1);
2191 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2192 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2193 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2194 .getConfiguration("testConfigurationId");
2195 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2196 .getConfiguration("testConfigurationId2");
2197 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2198 assertEquals(8, resourceCounter.size());
2199 assertTrue(resourceCounter.get(2).isBaseVfModule());
2200 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2201 } catch (Exception e) {
2202 fail("Unexpected exception was thrown.");
2207 public void foundRelatedTest() {
2208 List<Resource> resourceList = new ArrayList<>();
2209 resourceList.add(new Resource(WorkflowType.PNF, "model customization 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.foundRelated(resourceList), true);
2218 public void containsWorkflowTypeTest() {
2219 List<Resource> resourceList = new ArrayList<>();
2220 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2221 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2222 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2223 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2225 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2226 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2227 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2228 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2229 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2232 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2233 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2234 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2235 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2236 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2237 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2238 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2239 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2240 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2244 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2245 List<OrchestrationFlow> result = new ArrayList<>();
2246 int sequenceNumber = 1;
2247 for (String flowName : flowNames) {
2248 OrchestrationFlow orchFlow = new OrchestrationFlow();
2249 orchFlow.setFlowName(flowName);
2250 orchFlow.setSequenceNumber(sequenceNumber++);
2251 result.add(orchFlow);
2256 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2257 for (int i = 0; i < ebbs.size(); i++) {
2258 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2262 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2263 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2264 execution.setVariable("requestAction", gAction);
2265 execution.setVariable("bpmnRequest", bpmnRequest);
2266 execution.setVariable("aLaCarte", isAlaCarte);
2267 execution.setVariable("apiVersion", "7");
2270 private String readBpmnRequestFromFile(String fileName) throws IOException {
2271 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2274 private List<Resource> prepareListWithResources() {
2275 List<Resource> resourceList = new ArrayList<>();
2276 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2277 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2278 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2279 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2280 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2281 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2282 return resourceList;