2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Modifications Copyright (c) 2020 Nokia
10 * ================================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 * ============LICENSE_END=========================================================
25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
27 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
28 import static org.hamcrest.CoreMatchers.containsString;
29 import static org.hamcrest.CoreMatchers.equalTo;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.junit.Assert.fail;
37 import static org.mockito.ArgumentMatchers.any;
38 import static org.mockito.ArgumentMatchers.anyList;
39 import static org.mockito.ArgumentMatchers.anyObject;
40 import static org.mockito.ArgumentMatchers.anyString;
41 import static org.mockito.ArgumentMatchers.eq;
42 import static org.mockito.ArgumentMatchers.isA;
43 import static org.mockito.Mockito.doReturn;
44 import static org.mockito.Mockito.doThrow;
45 import static org.mockito.Mockito.when;
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.ObjectMapper;
48 import java.io.IOException;
49 import java.net.MalformedURLException;
50 import java.nio.file.Files;
51 import java.nio.file.Paths;
52 import java.util.ArrayList;
53 import java.util.Arrays;
54 import java.util.List;
55 import java.util.Optional;
56 import java.util.UUID;
57 import org.camunda.bpm.engine.delegate.BpmnError;
58 import org.camunda.bpm.engine.delegate.DelegateExecution;
59 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
60 import org.javatuples.Pair;
61 import org.junit.Before;
62 import org.junit.Ignore;
63 import org.junit.Rule;
64 import org.junit.Test;
65 import org.junit.rules.ExpectedException;
66 import org.mockito.InjectMocks;
67 import org.mockito.Mock;
68 import org.mockito.Spy;
69 import org.onap.aai.domain.yang.Relationship;
70 import org.onap.aai.domain.yang.RelationshipList;
71 import org.onap.aai.domain.yang.ServiceInstance;
72 import org.onap.aai.domain.yang.VfModule;
73 import org.onap.aai.domain.yang.VolumeGroup;
74 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
75 import org.onap.aaiclient.client.aai.entities.Relationships;
76 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
77 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
78 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
79 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
80 import org.onap.so.bpmn.BaseTaskTest;
81 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
82 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
83 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
84 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
85 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
86 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
87 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
88 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
89 import org.onap.so.db.catalog.beans.CollectionResource;
90 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
91 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
92 import org.onap.so.db.catalog.beans.ConfigurationResource;
93 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
94 import org.onap.so.db.catalog.beans.CvnfcCustomization;
95 import org.onap.so.db.catalog.beans.HeatEnvironment;
96 import org.onap.so.db.catalog.beans.HeatTemplate;
97 import org.onap.so.db.catalog.beans.InstanceGroup;
98 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
99 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
100 import org.onap.so.db.catalog.beans.Service;
101 import org.onap.so.db.catalog.beans.VfModuleCustomization;
102 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
103 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
104 import org.onap.so.serviceinstancebeans.RequestDetails;
105 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
106 import org.springframework.core.env.Environment;
108 public class WorkflowActionTest extends BaseTaskTest {
110 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
111 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
112 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
113 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
114 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
115 "VfModuleReplaceRebuildVolumeGroups.json";
116 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
117 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
120 protected Environment environment;
122 protected UserParamsServiceTraversal userParamsServiceTraversal;
125 private AaiResourceIdValidator aaiResourceIdValidator;
127 protected WorkflowAction workflowAction;
129 private DelegateExecution execution;
133 protected WorkflowAction SPY_workflowAction;
136 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
139 public ExpectedException thrown = ExpectedException.none();
141 private String RESOURCE_PATH = "src/test/resources/__files/";
143 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
144 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
145 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
146 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
147 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
148 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
149 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
150 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
151 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
152 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
153 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
154 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
155 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
156 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
159 public void before() throws Exception {
160 execution = new DelegateExecutionFake();
161 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
162 servInstance.setServiceInstanceId("TEST");
163 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
164 workflowAction.setBbInputSetupUtils(bbSetupUtils);
165 workflowAction.setBbInputSetup(bbInputSetup);
173 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
174 String gAction = "createInstance";
175 String resource = "Network";
176 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
177 initExecution(gAction, bpmnRequest, true);
178 execution.setVariable("requestUri", "v6/networks/123");
180 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
181 List<OrchestrationFlow> orchFlows =
182 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
183 northBoundRequest.setOrchestrationFlowList(orchFlows);
185 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
186 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
188 workflowAction.selectExecutionList(execution);
189 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
190 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
194 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
195 String gAction = "deleteInstance";
196 String resource = "Network";
197 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
198 initExecution(gAction, bpmnRequest, true);
199 execution.setVariable("requestUri", "v6/networks/123");
201 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
202 List<OrchestrationFlow> orchFlows =
203 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
204 northBoundRequest.setOrchestrationFlowList(orchFlows);
206 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
207 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
209 workflowAction.selectExecutionList(execution);
210 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
211 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
215 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
216 String gAction = "createInstance";
217 String resource = "Service";
218 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
219 initExecution(gAction, bpmnRequest, true);
220 execution.setVariable("requestUri", "v6/serviceInstances/123");
223 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
224 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
225 northBoundRequest.setOrchestrationFlowList(orchFlows);
227 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
228 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
230 workflowAction.selectExecutionList(execution);
231 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
232 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
236 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
237 String gAction = "createInstance";
238 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
239 initExecution(gAction, bpmnRequest, true);
240 execution.setVariable("requestUri", "v6/serviceInstances");
242 doThrow(new DuplicateNameException(
243 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
244 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
245 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
247 SPY_workflowAction.selectExecutionList(execution);
248 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
249 "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.");
251 // verify default values are present in failure case
252 assertEquals(true, execution.getVariable("isTopLevelFlow"));
253 assertEquals(false, execution.getVariable("sentSyncResponse"));
257 * SERVICE MACRO TESTS
260 public void selectExecutionListServiceMacroAssignTest() throws Exception {
261 String gAction = "assignInstance";
262 String resource = "Service";
263 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
264 initExecution(gAction, bpmnRequest, false);
265 execution.setVariable("requestUri", "v6/serviceInstances/123");
267 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
268 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
269 "AssignVolumeGroupBB", "AssignVfModuleBB");
270 northBoundRequest.setOrchestrationFlowList(orchFlows);
272 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
273 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
274 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
275 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
276 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
277 HeatTemplate volumeHeatTemplate = new HeatTemplate();
278 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
279 vfModuleCustomization.setVfModule(vfModule);
281 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
282 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
283 HeatEnvironment heatEnvironment = new HeatEnvironment();
284 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
285 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
286 HeatTemplate moduleHeatTemplate = new HeatTemplate();
287 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
288 vfModuleCustomization2.setVfModule(vfModule2);
290 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
291 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
293 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
294 .thenReturn(prepareListWithResources());
295 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
296 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
297 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
298 .thenReturn(vfModuleCustomization);
299 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
300 .thenReturn(vfModuleCustomization2);
301 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
302 .thenReturn(vfModuleCustomization3);
304 workflowAction.selectExecutionList(execution);
305 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
306 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
307 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
311 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
312 String gAction = "assignInstance";
313 String resource = "Service";
314 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
315 initExecution(gAction, bpmnRequest, false);
316 execution.setVariable("requestUri", "v6/serviceInstances/123");
318 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
319 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
320 "AssignVolumeGroupBB", "AssignVfModuleBB");
321 northBoundRequest.setOrchestrationFlowList(orchFlows);
323 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
324 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
325 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
326 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
327 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
328 HeatTemplate volumeHeatTemplate = new HeatTemplate();
329 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
330 vfModuleCustomization.setVfModule(vfModule);
332 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
333 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
334 HeatEnvironment heatEnvironment = new HeatEnvironment();
335 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
336 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
337 HeatTemplate moduleHeatTemplate = new HeatTemplate();
338 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
339 vfModuleCustomization2.setVfModule(vfModule2);
341 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
342 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
344 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
345 .thenReturn(prepareListWithResources());
346 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
347 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
348 false, "att-aic")).thenReturn(northBoundRequest);
349 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
350 .thenReturn(vfModuleCustomization);
351 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
352 .thenReturn(vfModuleCustomization2);
353 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
354 .thenReturn(vfModuleCustomization3);
355 workflowAction.selectExecutionList(execution);
356 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
357 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
358 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
362 public void selectExecutionListServiceMacroActivateTest() throws Exception {
363 String gAction = "activateInstance";
364 String resource = "Service";
365 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
366 initExecution(gAction, bpmnRequest, false);
367 execution.setVariable("requestUri", "v6/serviceInstances/si0");
369 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
370 List<OrchestrationFlow> orchFlows =
371 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
372 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
373 northBoundRequest.setOrchestrationFlowList(orchFlows);
375 ServiceInstance serviceInstanceAAI = new ServiceInstance();
376 serviceInstanceAAI.setServiceInstanceId("si0");
377 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
378 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
379 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
380 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
381 vnf.setVnfId("vnf0");
383 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
384 vnf.getVfModules().add(vfModule);
385 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
386 vnf.getVfModules().add(vfModule2);
388 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
389 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
390 volumeGroup.setVolumeGroupId("volumeGroup0");
391 vnf.getVolumeGroups().add(volumeGroup);
393 serviceInstanceMSO.getVnfs().add(vnf);
395 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
396 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
397 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
398 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
399 workflowAction.selectExecutionList(execution);
400 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
401 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
402 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
403 "ActivateServiceInstanceBB");
404 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
405 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
406 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
407 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
408 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
409 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
410 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
411 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
415 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
416 String gAction = "deactivateInstance";
417 String resource = "Service";
418 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
419 initExecution(gAction, bpmnRequest, false);
420 execution.setVariable("requestUri", "v6/serviceInstances/123");
422 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
423 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
424 northBoundRequest.setOrchestrationFlowList(orchFlows);
426 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
427 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
428 workflowAction.selectExecutionList(execution);
429 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
430 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
434 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
435 String gAction = "createInstance";
436 String resource = "Service";
437 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
438 initExecution(gAction, bpmnRequest, false);
439 execution.setVariable("requestUri", "v6/serviceInstances/123");
441 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
442 northBoundRequest.setIsToplevelflow(true);
443 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
444 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
445 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
446 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
447 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
448 northBoundRequest.setOrchestrationFlowList(orchFlows);
450 Service service = new Service();
451 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
452 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
453 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
454 workflowAction.selectExecutionList(execution);
455 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
456 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
460 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
461 String gAction = "createInstance";
462 String resource = "Service";
463 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
464 initExecution(gAction, bpmnRequest, false);
465 execution.setVariable("requestUri", "v6/serviceInstances/123");
467 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
468 northBoundRequest.setIsToplevelflow(true);
469 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
470 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
471 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
472 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
473 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
474 northBoundRequest.setOrchestrationFlowList(orchFlows);
476 Service service = new Service();
477 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
478 networkCustomization.setModelCustomizationUUID("1234");
479 service.getNetworkCustomizations().add(networkCustomization);
480 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
481 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
482 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
484 workflowAction.selectExecutionList(execution);
485 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
486 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
487 "ActivateNetworkBB", "ActivateServiceInstanceBB");
491 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
492 String gAction = "createInstance";
493 String resource = "Service";
494 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
495 initExecution(gAction, bpmnRequest, false);
496 execution.setVariable("requestUri", "v6/serviceInstances/123");
498 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
499 northBoundRequest.setIsToplevelflow(true);
500 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
501 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
502 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
503 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
504 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
505 northBoundRequest.setOrchestrationFlowList(orchFlows);
507 Service service = new Service();
508 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
509 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
510 networkCust.setModelCustomizationUUID("123");
511 networkCustomizations.add(networkCust);
512 service.setNetworkCustomizations(networkCustomizations);
513 NetworkCollectionResourceCustomization collectionResourceCustomization =
514 new NetworkCollectionResourceCustomization();
515 collectionResourceCustomization.setModelCustomizationUUID("123");
517 CollectionResource collectionResource = new CollectionResource();
518 collectionResource.setToscaNodeType("NetworkCollection");
519 InstanceGroup instanceGroup = new InstanceGroup();
520 instanceGroup.setToscaNodeType("NetworkCollectionResource");
521 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
522 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
523 new CollectionNetworkResourceCustomization();
524 collectionNetworkResourceCust.setModelCustomizationUUID("123");
525 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
526 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
527 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
528 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
529 new CollectionResourceInstanceGroupCustomization();
530 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
531 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
532 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
533 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
534 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
535 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
536 collectionResource.setInstanceGroup(instanceGroup);
537 collectionResourceCustomization.setCollectionResource(collectionResource);;
538 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
539 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
540 doReturn(collectionResourceCustomization).when(catalogDbClient)
541 .getNetworkCollectionResourceCustomizationByID("123");
542 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
543 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
544 workflowAction.selectExecutionList(execution);
545 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
546 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
547 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
548 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
549 "ActivateServiceInstanceBB");
550 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
551 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
552 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
553 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
554 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
556 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
559 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
560 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
562 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
563 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
565 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
568 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
569 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
570 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
571 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
572 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
574 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
580 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
581 String gAction = "createInstance";
582 String resource = "Service";
583 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
584 initExecution(gAction, bpmnRequest, false);
585 execution.setVariable("requestUri", "v6/serviceInstances/123");
587 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
588 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
589 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
590 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
591 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
592 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
593 northBoundRequest.setOrchestrationFlowList(orchFlows);
595 Service service = new Service();
596 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
598 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
599 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
600 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
601 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
602 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
603 HeatTemplate volumeHeatTemplate = new HeatTemplate();
604 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
605 vfModuleCustomization.setVfModule(vfModule);
607 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
608 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
609 HeatEnvironment heatEnvironment = new HeatEnvironment();
610 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
611 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
612 HeatTemplate moduleHeatTemplate = new HeatTemplate();
613 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
614 vfModuleCustomization2.setVfModule(vfModule2);
616 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
617 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
619 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
620 .thenReturn(prepareListWithResources());
621 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
622 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
623 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
624 .thenReturn(vfModuleCustomization);
625 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
626 .thenReturn(vfModuleCustomization2);
627 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
628 .thenReturn(vfModuleCustomization3);
629 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
630 workflowAction.selectExecutionList(execution);
631 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
632 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
633 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
634 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
635 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
636 "ActivateServiceInstanceBB");
638 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
639 int randomUUIDLength = UUID.randomUUID().toString().length();
640 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
641 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
642 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
646 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
647 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
652 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
654 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
655 assertEquals(true, execution.getVariable("homing"));
659 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
660 String gAction = "deleteInstance";
661 String resource = "Service";
662 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
663 initExecution(gAction, bpmnRequest, false);
664 execution.setVariable("requestUri", "v6/serviceInstances/123");
666 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
667 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
668 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
669 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
670 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
671 "UnassignServiceInstanceBB");
672 northBoundRequest.setOrchestrationFlowList(orchFlows);
674 ServiceInstance serviceInstanceAAI = new ServiceInstance();
675 serviceInstanceAAI.setServiceInstanceId("aaisi123");
676 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
677 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
678 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
679 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
680 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
681 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
682 vnf.setVnfId("vnfId123");
683 pnf.setPnfId("pnfId123");
685 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
686 vnf.getVfModules().add(vfModule);
687 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
688 vnf.getVfModules().add(vfModule2);
690 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
691 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
692 volumeGroup.setVolumeGroupId("vg123");
693 vnf.getVolumeGroups().add(volumeGroup);
695 serviceInstanceMSO.getVnfs().add(vnf);
696 serviceInstanceMSO.getPnfs().add(pnf);
698 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
699 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
700 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
701 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
702 workflowAction.selectExecutionList(execution);
703 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
704 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
705 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
706 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
707 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
711 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
712 String gAction = "deleteInstance";
713 String resource = "Service";
714 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
715 initExecution(gAction, bpmnRequest, false);
716 execution.setVariable("requestUri", "v6/serviceInstances/123");
718 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
719 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
720 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
721 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
722 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
723 "UnassignServiceInstanceBB");
724 northBoundRequest.setOrchestrationFlowList(orchFlows);
726 ServiceInstance serviceInstanceAAI = new ServiceInstance();
727 serviceInstanceAAI.setServiceInstanceId("aaisi123");
728 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
729 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
730 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
731 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
732 pnf.setPnfId("pnfId123");
734 serviceInstanceMSO.getPnfs().add(pnf);
736 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
737 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
738 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
739 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
740 workflowAction.selectExecutionList(execution);
741 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
742 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
746 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
747 String gAction = "unassignInstance";
748 String resource = "Service";
749 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
750 initExecution(gAction, bpmnRequest, false);
751 execution.setVariable("requestUri", "v6/serviceInstances/123");
753 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
754 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
755 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
756 northBoundRequest.setOrchestrationFlowList(orchFlows);
758 ServiceInstance serviceInstanceAAI = new ServiceInstance();
759 serviceInstanceAAI.setServiceInstanceId("aaisi123");
760 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
761 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
762 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
763 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
764 vnf.setVnfId("vnfId123");
766 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
767 vnf.getVfModules().add(vfModule);
768 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
769 vnf.getVfModules().add(vfModule2);
771 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
772 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
773 volumeGroup.setVolumeGroupId("vg123");
774 vnf.getVolumeGroups().add(volumeGroup);
776 serviceInstanceMSO.getVnfs().add(vnf);
778 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
779 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
780 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
781 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
782 workflowAction.selectExecutionList(execution);
783 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
784 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
785 "UnassignVnfBB", "UnassignServiceInstanceBB");
789 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
790 String gAction = "deleteInstance";
791 String resource = "Service";
792 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
793 initExecution(gAction, bpmnRequest, false);
794 execution.setVariable("requestUri", "v6/serviceInstances/123");
796 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
797 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
798 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
799 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
800 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
801 northBoundRequest.setOrchestrationFlowList(orchFlows);
803 ServiceInstance serviceInstanceAAI = new ServiceInstance();
804 serviceInstanceAAI.setServiceInstanceId("aaisi123");
805 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
806 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
808 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
809 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
810 network.setNetworkId("123");
811 serviceInstanceMSO.getNetworks().add(network);
812 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
813 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
814 network2.setNetworkId("321");
815 serviceInstanceMSO.getNetworks().add(network2);
817 Collection collection = new Collection();
818 serviceInstanceMSO.setCollection(collection);
820 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
821 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
822 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
823 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
824 workflowAction.selectExecutionList(execution);
825 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
826 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
827 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
828 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
832 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
833 String gAction = "recreateInstance";
834 String resource = "Vnf";
835 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
836 initExecution(gAction, bpmnRequest, false);
837 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
838 execution.setVariable("serviceInstanceId", "123");
839 execution.setVariable("vnfId", "1234");
841 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
842 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
843 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
844 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
845 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
846 "AAIUnsetVnfInMaintBB");
847 northBoundRequest.setOrchestrationFlowList(orchFlows);
849 ServiceInstance serviceInstanceAAI = new ServiceInstance();
850 serviceInstanceAAI.setServiceInstanceId("123");
851 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
852 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
853 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
854 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
855 vnf.setVnfId("1234");
857 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
858 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
859 vfModule.setVfModuleId("vfModule1");
860 vnf.getVfModules().add(vfModule);
861 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
862 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
863 vfModule2.setVfModuleId("vfModule2");
864 vnf.getVfModules().add(vfModule2);
866 serviceInstanceMSO.getVnfs().add(vnf);
868 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
869 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
870 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
871 false, "cloud-owner")).thenReturn(northBoundRequest);
872 workflowAction.selectExecutionList(execution);
873 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
874 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
875 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
876 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
877 "AAIUnsetVnfInMaintBB");
881 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
882 String gAction = "replaceInstance";
883 String resource = "Vnf";
884 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
885 initExecution(gAction, bpmnRequest, false);
886 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
887 execution.setVariable("serviceInstanceId", "123");
888 execution.setVariable("vnfId", "1234");
890 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
891 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
892 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
893 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
894 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
895 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
896 "AAIUnsetVnfInMaintBB");
897 northBoundRequest.setOrchestrationFlowList(orchFlows);
899 ServiceInstance serviceInstanceAAI = new ServiceInstance();
900 serviceInstanceAAI.setServiceInstanceId("123");
901 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
902 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
903 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
904 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
905 vnf.setVnfId("1234");
906 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
907 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
908 vfModule.setVfModuleId("vfModule1");
909 vnf.getVfModules().add(vfModule);
910 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
911 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
912 vfModule2.setVfModuleId("vfModule2");
913 vnf.getVfModules().add(vfModule2);
914 serviceInstanceMSO.getVnfs().add(vnf);
915 VfModule vfModuleAAI = new VfModule();
916 vfModuleAAI.setVfModuleId("vfModule2");
917 RelationshipList relationshipList = new RelationshipList();
918 Relationship relationship = new Relationship();
919 relationshipList.getRelationship().add(relationship);
920 vfModuleAAI.setRelationshipList(relationshipList);
921 Relationships relationships = new Relationships("abc");
922 Configuration config = new Configuration();
923 config.setConfigurationId("configId");
924 Optional<Configuration> configOp = Optional.of(config);
925 Optional<Relationships> relationshipsOp = Optional.of(relationships);
927 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
928 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
929 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
930 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
931 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
932 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
933 false, "cloud-owner")).thenReturn(northBoundRequest);
934 workflowAction.selectExecutionList(execution);
935 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
936 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
937 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
938 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
939 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
940 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
941 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
942 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
943 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
949 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
950 String gAction = "createInstance";
951 String resource = "NetworkCollection";
952 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
953 initExecution(gAction, bpmnRequest, false);
954 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
956 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
957 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
958 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
959 northBoundRequest.setOrchestrationFlowList(orchFlows);
961 Service service = new Service();
962 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
963 CollectionResource collectionResource = new CollectionResource();
964 collectionResource.setToscaNodeType("Data NetworkCollection Data");
965 collectionResourceCustomization.setCollectionResource(collectionResource);
966 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
968 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
969 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
970 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
971 workflowAction.selectExecutionList(execution);
972 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
973 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
974 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
975 "ActivateNetworkCollectionBB");
980 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
981 String gAction = "deleteInstance";
982 String resource = "NetworkCollection";
983 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
984 initExecution(gAction, bpmnRequest, false);
985 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
987 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
988 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
989 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
990 northBoundRequest.setOrchestrationFlowList(orchFlows);
992 Service service = new Service();
993 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
994 CollectionResource collectionResource = new CollectionResource();
995 collectionResource.setToscaNodeType("Data NetworkCollection Data");
996 collectionResourceCustomization.setCollectionResource(collectionResource);
997 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
999 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1000 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1001 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1002 workflowAction.selectExecutionList(execution);
1003 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1004 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1005 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1006 "DeleteNetworkCollectionBB");
1010 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1011 String gAction = "createInstance";
1012 String resource = "VfModule";
1013 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1014 initExecution(gAction, bpmnRequest, true);
1015 execution.setVariable("requestUri",
1016 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1018 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1019 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1020 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1021 northBoundRequest.setOrchestrationFlowList(orchFlows);
1023 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1024 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1025 workflowAction.selectExecutionList(execution);
1026 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1027 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1031 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1032 String gAction = "createInstance";
1033 String resource = "VfModule";
1034 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1035 initExecution(gAction, bpmnRequest, true);
1036 execution.setVariable("requestUri",
1037 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1039 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1040 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1041 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1042 northBoundRequest.setOrchestrationFlowList(orchFlows);
1044 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1045 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1046 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1047 new CvnfcConfigurationCustomization();
1048 ConfigurationResource configurationResource = new ConfigurationResource();
1049 configurationResource.setToscaNodeType("FabricConfiguration");
1050 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1051 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1052 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1053 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1054 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1055 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1056 cvnfcCustomization.setDescription("description");
1057 cvnfcCustomizations.add(cvnfcCustomization);
1059 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1060 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1061 new CvnfcConfigurationCustomization();
1062 ConfigurationResource configurationResource2 = new ConfigurationResource();
1063 configurationResource2.setToscaNodeType("FabricConfiguration");
1064 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1065 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1066 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1067 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1068 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1069 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1070 cvnfcCustomization2.setDescription("description2");
1071 cvnfcCustomizations.add(cvnfcCustomization2);
1073 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1074 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1075 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1076 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1077 workflowAction.selectExecutionList(execution);
1078 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1079 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1080 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1081 "ActivateFabricConfigurationBB");
1085 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1086 String gAction = "replaceInstance";
1087 String resource = "VfModule";
1088 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1089 initExecution(gAction, bpmnRequest, true);
1090 execution.setVariable("requestUri",
1091 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1093 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1094 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1095 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1096 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1097 workflowAction.selectExecutionList(execution);
1098 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1100 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1101 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1102 "ChangeModelServiceInstanceBB");
1106 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1107 String gAction = "replaceInstanceRetainAssignments";
1108 String resource = "VfModule";
1109 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1110 initExecution(gAction, bpmnRequest, true);
1111 execution.setVariable("requestUri",
1112 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1114 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1115 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1116 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1117 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1118 workflowAction.selectExecutionList(execution);
1119 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1121 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1122 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1126 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1127 String gAction = "replaceInstance";
1128 String resource = "VfModule";
1129 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1130 initExecution(gAction, bpmnRequest, true);
1131 execution.setVariable("requestUri",
1132 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1133 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1134 execution.setVariable("vfModuleId", "1234");
1136 VolumeGroup volumeGroup = new VolumeGroup();
1137 volumeGroup.setVolumeGroupId("volumeGroupId");
1138 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1139 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1140 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1141 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1142 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1143 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1144 workflowAction.selectExecutionList(execution);
1145 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1147 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1148 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1149 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1153 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1155 String gAction = "replaceInstanceRetainAssignments";
1156 String resource = "VfModule";
1157 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1158 initExecution(gAction, bpmnRequest, true);
1159 execution.setVariable("requestUri",
1160 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1161 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1162 execution.setVariable("vfModuleId", "1234");
1164 VolumeGroup volumeGroup = new VolumeGroup();
1165 volumeGroup.setVolumeGroupId("volumeGroupId");
1166 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1167 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1169 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1170 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1171 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1172 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1173 workflowAction.selectExecutionList(execution);
1174 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1176 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1177 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1178 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1182 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1183 String gAction = "replaceInstance";
1184 String resource = "VfModule";
1185 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1186 initExecution(gAction, bpmnRequest, true);
1187 execution.setVariable("requestUri",
1188 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1189 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1190 execution.setVariable("vfModuleId", "1234");
1192 VolumeGroup volumeGroup = new VolumeGroup();
1193 volumeGroup.setVolumeGroupId("volumeGroupId");
1194 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1195 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1197 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1198 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1199 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1200 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1201 vfModuleCustomization.setVfModule(vfModule);
1202 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1203 .thenReturn(vfModuleCustomization);
1205 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1206 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1207 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1208 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1209 workflowAction.selectExecutionList(execution);
1210 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1212 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1213 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1214 "ChangeModelServiceInstanceBB");
1218 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1219 String gAction = "replaceInstance";
1220 String resource = "VfModule";
1221 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1222 initExecution(gAction, bpmnRequest, true);
1223 execution.setVariable("requestUri",
1224 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1225 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1226 execution.setVariable("vfModuleId", "1234");
1228 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1229 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1230 vnf.setModelCustomizationId("modelCustomizationId");
1231 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1233 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1234 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1235 vfModuleFromAAI.setVfModuleId("1234");
1236 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1238 VolumeGroup volumeGroup = new VolumeGroup();
1239 volumeGroup.setVolumeGroupId("volumeGroupId");
1240 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1241 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1243 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1244 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1245 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1246 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1247 vfModuleCustomization.setVfModule(vfModule);
1248 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1249 .thenReturn(vfModuleCustomization);
1250 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1251 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1252 vnfc.setModelInvariantId("modelInvariantId");
1253 vnfc.setVnfcName("testVnfcName");
1255 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1257 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1258 configuration.setConfigurationId("configurationId");
1259 configuration.setModelCustomizationId("modelCustimizationId");
1260 configuration.setConfigurationName("testConfigurationName");
1261 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1263 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1264 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1265 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1266 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1267 SPY_workflowAction.selectExecutionList(execution);
1268 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1270 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1271 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1272 "ChangeModelServiceInstanceBB");
1276 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1277 String gAction = "replaceInstanceRetainAssignments";
1278 String resource = "VfModule";
1279 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1280 initExecution(gAction, bpmnRequest, true);
1281 execution.setVariable("requestUri",
1282 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1283 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1284 execution.setVariable("vfModuleId", "1234");
1286 VolumeGroup volumeGroup = new VolumeGroup();
1287 volumeGroup.setVolumeGroupId("volumeGroupId");
1288 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1289 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1291 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1292 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1293 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1294 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1295 vfModuleCustomization.setVfModule(vfModule);
1296 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1297 .thenReturn(vfModuleCustomization);
1299 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1300 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1301 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1302 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1303 workflowAction.selectExecutionList(execution);
1304 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1306 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1307 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1311 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1312 String gAction = "replaceInstance";
1313 String resource = "VfModule";
1314 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1315 initExecution(gAction, bpmnRequest, true);
1316 execution.setVariable("requestUri",
1317 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1318 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1319 execution.setVariable("vfModuleId", "1234");
1321 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1322 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1323 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1324 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1325 vfModuleCustomization.setVfModule(vfModule);
1326 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1327 .thenReturn(vfModuleCustomization);
1329 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1330 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1331 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1332 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1333 workflowAction.selectExecutionList(execution);
1334 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1336 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1337 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1338 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1342 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1344 String gAction = "replaceInstanceRetainAssignments";
1345 String resource = "VfModule";
1346 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1347 initExecution(gAction, bpmnRequest, true);
1348 execution.setVariable("requestUri",
1349 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1350 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1351 execution.setVariable("vfModuleId", "1234");
1353 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1354 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1355 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1356 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1357 vfModuleCustomization.setVfModule(vfModule);
1358 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1359 .thenReturn(vfModuleCustomization);
1361 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1362 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1363 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1364 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1365 workflowAction.selectExecutionList(execution);
1366 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1368 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1369 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1370 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1374 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1375 String gAction = "replaceInstance";
1376 String resource = "VfModule";
1377 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1378 initExecution(gAction, bpmnRequest, true);
1379 execution.setVariable("requestUri",
1380 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1381 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1382 execution.setVariable("vfModuleId", "1234");
1384 VolumeGroup volumeGroup = new VolumeGroup();
1385 volumeGroup.setVolumeGroupId("volumeGroupId");
1386 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1387 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1389 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1390 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1391 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1392 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1393 vfModuleCustomization.setVfModule(vfModule);
1394 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1395 .thenReturn(vfModuleCustomization);
1397 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1398 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1399 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1400 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1401 workflowAction.selectExecutionList(execution);
1402 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1404 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1405 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1406 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1407 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1411 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1412 String gAction = "replaceInstanceRetainAssignments";
1413 String resource = "VfModule";
1414 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1415 initExecution(gAction, bpmnRequest, true);
1416 execution.setVariable("requestUri",
1417 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1418 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1419 execution.setVariable("vfModuleId", "1234");
1421 VolumeGroup volumeGroup = new VolumeGroup();
1422 volumeGroup.setVolumeGroupId("volumeGroupId");
1423 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1424 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1426 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1427 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1428 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1429 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1430 vfModuleCustomization.setVfModule(vfModule);
1431 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1432 .thenReturn(vfModuleCustomization);
1434 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1435 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1436 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1437 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1438 workflowAction.selectExecutionList(execution);
1439 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1441 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1442 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1443 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1444 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1449 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1450 String gAction = "deleteInstance";
1451 String resource = "VfModule";
1452 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1453 initExecution(gAction, bpmnRequest, true);
1454 execution.setVariable("requestUri",
1455 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1457 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1458 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1459 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1460 northBoundRequest.setOrchestrationFlowList(orchFlows);
1462 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1463 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1465 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1466 vnf.setVnfId("vnf0");
1467 vnf.setModelCustomizationId("modelCustomizationId");
1468 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1470 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1471 vfModule.setModelCustomizationId("modelCustomizationId");
1472 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1474 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1475 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1476 vnfc.setModelInvariantId("modelInvariantId");
1477 vnfc.setVnfcName("testVnfcName");
1479 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1482 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1483 configuration.setConfigurationId("configurationId");
1484 configuration.setModelCustomizationId("modelCustimizationId");
1485 configuration.setConfigurationName("testConfigurationName");
1486 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1489 SPY_workflowAction.selectExecutionList(execution);
1490 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1491 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1492 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1496 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1497 String gAction = "deleteInstance";
1498 ObjectMapper mapper = new ObjectMapper();
1499 WorkflowType resourceType = WorkflowType.VFMODULE;
1500 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1501 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1502 execution.setVariable("requestAction", gAction);
1503 execution.setVariable("bpmnRequest", bpmnRequest);
1504 execution.setVariable("vnfId", "1234");
1505 execution.setVariable("vfModuleId", "vfModuleId1234");
1506 execution.setVariable("requestUri",
1507 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1508 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1509 RequestDetails requestDetails = sIRequest.getRequestDetails();
1510 String requestAction = "deleteInstance";
1511 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1512 boolean aLaCarte = true;
1513 String apiVersion = "7";
1514 String vnfType = "vnfType";
1515 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1516 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1517 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1518 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1520 thrown.expect(AAIEntityNotFoundException.class);
1521 thrown.expectMessage(containsString(
1522 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1524 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1525 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1527 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1528 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1529 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1530 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1532 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1533 vnf.setVnfId("vnf0");
1534 vnf.setModelCustomizationId("modelCustomizationId");
1535 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1537 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1538 vfModule.setModelCustomizationId("modelCustomizationId");
1539 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1541 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1545 public void getConfigBuildingBlocksTest() throws Exception {
1546 String gAction = "deleteInstance";
1547 ObjectMapper mapper = new ObjectMapper();
1548 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1550 WorkflowType resourceType = WorkflowType.VFMODULE;
1551 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1552 execution.setVariable("requestAction", gAction);
1553 String bpmnRequest =
1554 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1555 execution.setVariable("bpmnRequest", bpmnRequest);
1556 execution.setVariable("vnfId", "1234");
1557 execution.setVariable("vfModuleId", "vfModuleId1234");
1558 execution.setVariable("requestUri",
1559 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1560 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1561 RequestDetails requestDetails = sIRequest.getRequestDetails();
1562 String requestAction = "deleteInstance";
1563 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1564 boolean aLaCarte = true;
1565 String apiVersion = "7";
1566 String vnfType = "vnfType";
1567 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1568 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1569 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1570 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1572 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1573 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1575 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1576 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1577 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1578 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1580 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1581 vnf.setVnfId("vnf0");
1582 vnf.setModelCustomizationId("modelCustomizationId");
1583 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1585 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1586 vfModule.setModelCustomizationId("modelCustomizationId");
1588 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1589 config1.setConfigurationId("config1");
1590 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1591 config2.setConfigurationId("config2");
1593 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1594 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1595 vnfc1.setVnfcName("zauk53avetd02svm001");
1596 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1597 vnfc2.setVnfcName("zauk53avetd02tvm001");
1601 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1602 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1603 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1604 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1605 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1606 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1607 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1609 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1611 assertFalse(results.isEmpty());
1612 assertEquals(2, results.size());
1613 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1614 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1615 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1616 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1620 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1621 String gAction = "deleteInstance";
1622 ObjectMapper mapper = new ObjectMapper();
1623 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1625 WorkflowType resourceType = WorkflowType.VFMODULE;
1626 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1627 execution.setVariable("requestAction", gAction);
1628 String bpmnRequest =
1629 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1630 execution.setVariable("bpmnRequest", bpmnRequest);
1631 execution.setVariable("vnfId", "1234");
1632 execution.setVariable("vfModuleId", "vfModuleId1234");
1633 execution.setVariable("requestUri",
1634 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1635 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1636 RequestDetails requestDetails = sIRequest.getRequestDetails();
1637 String requestAction = "deleteInstance";
1638 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1639 boolean aLaCarte = true;
1640 String apiVersion = "7";
1641 String vnfType = "vnfType";
1642 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1643 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1644 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1645 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1647 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1648 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1650 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1651 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1652 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1653 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1655 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1656 vnf.setVnfId("vnf0");
1657 vnf.setModelCustomizationId("modelCustomizationId");
1658 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1660 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1661 vfModule.setModelCustomizationId("modelCustomizationId");
1663 /* this is a test case where configuration for vnfc is null */
1664 org.onap.aai.domain.yang.Configuration config1 = null;
1665 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1666 config2.setConfigurationId("config2");
1668 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1669 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1670 vnfc1.setVnfcName("zauk53avetd02svm001");
1671 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1672 vnfc2.setVnfcName("zauk53avetd02tvm001");
1676 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1677 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1678 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1679 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1680 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1681 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1682 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1684 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1686 assertFalse(results.isEmpty());
1687 assertEquals(1, results.size());
1688 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1689 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1693 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1694 String gAction = "deleteInstance";
1695 String resource = "VfModule";
1696 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1697 initExecution(gAction, bpmnRequest, true);
1698 execution.setVariable("requestUri",
1699 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1701 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1702 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1703 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1704 northBoundRequest.setOrchestrationFlowList(orchFlows);
1706 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1707 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1709 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1710 vnf.setVnfId("vnf0");
1711 vnf.setModelCustomizationId("modelCustomizationId");
1712 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1714 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1715 vfModule.setModelCustomizationId("modelCustomizationId");
1716 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1718 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1720 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1723 SPY_workflowAction.selectExecutionList(execution);
1724 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1725 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1729 public void selectExecutionListMacroResumeTest() throws Exception {
1730 String gAction = "createInstance";
1731 String resource = "Service";
1732 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1733 initExecution(gAction, bpmnRequest, false);
1734 execution.setVariable("requestUri", "v6/serviceInstances/123");
1736 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1737 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1738 northBoundRequest.setOrchestrationFlowList(orchFlows);
1740 Service service = new Service();
1741 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1743 ServiceInstance si = new ServiceInstance();
1745 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1746 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1748 String flowsToExecuteString =
1749 "[{\"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\"}}]";
1750 ObjectMapper om = new ObjectMapper();
1751 List<ExecuteBuildingBlock> flowsToExecute = null;
1753 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1754 flowsToExecute = Arrays.asList(asArray);
1755 } catch (Exception e) {
1756 e.printStackTrace();
1759 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1761 workflowAction.selectExecutionList(execution);
1762 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1763 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1767 public void getRelatedResourcesInVfModuleTest() throws Exception {
1768 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1769 vnfc.setModelInvariantId("modelInvariantId");
1770 vnfc.setVnfcName("testVnfcName");
1772 String vfncPayload =
1773 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1774 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1776 String configurationPayload =
1777 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1778 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1779 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1780 configurationResultWrappers.add(configurationWrapper);
1782 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1783 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1785 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1787 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1788 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1789 assertEquals("testConfigurationId", configuration.getConfigurationId());
1793 * WorkflowActionBB Tests
1797 public void pluralTest() {
1798 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1799 "networks, Network", "invalidNames, invalidNames");
1800 items.forEach(item -> {
1801 String[] split = item.split(",");
1802 String type = split[0].trim();
1803 String expected = split[1].trim();
1804 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1809 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1810 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1812 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1813 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1814 executeFlows.add(ebb);
1816 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1817 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1818 executeFlows.add(ebb2);
1820 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1821 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1822 executeFlows.add(ebb3);
1824 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1825 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1826 executeFlows.add(ebb4);
1828 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1829 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1830 executeFlows.add(ebb5);
1832 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1833 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1834 executeFlows.add(ebb6);
1836 List<ExecuteBuildingBlock> sorted =
1837 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1838 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1839 "CreateNetworkBB", "ActivateNetworkBB");
1843 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1844 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1846 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1847 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1848 executeFlows.add(ebb);
1850 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1851 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1852 executeFlows.add(ebb2);
1854 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1855 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1856 executeFlows.add(ebb3);
1858 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1859 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1860 executeFlows.add(ebb4);
1862 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1863 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1864 executeFlows.add(ebb5);
1866 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1867 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1868 executeFlows.add(ebb6);
1870 List<ExecuteBuildingBlock> sorted =
1871 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1872 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1873 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1877 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1878 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1879 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1880 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1881 northBoundRequest.setOrchestrationFlowList(orchFlows);
1882 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1883 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1885 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1886 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1887 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1888 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1889 WorkflowType.VNF, false, "my-custom-cloud-owner");
1890 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1891 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1892 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1893 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1894 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1895 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1896 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1897 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1898 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1899 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1903 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1904 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1905 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1906 northBoundRequest.setOrchestrationFlowList(orchFlows);
1907 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1908 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1910 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1911 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1912 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1916 public void extractResourceIdAndTypeFromUriTest() {
1917 String uri = "/v6/serviceInstances/123";
1918 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1919 String uri3 = "/v6/serviceInstances";
1920 String uri4 = "/v6/serviceInstances/assign";
1921 String uri5 = "'/v6/serviceInstances/123/vnfs";
1922 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1923 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1924 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1925 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1926 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1927 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1928 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1929 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1930 assertEquals(expected1.getResourceId(), result.getResourceId());
1931 assertEquals(expected1.getResourceType(), result.getResourceType());
1932 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1933 assertEquals(expected2.getResourceId(), result.getResourceId());
1934 assertEquals(expected2.getResourceType(), result.getResourceType());
1935 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1936 assertEquals("Service", result.getResourceType().toString());
1937 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1938 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1939 assertEquals("Service", result.getResourceType().toString());
1940 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1941 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1942 assertEquals("Vnf", result.getResourceType().toString());
1943 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1944 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1945 assertEquals(expected3.getResourceId(), result.getResourceId());
1946 assertEquals(expected3.getResourceType(), result.getResourceType());
1947 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1948 assertEquals(expected4.getResourceId(), result.getResourceId());
1949 assertEquals(expected4.getResourceType(), result.getResourceType());
1950 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1951 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1952 assertEquals("VfModule", result.getResourceType().toString());
1957 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1958 this.expectedException.expect(IllegalArgumentException.class);
1959 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1960 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1964 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1965 this.expectedException.expect(IllegalArgumentException.class);
1966 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1967 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1971 public void extractResourceIdAndTypeFromUriResumeTest() {
1972 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1973 "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");
1974 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1978 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
1979 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1980 "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");
1981 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1985 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
1986 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1987 "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");
1988 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1992 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
1993 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1994 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
1995 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1999 public void isUriResumeTest() {
2000 assertTrue(workflowAction.isUriResume(
2001 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2002 assertTrue(workflowAction.isUriResume(
2003 " 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"));
2005 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2009 public void isRequestMacroServiceResumeTest() {
2010 ServiceInstance si = new ServiceInstance();
2011 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2012 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2013 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2017 public void populateResourceIdsFromApiHandlerTest() {
2018 execution.setVariable("serviceInstanceId", "123");
2019 execution.setVariable("vnfId", "888");
2020 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2021 assertEquals("123", x.getServiceInstanceId());
2022 assertEquals("888", x.getVnfId());
2023 assertNull(x.getVolumeGroupId());
2027 public void handleRuntimeExceptionTest() {
2028 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2029 execution.setVariable("testProcessKey", "testProcessKeyValue");
2031 workflowAction.handleRuntimeException(execution);
2032 } catch (BpmnError wfe) {
2033 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2039 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2040 execution.setVariable("testProcessKey", "testProcessKeyValue");
2041 Service service = new Service();
2042 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2043 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2044 networkCust.setModelCustomizationUUID("123");
2045 networkCustomizations.add(networkCust);
2046 service.setNetworkCustomizations(networkCustomizations);
2047 NetworkCollectionResourceCustomization collectionResourceCustomization =
2048 new NetworkCollectionResourceCustomization();
2049 collectionResourceCustomization.setModelCustomizationUUID("123");
2050 CollectionResource collectionResource = new CollectionResource();
2051 collectionResource.setToscaNodeType("NetworkCollection");
2052 InstanceGroup instanceGroup = new InstanceGroup();
2053 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2054 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2055 new CollectionResourceInstanceGroupCustomization();
2056 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2057 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2058 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2059 collectionResource.setInstanceGroup(instanceGroup);
2060 collectionResourceCustomization.setCollectionResource(collectionResource);;
2061 service.setModelUUID("abc");
2062 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2063 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2064 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2065 doReturn(collectionResourceCustomization).when(catalogDbClient)
2066 .getNetworkCollectionResourceCustomizationByID("123");
2067 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2068 ObjectMapper mapper = new ObjectMapper();
2069 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2070 List<Resource> resourceCounter = new ArrayList<>();
2071 thrown.expect(BpmnError.class);
2072 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2073 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2079 public void findCatalogNetworkCollectionTest() {
2080 Service service = new Service();
2081 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2082 networkCustomization.setModelCustomizationUUID("123");
2083 service.getCollectionResourceCustomizations().add(networkCustomization);
2084 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2085 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2086 assertNotNull(customization);
2090 public void findCatalogNetworkCollectionEmptyTest() {
2091 Service service = new Service();
2092 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2093 networkCustomization.setModelCustomizationUUID("123");
2094 service.getCollectionResourceCustomizations().add(networkCustomization);
2095 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2096 assertNull(customization);
2100 public void findCatalogNetworkCollectionMoreThanOneTest() {
2101 Service service = new Service();
2102 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2103 networkCustomization1.setModelCustomizationUUID("123");
2104 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2105 networkCustomization2.setModelCustomizationUUID("321");
2106 service.getCollectionResourceCustomizations().add(networkCustomization1);
2107 service.getCollectionResourceCustomizations().add(networkCustomization2);
2108 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2109 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2110 workflowAction.findCatalogNetworkCollection(execution, service);
2111 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2112 execution.getVariable("WorkflowActionErrorMessage"));
2117 public void traverseAAIServiceTest() {
2118 List<Resource> resourceCounter = new ArrayList<>();
2119 String resourceId = "si0";
2120 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2122 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2123 serviceInstanceAAI.setServiceInstanceId(resourceId);
2125 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2133 Configuration config = new Configuration();
2134 config.setConfigurationId("testConfigurationId2");
2135 serviceInstance.getConfigurations().add(config);
2137 Relationship relationship1 = new Relationship();
2138 relationship1.setRelatedTo("vnfc");
2139 RelationshipList relationshipList1 = new RelationshipList();
2140 relationshipList1.getRelationship().add(relationship1);
2142 Relationship relationship2 = new Relationship();
2143 relationship2.setRelatedTo("vpn-binding");
2144 RelationshipList relationshipList2 = new RelationshipList();
2145 relationshipList2.getRelationship().add(relationship2);
2147 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2148 aaiConfiguration1.setConfigurationId("testConfigurationId");
2149 aaiConfiguration1.setRelationshipList(relationshipList1);
2151 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2152 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2153 aaiConfiguration2.setRelationshipList(relationshipList1);
2156 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2157 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2158 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2159 .getConfiguration("testConfigurationId");
2160 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2161 .getConfiguration("testConfigurationId2");
2162 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2163 assertEquals(8, resourceCounter.size());
2164 assertTrue(resourceCounter.get(2).isBaseVfModule());
2165 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2166 } catch (Exception e) {
2167 fail("Unexpected exception was thrown.");
2172 public void foundRelatedTest() {
2173 List<Resource> resourceList = new ArrayList<>();
2174 resourceList.add(new Resource(WorkflowType.PNF, "model customization id", false));
2175 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2176 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2177 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2179 assertEquals(workflowAction.foundRelated(resourceList), true);
2183 public void containsWorkflowTypeTest() {
2184 List<Resource> resourceList = new ArrayList<>();
2185 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2186 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2187 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2188 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2190 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2191 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2192 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2193 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2194 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2197 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2198 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2199 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2200 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2201 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2202 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2203 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2204 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2205 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2209 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2210 List<OrchestrationFlow> result = new ArrayList<>();
2211 int sequenceNumber = 1;
2212 for (String flowName : flowNames) {
2213 OrchestrationFlow orchFlow = new OrchestrationFlow();
2214 orchFlow.setFlowName(flowName);
2215 orchFlow.setSequenceNumber(sequenceNumber++);
2216 result.add(orchFlow);
2221 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2222 for (int i = 0; i < ebbs.size(); i++) {
2223 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2227 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2228 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2229 execution.setVariable("requestAction", gAction);
2230 execution.setVariable("bpmnRequest", bpmnRequest);
2231 execution.setVariable("aLaCarte", isAlaCarte);
2232 execution.setVariable("apiVersion", "7");
2235 private String readBpmnRequestFromFile(String fileName) throws IOException {
2236 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2239 private List<Resource> prepareListWithResources() {
2240 List<Resource> resourceList = new ArrayList<>();
2241 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2242 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2243 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2244 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2245 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2246 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2247 return resourceList;