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_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
115 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
116 "VfModuleReplaceRebuildVolumeGroups.json";
117 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
118 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
121 protected Environment environment;
123 protected UserParamsServiceTraversal userParamsServiceTraversal;
126 private AaiResourceIdValidator aaiResourceIdValidator;
128 protected WorkflowAction workflowAction;
130 private DelegateExecution execution;
134 protected WorkflowAction SPY_workflowAction;
137 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
140 public ExpectedException thrown = ExpectedException.none();
142 private String RESOURCE_PATH = "src/test/resources/__files/";
144 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
145 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
146 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
147 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
148 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
149 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
150 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
151 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
152 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
153 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
154 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
155 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
156 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
157 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
160 public void before() throws Exception {
161 execution = new DelegateExecutionFake();
162 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
163 servInstance.setServiceInstanceId("TEST");
164 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
165 workflowAction.setBbInputSetupUtils(bbSetupUtils);
166 workflowAction.setBbInputSetup(bbInputSetup);
174 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
175 String gAction = "createInstance";
176 String resource = "Network";
177 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
178 initExecution(gAction, bpmnRequest, true);
179 execution.setVariable("requestUri", "v6/networks/123");
181 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
182 List<OrchestrationFlow> orchFlows =
183 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
184 northBoundRequest.setOrchestrationFlowList(orchFlows);
186 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
187 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
189 workflowAction.selectExecutionList(execution);
190 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
191 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
195 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
196 String gAction = "deleteInstance";
197 String resource = "Network";
198 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
199 initExecution(gAction, bpmnRequest, true);
200 execution.setVariable("requestUri", "v6/networks/123");
202 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
203 List<OrchestrationFlow> orchFlows =
204 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
205 northBoundRequest.setOrchestrationFlowList(orchFlows);
207 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
208 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
210 workflowAction.selectExecutionList(execution);
211 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
212 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
216 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
217 String gAction = "createInstance";
218 String resource = "Service";
219 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
220 initExecution(gAction, bpmnRequest, true);
221 execution.setVariable("requestUri", "v6/serviceInstances/123");
224 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
225 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
226 northBoundRequest.setOrchestrationFlowList(orchFlows);
228 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
229 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
231 workflowAction.selectExecutionList(execution);
232 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
233 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
237 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
238 String gAction = "createInstance";
239 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
240 initExecution(gAction, bpmnRequest, true);
241 execution.setVariable("requestUri", "v6/serviceInstances");
243 doThrow(new DuplicateNameException(
244 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
245 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
246 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
248 SPY_workflowAction.selectExecutionList(execution);
249 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
250 "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.");
252 // verify default values are present in failure case
253 assertEquals(true, execution.getVariable("isTopLevelFlow"));
254 assertEquals(false, execution.getVariable("sentSyncResponse"));
258 * SERVICE MACRO TESTS
261 public void selectExecutionListServiceMacroAssignTest() throws Exception {
262 String gAction = "assignInstance";
263 String resource = "Service";
264 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
265 initExecution(gAction, bpmnRequest, false);
266 execution.setVariable("requestUri", "v6/serviceInstances/123");
268 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
269 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
270 "AssignVolumeGroupBB", "AssignVfModuleBB");
271 northBoundRequest.setOrchestrationFlowList(orchFlows);
273 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
274 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
275 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
276 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
277 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
278 HeatTemplate volumeHeatTemplate = new HeatTemplate();
279 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
280 vfModuleCustomization.setVfModule(vfModule);
282 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
283 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
284 HeatEnvironment heatEnvironment = new HeatEnvironment();
285 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
286 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
287 HeatTemplate moduleHeatTemplate = new HeatTemplate();
288 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
289 vfModuleCustomization2.setVfModule(vfModule2);
291 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
292 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
294 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
295 .thenReturn(prepareListWithResources());
296 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
297 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
298 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
299 .thenReturn(vfModuleCustomization);
300 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
301 .thenReturn(vfModuleCustomization2);
302 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
303 .thenReturn(vfModuleCustomization3);
305 workflowAction.selectExecutionList(execution);
306 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
307 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
308 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
312 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
313 String gAction = "assignInstance";
314 String resource = "Service";
315 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
316 initExecution(gAction, bpmnRequest, false);
317 execution.setVariable("requestUri", "v6/serviceInstances/123");
319 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
320 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
321 "AssignVolumeGroupBB", "AssignVfModuleBB");
322 northBoundRequest.setOrchestrationFlowList(orchFlows);
324 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
325 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
326 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
327 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
328 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
329 HeatTemplate volumeHeatTemplate = new HeatTemplate();
330 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
331 vfModuleCustomization.setVfModule(vfModule);
333 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
334 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
335 HeatEnvironment heatEnvironment = new HeatEnvironment();
336 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
337 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
338 HeatTemplate moduleHeatTemplate = new HeatTemplate();
339 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
340 vfModuleCustomization2.setVfModule(vfModule2);
342 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
343 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
345 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
346 .thenReturn(prepareListWithResources());
347 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
348 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
349 false, "att-aic")).thenReturn(northBoundRequest);
350 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
351 .thenReturn(vfModuleCustomization);
352 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
353 .thenReturn(vfModuleCustomization2);
354 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
355 .thenReturn(vfModuleCustomization3);
356 workflowAction.selectExecutionList(execution);
357 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
358 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
359 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
363 public void selectExecutionListServiceMacroActivateTest() throws Exception {
364 String gAction = "activateInstance";
365 String resource = "Service";
366 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
367 initExecution(gAction, bpmnRequest, false);
368 execution.setVariable("requestUri", "v6/serviceInstances/si0");
370 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
371 List<OrchestrationFlow> orchFlows =
372 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
373 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
374 northBoundRequest.setOrchestrationFlowList(orchFlows);
376 ServiceInstance serviceInstanceAAI = new ServiceInstance();
377 serviceInstanceAAI.setServiceInstanceId("si0");
378 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
379 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
380 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
381 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
382 vnf.setVnfId("vnf0");
384 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
385 vnf.getVfModules().add(vfModule);
386 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
387 vnf.getVfModules().add(vfModule2);
389 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
390 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
391 volumeGroup.setVolumeGroupId("volumeGroup0");
392 vnf.getVolumeGroups().add(volumeGroup);
394 serviceInstanceMSO.getVnfs().add(vnf);
396 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
397 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
398 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
399 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
400 workflowAction.selectExecutionList(execution);
401 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
402 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
403 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
404 "ActivateServiceInstanceBB");
405 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
406 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
407 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
408 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
409 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
410 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
411 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
412 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
416 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
417 String gAction = "deactivateInstance";
418 String resource = "Service";
419 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
420 initExecution(gAction, bpmnRequest, false);
421 execution.setVariable("requestUri", "v6/serviceInstances/123");
423 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
424 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
425 northBoundRequest.setOrchestrationFlowList(orchFlows);
427 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
428 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
429 workflowAction.selectExecutionList(execution);
430 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
431 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
435 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
436 String gAction = "createInstance";
437 String resource = "Service";
438 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
439 initExecution(gAction, bpmnRequest, false);
440 execution.setVariable("requestUri", "v6/serviceInstances/123");
442 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
443 northBoundRequest.setIsToplevelflow(true);
444 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
445 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
446 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
447 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
448 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
449 northBoundRequest.setOrchestrationFlowList(orchFlows);
451 Service service = new Service();
452 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
453 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
454 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
455 workflowAction.selectExecutionList(execution);
456 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
457 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
461 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
462 String gAction = "createInstance";
463 String resource = "Service";
464 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
465 initExecution(gAction, bpmnRequest, false);
466 execution.setVariable("requestUri", "v6/serviceInstances/123");
468 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
469 northBoundRequest.setIsToplevelflow(true);
470 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
471 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
472 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
473 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
474 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
475 northBoundRequest.setOrchestrationFlowList(orchFlows);
477 Service service = new Service();
478 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
479 networkCustomization.setModelCustomizationUUID("1234");
480 service.getNetworkCustomizations().add(networkCustomization);
481 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
482 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
483 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
485 workflowAction.selectExecutionList(execution);
486 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
487 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
488 "ActivateNetworkBB", "ActivateServiceInstanceBB");
492 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
493 String gAction = "createInstance";
494 String resource = "Service";
495 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
496 initExecution(gAction, bpmnRequest, false);
497 execution.setVariable("requestUri", "v6/serviceInstances/123");
499 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
500 northBoundRequest.setIsToplevelflow(true);
501 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
502 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
503 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
504 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
505 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
506 northBoundRequest.setOrchestrationFlowList(orchFlows);
508 Service service = new Service();
509 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
510 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
511 networkCust.setModelCustomizationUUID("123");
512 networkCustomizations.add(networkCust);
513 service.setNetworkCustomizations(networkCustomizations);
514 NetworkCollectionResourceCustomization collectionResourceCustomization =
515 new NetworkCollectionResourceCustomization();
516 collectionResourceCustomization.setModelCustomizationUUID("123");
518 CollectionResource collectionResource = new CollectionResource();
519 collectionResource.setToscaNodeType("NetworkCollection");
520 InstanceGroup instanceGroup = new InstanceGroup();
521 instanceGroup.setToscaNodeType("NetworkCollectionResource");
522 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
523 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
524 new CollectionNetworkResourceCustomization();
525 collectionNetworkResourceCust.setModelCustomizationUUID("123");
526 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
527 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
528 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
529 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
530 new CollectionResourceInstanceGroupCustomization();
531 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
532 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
533 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
534 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
535 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
536 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
537 collectionResource.setInstanceGroup(instanceGroup);
538 collectionResourceCustomization.setCollectionResource(collectionResource);;
539 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
540 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
541 doReturn(collectionResourceCustomization).when(catalogDbClient)
542 .getNetworkCollectionResourceCustomizationByID("123");
543 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
544 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
545 workflowAction.selectExecutionList(execution);
546 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
547 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
548 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
549 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
550 "ActivateServiceInstanceBB");
551 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
552 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
553 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
554 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
555 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
557 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
560 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
562 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
564 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
566 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
569 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
570 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
571 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
572 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
573 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
575 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
581 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
582 String gAction = "createInstance";
583 String resource = "Service";
584 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
585 initExecution(gAction, bpmnRequest, false);
586 execution.setVariable("requestUri", "v6/serviceInstances/123");
588 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
589 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
590 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
591 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
592 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
593 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
594 northBoundRequest.setOrchestrationFlowList(orchFlows);
596 Service service = new Service();
597 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
599 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
600 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
601 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
602 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
603 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
604 HeatTemplate volumeHeatTemplate = new HeatTemplate();
605 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
606 vfModuleCustomization.setVfModule(vfModule);
608 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
609 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
610 HeatEnvironment heatEnvironment = new HeatEnvironment();
611 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
612 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
613 HeatTemplate moduleHeatTemplate = new HeatTemplate();
614 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
615 vfModuleCustomization2.setVfModule(vfModule2);
617 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
618 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
620 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
621 .thenReturn(prepareListWithResources());
622 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
623 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
624 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
625 .thenReturn(vfModuleCustomization);
626 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
627 .thenReturn(vfModuleCustomization2);
628 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
629 .thenReturn(vfModuleCustomization3);
630 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
631 workflowAction.selectExecutionList(execution);
632 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
633 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
634 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
635 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
636 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
637 "ActivateServiceInstanceBB");
639 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
640 int randomUUIDLength = UUID.randomUUID().toString().length();
641 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
642 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
643 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
647 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
648 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
652 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
655 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
656 assertEquals(true, execution.getVariable("homing"));
660 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
661 String gAction = "deleteInstance";
662 String resource = "Service";
663 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
664 initExecution(gAction, bpmnRequest, false);
665 execution.setVariable("requestUri", "v6/serviceInstances/123");
667 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
668 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
669 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
670 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
671 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
672 "UnassignServiceInstanceBB");
673 northBoundRequest.setOrchestrationFlowList(orchFlows);
675 ServiceInstance serviceInstanceAAI = new ServiceInstance();
676 serviceInstanceAAI.setServiceInstanceId("aaisi123");
677 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
678 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
679 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
680 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
681 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
682 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
683 vnf.setVnfId("vnfId123");
684 pnf.setPnfId("pnfId123");
686 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
687 vnf.getVfModules().add(vfModule);
688 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
689 vnf.getVfModules().add(vfModule2);
691 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
692 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
693 volumeGroup.setVolumeGroupId("vg123");
694 vnf.getVolumeGroups().add(volumeGroup);
696 serviceInstanceMSO.getVnfs().add(vnf);
697 serviceInstanceMSO.getPnfs().add(pnf);
699 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
700 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
701 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
702 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
703 workflowAction.selectExecutionList(execution);
704 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
705 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
706 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
707 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
708 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
712 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
713 String gAction = "deleteInstance";
714 String resource = "Service";
715 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
716 initExecution(gAction, bpmnRequest, false);
717 execution.setVariable("requestUri", "v6/serviceInstances/123");
719 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
720 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
721 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
722 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
723 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
724 "UnassignServiceInstanceBB");
725 northBoundRequest.setOrchestrationFlowList(orchFlows);
727 ServiceInstance serviceInstanceAAI = new ServiceInstance();
728 serviceInstanceAAI.setServiceInstanceId("aaisi123");
729 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
730 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
731 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
732 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
733 pnf.setPnfId("pnfId123");
735 serviceInstanceMSO.getPnfs().add(pnf);
737 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
738 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
739 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
740 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
741 workflowAction.selectExecutionList(execution);
742 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
743 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
747 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
748 String gAction = "unassignInstance";
749 String resource = "Service";
750 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
751 initExecution(gAction, bpmnRequest, false);
752 execution.setVariable("requestUri", "v6/serviceInstances/123");
754 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
755 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
756 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
757 northBoundRequest.setOrchestrationFlowList(orchFlows);
759 ServiceInstance serviceInstanceAAI = new ServiceInstance();
760 serviceInstanceAAI.setServiceInstanceId("aaisi123");
761 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
762 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
763 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
764 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
765 vnf.setVnfId("vnfId123");
767 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
768 vnf.getVfModules().add(vfModule);
769 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
770 vnf.getVfModules().add(vfModule2);
772 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
773 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
774 volumeGroup.setVolumeGroupId("vg123");
775 vnf.getVolumeGroups().add(volumeGroup);
777 serviceInstanceMSO.getVnfs().add(vnf);
779 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
780 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
781 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
782 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
783 workflowAction.selectExecutionList(execution);
784 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
785 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
786 "UnassignVnfBB", "UnassignServiceInstanceBB");
790 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
791 String gAction = "deleteInstance";
792 String resource = "Service";
793 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
794 initExecution(gAction, bpmnRequest, false);
795 execution.setVariable("requestUri", "v6/serviceInstances/123");
797 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
798 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
799 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
800 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
801 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
802 northBoundRequest.setOrchestrationFlowList(orchFlows);
804 ServiceInstance serviceInstanceAAI = new ServiceInstance();
805 serviceInstanceAAI.setServiceInstanceId("aaisi123");
806 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
807 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
809 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
810 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
811 network.setNetworkId("123");
812 serviceInstanceMSO.getNetworks().add(network);
813 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
814 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
815 network2.setNetworkId("321");
816 serviceInstanceMSO.getNetworks().add(network2);
818 Collection collection = new Collection();
819 serviceInstanceMSO.setCollection(collection);
821 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
822 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
823 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
824 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
825 workflowAction.selectExecutionList(execution);
826 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
827 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
828 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
829 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
833 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
834 String gAction = "recreateInstance";
835 String resource = "Vnf";
836 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
837 initExecution(gAction, bpmnRequest, false);
838 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
839 execution.setVariable("serviceInstanceId", "123");
840 execution.setVariable("vnfId", "1234");
842 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
843 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
844 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
845 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
846 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
847 "AAIUnsetVnfInMaintBB");
848 northBoundRequest.setOrchestrationFlowList(orchFlows);
850 ServiceInstance serviceInstanceAAI = new ServiceInstance();
851 serviceInstanceAAI.setServiceInstanceId("123");
852 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
853 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
854 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
855 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
856 vnf.setVnfId("1234");
858 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
859 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
860 vfModule.setVfModuleId("vfModule1");
861 vnf.getVfModules().add(vfModule);
862 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
863 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
864 vfModule2.setVfModuleId("vfModule2");
865 vnf.getVfModules().add(vfModule2);
867 serviceInstanceMSO.getVnfs().add(vnf);
869 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
870 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
871 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
872 false, "cloud-owner")).thenReturn(northBoundRequest);
873 workflowAction.selectExecutionList(execution);
874 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
875 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
876 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
877 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
878 "AAIUnsetVnfInMaintBB");
882 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
883 String gAction = "replaceInstance";
884 String resource = "Vnf";
885 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
886 initExecution(gAction, bpmnRequest, false);
887 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
888 execution.setVariable("serviceInstanceId", "123");
889 execution.setVariable("vnfId", "1234");
891 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
892 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
893 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
894 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
895 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
896 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
897 "AAIUnsetVnfInMaintBB");
898 northBoundRequest.setOrchestrationFlowList(orchFlows);
900 ServiceInstance serviceInstanceAAI = new ServiceInstance();
901 serviceInstanceAAI.setServiceInstanceId("123");
902 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
903 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
904 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
905 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
906 vnf.setVnfId("1234");
907 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
908 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
909 vfModule.setVfModuleId("vfModule1");
910 vnf.getVfModules().add(vfModule);
911 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
912 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
913 vfModule2.setVfModuleId("vfModule2");
914 vnf.getVfModules().add(vfModule2);
915 serviceInstanceMSO.getVnfs().add(vnf);
916 VfModule vfModuleAAI = new VfModule();
917 vfModuleAAI.setVfModuleId("vfModule2");
918 RelationshipList relationshipList = new RelationshipList();
919 Relationship relationship = new Relationship();
920 relationshipList.getRelationship().add(relationship);
921 vfModuleAAI.setRelationshipList(relationshipList);
922 Relationships relationships = new Relationships("abc");
923 Configuration config = new Configuration();
924 config.setConfigurationId("configId");
925 Optional<Configuration> configOp = Optional.of(config);
926 Optional<Relationships> relationshipsOp = Optional.of(relationships);
928 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
929 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
930 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
931 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
932 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
933 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
934 false, "cloud-owner")).thenReturn(northBoundRequest);
935 workflowAction.selectExecutionList(execution);
936 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
937 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
938 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
939 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
940 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
941 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
942 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
943 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
944 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
950 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
951 String gAction = "createInstance";
952 String resource = "NetworkCollection";
953 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
954 initExecution(gAction, bpmnRequest, false);
955 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
957 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
958 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
959 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
960 northBoundRequest.setOrchestrationFlowList(orchFlows);
962 Service service = new Service();
963 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
964 CollectionResource collectionResource = new CollectionResource();
965 collectionResource.setToscaNodeType("Data NetworkCollection Data");
966 collectionResourceCustomization.setCollectionResource(collectionResource);
967 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
969 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
970 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
971 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
972 workflowAction.selectExecutionList(execution);
973 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
974 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
975 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
976 "ActivateNetworkCollectionBB");
981 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
982 String gAction = "deleteInstance";
983 String resource = "NetworkCollection";
984 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
985 initExecution(gAction, bpmnRequest, false);
986 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
988 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
989 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
990 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
991 northBoundRequest.setOrchestrationFlowList(orchFlows);
993 Service service = new Service();
994 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
995 CollectionResource collectionResource = new CollectionResource();
996 collectionResource.setToscaNodeType("Data NetworkCollection Data");
997 collectionResourceCustomization.setCollectionResource(collectionResource);
998 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1000 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1001 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1002 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1003 workflowAction.selectExecutionList(execution);
1004 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1005 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1006 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1007 "DeleteNetworkCollectionBB");
1011 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1012 String gAction = "createInstance";
1013 String resource = "VfModule";
1014 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1015 initExecution(gAction, bpmnRequest, true);
1016 execution.setVariable("requestUri",
1017 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1019 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1020 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1021 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1022 northBoundRequest.setOrchestrationFlowList(orchFlows);
1024 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1025 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1026 workflowAction.selectExecutionList(execution);
1027 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1028 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1032 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1033 String gAction = "createInstance";
1034 String resource = "VfModule";
1035 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1036 initExecution(gAction, bpmnRequest, true);
1037 execution.setVariable("requestUri",
1038 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1040 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1041 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1042 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1043 northBoundRequest.setOrchestrationFlowList(orchFlows);
1045 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1046 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1047 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1048 new CvnfcConfigurationCustomization();
1049 ConfigurationResource configurationResource = new ConfigurationResource();
1050 configurationResource.setToscaNodeType("FabricConfiguration");
1051 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1052 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1053 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1054 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1055 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1056 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1057 cvnfcCustomization.setDescription("description");
1058 cvnfcCustomizations.add(cvnfcCustomization);
1060 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1061 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1062 new CvnfcConfigurationCustomization();
1063 ConfigurationResource configurationResource2 = new ConfigurationResource();
1064 configurationResource2.setToscaNodeType("FabricConfiguration");
1065 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1066 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1067 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1068 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1069 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1070 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1071 cvnfcCustomization2.setDescription("description2");
1072 cvnfcCustomizations.add(cvnfcCustomization2);
1074 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1075 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1076 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1077 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1078 workflowAction.selectExecutionList(execution);
1079 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1080 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1081 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1082 "ActivateFabricConfigurationBB");
1086 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1087 String gAction = "replaceInstance";
1088 String resource = "VfModule";
1089 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1090 initExecution(gAction, bpmnRequest, true);
1091 execution.setVariable("requestUri",
1092 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1094 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1095 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1096 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1097 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1098 workflowAction.selectExecutionList(execution);
1099 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1101 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1102 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1103 "ChangeModelServiceInstanceBB");
1107 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1108 String gAction = "replaceInstanceRetainAssignments";
1109 String resource = "VfModule";
1110 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1111 initExecution(gAction, bpmnRequest, true);
1112 execution.setVariable("requestUri",
1113 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1115 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1116 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1117 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1118 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1119 workflowAction.selectExecutionList(execution);
1120 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1122 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1123 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1127 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1128 String gAction = "replaceInstance";
1129 String resource = "VfModule";
1130 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1131 initExecution(gAction, bpmnRequest, true);
1132 execution.setVariable("requestUri",
1133 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1134 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1135 execution.setVariable("vfModuleId", "1234");
1137 VolumeGroup volumeGroup = new VolumeGroup();
1138 volumeGroup.setVolumeGroupId("volumeGroupId");
1139 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1140 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1141 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1142 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1143 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1144 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1145 workflowAction.selectExecutionList(execution);
1146 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1148 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1149 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1150 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1154 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1156 String gAction = "replaceInstanceRetainAssignments";
1157 String resource = "VfModule";
1158 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1159 initExecution(gAction, bpmnRequest, true);
1160 execution.setVariable("requestUri",
1161 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1162 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1163 execution.setVariable("vfModuleId", "1234");
1165 VolumeGroup volumeGroup = new VolumeGroup();
1166 volumeGroup.setVolumeGroupId("volumeGroupId");
1167 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1168 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1170 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1171 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1172 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1173 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1174 workflowAction.selectExecutionList(execution);
1175 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1177 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1178 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1179 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1183 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1184 String gAction = "replaceInstance";
1185 String resource = "VfModule";
1186 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1187 initExecution(gAction, bpmnRequest, true);
1188 execution.setVariable("requestUri",
1189 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1190 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1191 execution.setVariable("vfModuleId", "1234");
1193 VolumeGroup volumeGroup = new VolumeGroup();
1194 volumeGroup.setVolumeGroupId("volumeGroupId");
1195 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1196 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1198 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1199 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1200 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1201 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1202 vfModuleCustomization.setVfModule(vfModule);
1203 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1204 .thenReturn(vfModuleCustomization);
1206 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1207 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1208 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1209 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1210 workflowAction.selectExecutionList(execution);
1211 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1213 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1214 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1215 "ChangeModelServiceInstanceBB");
1219 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1220 String gAction = "replaceInstance";
1221 String resource = "VfModule";
1222 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1223 initExecution(gAction, bpmnRequest, true);
1224 execution.setVariable("requestUri",
1225 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1226 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1227 execution.setVariable("vfModuleId", "1234");
1229 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1230 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1231 vnf.setModelCustomizationId("modelCustomizationId");
1232 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1234 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1235 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1236 vfModuleFromAAI.setVfModuleId("1234");
1237 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1239 VolumeGroup volumeGroup = new VolumeGroup();
1240 volumeGroup.setVolumeGroupId("volumeGroupId");
1241 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1242 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1244 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1245 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1246 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1247 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1248 vfModuleCustomization.setVfModule(vfModule);
1249 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1250 .thenReturn(vfModuleCustomization);
1251 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1252 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1253 vnfc.setModelInvariantId("modelInvariantId");
1254 vnfc.setVnfcName("testVnfcName");
1256 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1258 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1259 configuration.setConfigurationId("configurationId");
1260 configuration.setModelCustomizationId("modelCustimizationId");
1261 configuration.setConfigurationName("testConfigurationName");
1262 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1264 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1265 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1266 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1267 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1268 SPY_workflowAction.selectExecutionList(execution);
1269 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1271 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1272 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1273 "ChangeModelServiceInstanceBB");
1277 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1278 String gAction = "replaceInstanceRetainAssignments";
1279 String resource = "VfModule";
1280 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1281 initExecution(gAction, bpmnRequest, true);
1282 execution.setVariable("requestUri",
1283 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1284 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1285 execution.setVariable("vfModuleId", "1234");
1287 VolumeGroup volumeGroup = new VolumeGroup();
1288 volumeGroup.setVolumeGroupId("volumeGroupId");
1289 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1290 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1292 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1293 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1294 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1295 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1296 vfModuleCustomization.setVfModule(vfModule);
1297 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1298 .thenReturn(vfModuleCustomization);
1300 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1301 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1302 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1303 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1304 workflowAction.selectExecutionList(execution);
1305 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1307 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1308 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1312 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1313 String gAction = "replaceInstance";
1314 String resource = "VfModule";
1315 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1316 initExecution(gAction, bpmnRequest, true);
1317 execution.setVariable("requestUri",
1318 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1319 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1320 execution.setVariable("vfModuleId", "1234");
1322 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1323 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1324 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1325 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1326 vfModuleCustomization.setVfModule(vfModule);
1327 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1328 .thenReturn(vfModuleCustomization);
1330 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1331 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1332 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1333 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1334 workflowAction.selectExecutionList(execution);
1335 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1337 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1338 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1339 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1343 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1345 String gAction = "replaceInstanceRetainAssignments";
1346 String resource = "VfModule";
1347 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1348 initExecution(gAction, bpmnRequest, true);
1349 execution.setVariable("requestUri",
1350 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1351 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1352 execution.setVariable("vfModuleId", "1234");
1354 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1355 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1356 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1357 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1358 vfModuleCustomization.setVfModule(vfModule);
1359 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1360 .thenReturn(vfModuleCustomization);
1362 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1363 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1364 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1365 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1366 workflowAction.selectExecutionList(execution);
1367 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1369 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1370 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1371 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1375 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1376 String gAction = "replaceInstance";
1377 String resource = "VfModule";
1378 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1379 initExecution(gAction, bpmnRequest, true);
1380 execution.setVariable("requestUri",
1381 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1382 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1383 execution.setVariable("vfModuleId", "1234");
1385 VolumeGroup volumeGroup = new VolumeGroup();
1386 volumeGroup.setVolumeGroupId("volumeGroupId");
1387 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1388 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1390 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1391 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1392 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1393 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1394 vfModuleCustomization.setVfModule(vfModule);
1395 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1396 .thenReturn(vfModuleCustomization);
1398 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1399 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1400 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1401 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1402 workflowAction.selectExecutionList(execution);
1403 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1405 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1406 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1407 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1408 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1412 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1413 String gAction = "replaceInstanceRetainAssignments";
1414 String resource = "VfModule";
1415 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1416 initExecution(gAction, bpmnRequest, true);
1417 execution.setVariable("requestUri",
1418 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1419 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1420 execution.setVariable("vfModuleId", "1234");
1422 VolumeGroup volumeGroup = new VolumeGroup();
1423 volumeGroup.setVolumeGroupId("volumeGroupId");
1424 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1425 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1427 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1428 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1429 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1430 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1431 vfModuleCustomization.setVfModule(vfModule);
1432 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1433 .thenReturn(vfModuleCustomization);
1435 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1436 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1437 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1438 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1439 workflowAction.selectExecutionList(execution);
1440 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1442 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1443 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1444 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1445 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1450 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1451 String gAction = "deleteInstance";
1452 String resource = "VfModule";
1453 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1454 initExecution(gAction, bpmnRequest, true);
1455 execution.setVariable("requestUri",
1456 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1458 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1459 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1460 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1461 northBoundRequest.setOrchestrationFlowList(orchFlows);
1463 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1464 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1466 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1467 vnf.setVnfId("vnf0");
1468 vnf.setModelCustomizationId("modelCustomizationId");
1469 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1471 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1472 vfModule.setModelCustomizationId("modelCustomizationId");
1473 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1475 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1476 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1477 vnfc.setModelInvariantId("modelInvariantId");
1478 vnfc.setVnfcName("testVnfcName");
1480 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1483 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1484 configuration.setConfigurationId("configurationId");
1485 configuration.setModelCustomizationId("modelCustimizationId");
1486 configuration.setConfigurationName("testConfigurationName");
1487 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1490 SPY_workflowAction.selectExecutionList(execution);
1491 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1492 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1493 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1497 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1498 String gAction = "createInstance";
1499 String resource = "VfModule";
1500 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1501 initExecution(gAction, bpmnRequest, true);
1502 execution.setVariable("requestUri",
1503 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1505 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1506 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1507 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1508 northBoundRequest.setOrchestrationFlowList(orchFlows);
1510 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1511 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1512 workflowAction.selectExecutionList(execution);
1513 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1514 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1518 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1519 String gAction = "deleteInstance";
1520 ObjectMapper mapper = new ObjectMapper();
1521 WorkflowType resourceType = WorkflowType.VFMODULE;
1522 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1523 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1524 execution.setVariable("requestAction", gAction);
1525 execution.setVariable("bpmnRequest", bpmnRequest);
1526 execution.setVariable("vnfId", "1234");
1527 execution.setVariable("vfModuleId", "vfModuleId1234");
1528 execution.setVariable("requestUri",
1529 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1530 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1531 RequestDetails requestDetails = sIRequest.getRequestDetails();
1532 String requestAction = "deleteInstance";
1533 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1534 boolean aLaCarte = true;
1535 String apiVersion = "7";
1536 String vnfType = "vnfType";
1537 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1538 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1539 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1540 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1542 thrown.expect(AAIEntityNotFoundException.class);
1543 thrown.expectMessage(containsString(
1544 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1546 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1547 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1549 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1550 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1551 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1552 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1554 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1555 vnf.setVnfId("vnf0");
1556 vnf.setModelCustomizationId("modelCustomizationId");
1557 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1559 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1560 vfModule.setModelCustomizationId("modelCustomizationId");
1561 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1563 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1567 public void getConfigBuildingBlocksTest() throws Exception {
1568 String gAction = "deleteInstance";
1569 ObjectMapper mapper = new ObjectMapper();
1570 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1572 WorkflowType resourceType = WorkflowType.VFMODULE;
1573 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1574 execution.setVariable("requestAction", gAction);
1575 String bpmnRequest =
1576 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1577 execution.setVariable("bpmnRequest", bpmnRequest);
1578 execution.setVariable("vnfId", "1234");
1579 execution.setVariable("vfModuleId", "vfModuleId1234");
1580 execution.setVariable("requestUri",
1581 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1582 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1583 RequestDetails requestDetails = sIRequest.getRequestDetails();
1584 String requestAction = "deleteInstance";
1585 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1586 boolean aLaCarte = true;
1587 String apiVersion = "7";
1588 String vnfType = "vnfType";
1589 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1590 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1591 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1592 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1594 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1595 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1597 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1598 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1599 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1600 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1602 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1603 vnf.setVnfId("vnf0");
1604 vnf.setModelCustomizationId("modelCustomizationId");
1605 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1607 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1608 vfModule.setModelCustomizationId("modelCustomizationId");
1610 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1611 config1.setConfigurationId("config1");
1612 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1613 config2.setConfigurationId("config2");
1615 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1616 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1617 vnfc1.setVnfcName("zauk53avetd02svm001");
1618 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1619 vnfc2.setVnfcName("zauk53avetd02tvm001");
1623 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1624 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1625 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1626 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1627 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1628 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1629 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1631 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1633 assertFalse(results.isEmpty());
1634 assertEquals(2, results.size());
1635 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1636 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1637 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1638 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1642 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1643 String gAction = "deleteInstance";
1644 ObjectMapper mapper = new ObjectMapper();
1645 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1647 WorkflowType resourceType = WorkflowType.VFMODULE;
1648 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1649 execution.setVariable("requestAction", gAction);
1650 String bpmnRequest =
1651 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1652 execution.setVariable("bpmnRequest", bpmnRequest);
1653 execution.setVariable("vnfId", "1234");
1654 execution.setVariable("vfModuleId", "vfModuleId1234");
1655 execution.setVariable("requestUri",
1656 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1657 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1658 RequestDetails requestDetails = sIRequest.getRequestDetails();
1659 String requestAction = "deleteInstance";
1660 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1661 boolean aLaCarte = true;
1662 String apiVersion = "7";
1663 String vnfType = "vnfType";
1664 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1665 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1666 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1667 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1669 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1670 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1672 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1673 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1674 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1675 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1677 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1678 vnf.setVnfId("vnf0");
1679 vnf.setModelCustomizationId("modelCustomizationId");
1680 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1682 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1683 vfModule.setModelCustomizationId("modelCustomizationId");
1685 /* this is a test case where configuration for vnfc is null */
1686 org.onap.aai.domain.yang.Configuration config1 = null;
1687 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1688 config2.setConfigurationId("config2");
1690 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1691 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1692 vnfc1.setVnfcName("zauk53avetd02svm001");
1693 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1694 vnfc2.setVnfcName("zauk53avetd02tvm001");
1698 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1699 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1700 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1701 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1702 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1703 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1704 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1706 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1708 assertFalse(results.isEmpty());
1709 assertEquals(1, results.size());
1710 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1711 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1715 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1716 String gAction = "deleteInstance";
1717 String resource = "VfModule";
1718 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1719 initExecution(gAction, bpmnRequest, true);
1720 execution.setVariable("requestUri",
1721 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1723 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1724 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1725 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1726 northBoundRequest.setOrchestrationFlowList(orchFlows);
1728 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1729 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1731 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1732 vnf.setVnfId("vnf0");
1733 vnf.setModelCustomizationId("modelCustomizationId");
1734 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1736 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1737 vfModule.setModelCustomizationId("modelCustomizationId");
1738 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1740 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1742 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1745 SPY_workflowAction.selectExecutionList(execution);
1746 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1747 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1751 public void selectExecutionListMacroResumeTest() throws Exception {
1752 String gAction = "createInstance";
1753 String resource = "Service";
1754 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1755 initExecution(gAction, bpmnRequest, false);
1756 execution.setVariable("requestUri", "v6/serviceInstances/123");
1758 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1759 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1760 northBoundRequest.setOrchestrationFlowList(orchFlows);
1762 Service service = new Service();
1763 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1765 ServiceInstance si = new ServiceInstance();
1767 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1768 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1770 String flowsToExecuteString =
1771 "[{\"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\"}}]";
1772 ObjectMapper om = new ObjectMapper();
1773 List<ExecuteBuildingBlock> flowsToExecute = null;
1775 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1776 flowsToExecute = Arrays.asList(asArray);
1777 } catch (Exception e) {
1778 e.printStackTrace();
1781 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1783 workflowAction.selectExecutionList(execution);
1784 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1785 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1789 public void getRelatedResourcesInVfModuleTest() throws Exception {
1790 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1791 vnfc.setModelInvariantId("modelInvariantId");
1792 vnfc.setVnfcName("testVnfcName");
1794 String vfncPayload =
1795 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1796 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1798 String configurationPayload =
1799 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1800 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1801 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1802 configurationResultWrappers.add(configurationWrapper);
1804 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1805 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1807 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1809 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1810 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1811 assertEquals("testConfigurationId", configuration.getConfigurationId());
1815 * WorkflowActionBB Tests
1819 public void pluralTest() {
1820 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1821 "networks, Network", "invalidNames, invalidNames");
1822 items.forEach(item -> {
1823 String[] split = item.split(",");
1824 String type = split[0].trim();
1825 String expected = split[1].trim();
1826 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1831 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1832 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1834 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1835 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1836 executeFlows.add(ebb);
1838 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1839 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1840 executeFlows.add(ebb2);
1842 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1843 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1844 executeFlows.add(ebb3);
1846 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1847 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1848 executeFlows.add(ebb4);
1850 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1851 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1852 executeFlows.add(ebb5);
1854 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1855 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1856 executeFlows.add(ebb6);
1858 List<ExecuteBuildingBlock> sorted =
1859 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1860 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1861 "CreateNetworkBB", "ActivateNetworkBB");
1865 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1866 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1868 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1869 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1870 executeFlows.add(ebb);
1872 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1873 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1874 executeFlows.add(ebb2);
1876 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1877 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1878 executeFlows.add(ebb3);
1880 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1881 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1882 executeFlows.add(ebb4);
1884 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1885 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1886 executeFlows.add(ebb5);
1888 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1889 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1890 executeFlows.add(ebb6);
1892 List<ExecuteBuildingBlock> sorted =
1893 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1894 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1895 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1899 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1900 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1901 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1902 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1903 northBoundRequest.setOrchestrationFlowList(orchFlows);
1904 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1905 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1907 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1908 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1909 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1910 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1911 WorkflowType.VNF, false, "my-custom-cloud-owner");
1912 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1913 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1914 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1915 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1916 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1917 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1918 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1919 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1920 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1921 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1925 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1926 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1927 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1928 northBoundRequest.setOrchestrationFlowList(orchFlows);
1929 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1930 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1932 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1933 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1934 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1938 public void extractResourceIdAndTypeFromUriTest() {
1939 String uri = "/v6/serviceInstances/123";
1940 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1941 String uri3 = "/v6/serviceInstances";
1942 String uri4 = "/v6/serviceInstances/assign";
1943 String uri5 = "'/v6/serviceInstances/123/vnfs";
1944 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1945 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1946 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1947 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1948 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1949 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1950 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1951 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1952 assertEquals(expected1.getResourceId(), result.getResourceId());
1953 assertEquals(expected1.getResourceType(), result.getResourceType());
1954 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1955 assertEquals(expected2.getResourceId(), result.getResourceId());
1956 assertEquals(expected2.getResourceType(), result.getResourceType());
1957 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1958 assertEquals("Service", result.getResourceType().toString());
1959 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1960 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1961 assertEquals("Service", result.getResourceType().toString());
1962 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1963 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1964 assertEquals("Vnf", result.getResourceType().toString());
1965 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1966 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1967 assertEquals(expected3.getResourceId(), result.getResourceId());
1968 assertEquals(expected3.getResourceType(), result.getResourceType());
1969 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1970 assertEquals(expected4.getResourceId(), result.getResourceId());
1971 assertEquals(expected4.getResourceType(), result.getResourceType());
1972 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1973 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1974 assertEquals("VfModule", result.getResourceType().toString());
1979 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1980 this.expectedException.expect(IllegalArgumentException.class);
1981 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1982 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1986 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1987 this.expectedException.expect(IllegalArgumentException.class);
1988 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1989 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1993 public void extractResourceIdAndTypeFromUriResumeTest() {
1994 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1995 "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");
1996 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2000 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2001 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2002 "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");
2003 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2007 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2008 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2009 "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");
2010 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2014 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2015 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2016 "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");
2017 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2021 public void isUriResumeTest() {
2022 assertTrue(workflowAction.isUriResume(
2023 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2024 assertTrue(workflowAction.isUriResume(
2025 " 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"));
2027 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2031 public void isRequestMacroServiceResumeTest() {
2032 ServiceInstance si = new ServiceInstance();
2033 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2034 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2035 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2039 public void populateResourceIdsFromApiHandlerTest() {
2040 execution.setVariable("serviceInstanceId", "123");
2041 execution.setVariable("vnfId", "888");
2042 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2043 assertEquals("123", x.getServiceInstanceId());
2044 assertEquals("888", x.getVnfId());
2045 assertNull(x.getVolumeGroupId());
2049 public void handleRuntimeExceptionTest() {
2050 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2051 execution.setVariable("testProcessKey", "testProcessKeyValue");
2053 workflowAction.handleRuntimeException(execution);
2054 } catch (BpmnError wfe) {
2055 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2061 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2062 execution.setVariable("testProcessKey", "testProcessKeyValue");
2063 Service service = new Service();
2064 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2065 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2066 networkCust.setModelCustomizationUUID("123");
2067 networkCustomizations.add(networkCust);
2068 service.setNetworkCustomizations(networkCustomizations);
2069 NetworkCollectionResourceCustomization collectionResourceCustomization =
2070 new NetworkCollectionResourceCustomization();
2071 collectionResourceCustomization.setModelCustomizationUUID("123");
2072 CollectionResource collectionResource = new CollectionResource();
2073 collectionResource.setToscaNodeType("NetworkCollection");
2074 InstanceGroup instanceGroup = new InstanceGroup();
2075 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2076 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2077 new CollectionResourceInstanceGroupCustomization();
2078 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2079 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2080 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2081 collectionResource.setInstanceGroup(instanceGroup);
2082 collectionResourceCustomization.setCollectionResource(collectionResource);;
2083 service.setModelUUID("abc");
2084 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2085 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2086 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2087 doReturn(collectionResourceCustomization).when(catalogDbClient)
2088 .getNetworkCollectionResourceCustomizationByID("123");
2089 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2090 ObjectMapper mapper = new ObjectMapper();
2091 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2092 List<Resource> resourceCounter = new ArrayList<>();
2093 thrown.expect(BpmnError.class);
2094 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2095 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2101 public void findCatalogNetworkCollectionTest() {
2102 Service service = new Service();
2103 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2104 networkCustomization.setModelCustomizationUUID("123");
2105 service.getCollectionResourceCustomizations().add(networkCustomization);
2106 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2107 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2108 assertNotNull(customization);
2112 public void findCatalogNetworkCollectionEmptyTest() {
2113 Service service = new Service();
2114 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2115 networkCustomization.setModelCustomizationUUID("123");
2116 service.getCollectionResourceCustomizations().add(networkCustomization);
2117 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2118 assertNull(customization);
2122 public void findCatalogNetworkCollectionMoreThanOneTest() {
2123 Service service = new Service();
2124 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2125 networkCustomization1.setModelCustomizationUUID("123");
2126 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2127 networkCustomization2.setModelCustomizationUUID("321");
2128 service.getCollectionResourceCustomizations().add(networkCustomization1);
2129 service.getCollectionResourceCustomizations().add(networkCustomization2);
2130 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2131 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2132 workflowAction.findCatalogNetworkCollection(execution, service);
2133 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2134 execution.getVariable("WorkflowActionErrorMessage"));
2139 public void traverseAAIServiceTest() {
2140 List<Resource> resourceCounter = new ArrayList<>();
2141 String resourceId = "si0";
2142 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2144 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2145 serviceInstanceAAI.setServiceInstanceId(resourceId);
2147 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2155 Configuration config = new Configuration();
2156 config.setConfigurationId("testConfigurationId2");
2157 serviceInstance.getConfigurations().add(config);
2159 Relationship relationship1 = new Relationship();
2160 relationship1.setRelatedTo("vnfc");
2161 RelationshipList relationshipList1 = new RelationshipList();
2162 relationshipList1.getRelationship().add(relationship1);
2164 Relationship relationship2 = new Relationship();
2165 relationship2.setRelatedTo("vpn-binding");
2166 RelationshipList relationshipList2 = new RelationshipList();
2167 relationshipList2.getRelationship().add(relationship2);
2169 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2170 aaiConfiguration1.setConfigurationId("testConfigurationId");
2171 aaiConfiguration1.setRelationshipList(relationshipList1);
2173 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2174 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2175 aaiConfiguration2.setRelationshipList(relationshipList1);
2178 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2179 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2180 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2181 .getConfiguration("testConfigurationId");
2182 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2183 .getConfiguration("testConfigurationId2");
2184 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2185 assertEquals(8, resourceCounter.size());
2186 assertTrue(resourceCounter.get(2).isBaseVfModule());
2187 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2188 } catch (Exception e) {
2189 fail("Unexpected exception was thrown.");
2194 public void foundRelatedTest() {
2195 List<Resource> resourceList = new ArrayList<>();
2196 resourceList.add(new Resource(WorkflowType.PNF, "model customization id", false));
2197 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2198 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2199 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2201 assertEquals(workflowAction.foundRelated(resourceList), true);
2205 public void containsWorkflowTypeTest() {
2206 List<Resource> resourceList = new ArrayList<>();
2207 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2208 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2209 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2210 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2212 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2213 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2214 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2215 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2216 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2219 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2220 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2221 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2222 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2223 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2224 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2225 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2226 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2227 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2231 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2232 List<OrchestrationFlow> result = new ArrayList<>();
2233 int sequenceNumber = 1;
2234 for (String flowName : flowNames) {
2235 OrchestrationFlow orchFlow = new OrchestrationFlow();
2236 orchFlow.setFlowName(flowName);
2237 orchFlow.setSequenceNumber(sequenceNumber++);
2238 result.add(orchFlow);
2243 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2244 for (int i = 0; i < ebbs.size(); i++) {
2245 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2249 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2250 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2251 execution.setVariable("requestAction", gAction);
2252 execution.setVariable("bpmnRequest", bpmnRequest);
2253 execution.setVariable("aLaCarte", isAlaCarte);
2254 execution.setVariable("apiVersion", "7");
2257 private String readBpmnRequestFromFile(String fileName) throws IOException {
2258 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2261 private List<Resource> prepareListWithResources() {
2262 List<Resource> resourceList = new ArrayList<>();
2263 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2264 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2265 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2266 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2267 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2268 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2269 return resourceList;