2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Modifications Copyright (c) 2020 Nokia
10 * ================================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 * ============LICENSE_END=========================================================
25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
27 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
28 import static org.hamcrest.CoreMatchers.containsString;
29 import static org.hamcrest.CoreMatchers.equalTo;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.junit.Assert.fail;
37 import static org.mockito.ArgumentMatchers.any;
38 import static org.mockito.ArgumentMatchers.anyList;
39 import static org.mockito.ArgumentMatchers.anyObject;
40 import static org.mockito.ArgumentMatchers.anyString;
41 import static org.mockito.ArgumentMatchers.eq;
42 import static org.mockito.ArgumentMatchers.isA;
43 import static org.mockito.Mockito.doReturn;
44 import static org.mockito.Mockito.doThrow;
45 import static org.mockito.Mockito.when;
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.ObjectMapper;
48 import java.io.IOException;
49 import java.net.MalformedURLException;
50 import java.nio.file.Files;
51 import java.nio.file.Paths;
52 import java.util.ArrayList;
53 import java.util.Arrays;
54 import java.util.List;
55 import java.util.Optional;
56 import java.util.UUID;
57 import org.camunda.bpm.engine.delegate.BpmnError;
58 import org.camunda.bpm.engine.delegate.DelegateExecution;
59 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
60 import org.javatuples.Pair;
61 import org.junit.Before;
62 import org.junit.Ignore;
63 import org.junit.Rule;
64 import org.junit.Test;
65 import org.junit.rules.ExpectedException;
66 import org.mockito.InjectMocks;
67 import org.mockito.Mock;
68 import org.mockito.Spy;
69 import org.onap.aai.domain.yang.Relationship;
70 import org.onap.aai.domain.yang.RelationshipList;
71 import org.onap.aai.domain.yang.ServiceInstance;
72 import org.onap.aai.domain.yang.VfModule;
73 import org.onap.aai.domain.yang.VolumeGroup;
74 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
75 import org.onap.aaiclient.client.aai.entities.Relationships;
76 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
77 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
78 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
79 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
80 import org.onap.so.bpmn.BaseTaskTest;
81 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
82 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
83 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
84 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
85 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
86 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
87 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
88 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
89 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
90 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
91 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
92 import org.onap.so.db.catalog.beans.CollectionResource;
93 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
94 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
95 import org.onap.so.db.catalog.beans.ConfigurationResource;
96 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
97 import org.onap.so.db.catalog.beans.CvnfcCustomization;
98 import org.onap.so.db.catalog.beans.HeatEnvironment;
99 import org.onap.so.db.catalog.beans.HeatTemplate;
100 import org.onap.so.db.catalog.beans.InstanceGroup;
101 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
102 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
103 import org.onap.so.db.catalog.beans.Service;
104 import org.onap.so.db.catalog.beans.VfModuleCustomization;
105 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
106 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
107 import org.onap.so.serviceinstancebeans.RequestDetails;
108 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
109 import org.springframework.core.env.Environment;
111 public class WorkflowActionTest extends BaseTaskTest {
113 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
114 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
115 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
116 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
117 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
118 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
119 "VfModuleReplaceRebuildVolumeGroups.json";
120 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
121 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
124 protected Environment environment;
126 protected UserParamsServiceTraversal userParamsServiceTraversal;
129 private AaiResourceIdValidator aaiResourceIdValidator;
131 protected WorkflowAction workflowAction;
133 private DelegateExecution execution;
137 protected WorkflowAction SPY_workflowAction;
140 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
144 protected VnfEBBLoader vnfEBBLoaderSpy;
148 protected ServiceEBBLoader serviceEBBLoader;
151 public ExpectedException thrown = ExpectedException.none();
153 private String RESOURCE_PATH = "src/test/resources/__files/";
155 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
156 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
157 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
158 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
159 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
160 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
161 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
162 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
163 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
164 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
165 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
166 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
167 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
168 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
171 public void before() throws Exception {
172 execution = new DelegateExecutionFake();
173 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
174 servInstance.setServiceInstanceId("TEST");
175 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
176 workflowAction.setBbInputSetupUtils(bbSetupUtils);
177 workflowAction.setBbInputSetup(bbInputSetup);
185 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
186 String gAction = "createInstance";
187 String resource = "Network";
188 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
189 initExecution(gAction, bpmnRequest, true);
190 execution.setVariable("requestUri", "v6/networks/123");
192 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
193 List<OrchestrationFlow> orchFlows =
194 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
195 northBoundRequest.setOrchestrationFlowList(orchFlows);
197 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
198 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
200 workflowAction.selectExecutionList(execution);
201 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
202 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
206 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
207 String gAction = "deleteInstance";
208 String resource = "Network";
209 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
210 initExecution(gAction, bpmnRequest, true);
211 execution.setVariable("requestUri", "v6/networks/123");
213 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
214 List<OrchestrationFlow> orchFlows =
215 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
216 northBoundRequest.setOrchestrationFlowList(orchFlows);
218 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
219 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
221 workflowAction.selectExecutionList(execution);
222 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
223 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
227 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
228 String gAction = "createInstance";
229 String resource = "Service";
230 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
231 initExecution(gAction, bpmnRequest, true);
232 execution.setVariable("requestUri", "v6/serviceInstances/123");
235 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
236 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
237 northBoundRequest.setOrchestrationFlowList(orchFlows);
239 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
240 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
241 workflowAction.selectExecutionList(execution);
242 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
243 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
247 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
248 String gAction = "createInstance";
249 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
250 initExecution(gAction, bpmnRequest, true);
251 execution.setVariable("requestUri", "v6/serviceInstances");
253 doThrow(new DuplicateNameException(
254 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
255 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
256 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
258 SPY_workflowAction.selectExecutionList(execution);
259 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
260 "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.");
262 // verify default values are present in failure case
263 assertEquals(true, execution.getVariable("isTopLevelFlow"));
264 assertEquals(false, execution.getVariable("sentSyncResponse"));
268 * SERVICE MACRO TESTS
271 public void selectExecutionListServiceMacroAssignTest() throws Exception {
272 String gAction = "assignInstance";
273 String resource = "Service";
274 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
275 initExecution(gAction, bpmnRequest, false);
276 execution.setVariable("requestUri", "v6/serviceInstances/123");
278 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
279 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
280 "AssignVolumeGroupBB", "AssignVfModuleBB");
281 northBoundRequest.setOrchestrationFlowList(orchFlows);
283 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
284 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
285 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
286 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
287 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
288 HeatTemplate volumeHeatTemplate = new HeatTemplate();
289 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
290 vfModuleCustomization.setVfModule(vfModule);
292 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
293 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
294 HeatEnvironment heatEnvironment = new HeatEnvironment();
295 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
296 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
297 HeatTemplate moduleHeatTemplate = new HeatTemplate();
298 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
299 vfModuleCustomization2.setVfModule(vfModule2);
301 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
302 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
304 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
305 .thenReturn(prepareListWithResources());
306 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
307 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
308 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
309 .thenReturn(vfModuleCustomization);
310 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
311 .thenReturn(vfModuleCustomization2);
312 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
313 .thenReturn(vfModuleCustomization3);
315 workflowAction.selectExecutionList(execution);
316 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
317 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
318 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
322 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
323 String gAction = "assignInstance";
324 String resource = "Service";
325 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
326 initExecution(gAction, bpmnRequest, false);
327 execution.setVariable("requestUri", "v6/serviceInstances/123");
329 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
330 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
331 "AssignVolumeGroupBB", "AssignVfModuleBB");
332 northBoundRequest.setOrchestrationFlowList(orchFlows);
334 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
335 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
336 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
337 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
338 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
339 HeatTemplate volumeHeatTemplate = new HeatTemplate();
340 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
341 vfModuleCustomization.setVfModule(vfModule);
343 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
344 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
345 HeatEnvironment heatEnvironment = new HeatEnvironment();
346 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
347 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
348 HeatTemplate moduleHeatTemplate = new HeatTemplate();
349 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
350 vfModuleCustomization2.setVfModule(vfModule2);
352 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
353 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
355 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
356 .thenReturn(prepareListWithResources());
357 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
358 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
359 false, "att-aic")).thenReturn(northBoundRequest);
360 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
361 .thenReturn(vfModuleCustomization);
362 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
363 .thenReturn(vfModuleCustomization2);
364 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
365 .thenReturn(vfModuleCustomization3);
366 workflowAction.selectExecutionList(execution);
367 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
368 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
369 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
373 public void selectExecutionListServiceMacroActivateTest() throws Exception {
374 String gAction = "activateInstance";
375 String resource = "Service";
376 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
377 initExecution(gAction, bpmnRequest, false);
378 execution.setVariable("requestUri", "v6/serviceInstances/si0");
380 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
381 List<OrchestrationFlow> orchFlows =
382 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
383 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
384 northBoundRequest.setOrchestrationFlowList(orchFlows);
386 ServiceInstance serviceInstanceAAI = new ServiceInstance();
387 serviceInstanceAAI.setServiceInstanceId("si0");
388 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
389 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
390 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
391 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
392 vnf.setVnfId("vnf0");
394 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
395 vnf.getVfModules().add(vfModule);
396 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
397 vnf.getVfModules().add(vfModule2);
399 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
400 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
401 volumeGroup.setVolumeGroupId("volumeGroup0");
402 vnf.getVolumeGroups().add(volumeGroup);
404 serviceInstanceMSO.getVnfs().add(vnf);
406 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
407 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
408 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
409 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
410 workflowAction.selectExecutionList(execution);
411 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
412 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
413 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
414 "ActivateServiceInstanceBB");
415 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
416 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
417 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
418 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
419 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
420 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
421 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
422 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
426 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
427 String gAction = "deactivateInstance";
428 String resource = "Service";
429 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
430 initExecution(gAction, bpmnRequest, false);
431 execution.setVariable("requestUri", "v6/serviceInstances/123");
433 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
434 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
435 northBoundRequest.setOrchestrationFlowList(orchFlows);
437 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
438 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
439 workflowAction.selectExecutionList(execution);
440 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
441 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
445 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
446 String gAction = "createInstance";
447 String resource = "Service";
448 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
449 initExecution(gAction, bpmnRequest, false);
450 execution.setVariable("requestUri", "v6/serviceInstances/123");
452 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
453 northBoundRequest.setIsToplevelflow(true);
454 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
455 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
456 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
457 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
458 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
459 northBoundRequest.setOrchestrationFlowList(orchFlows);
461 Service service = new Service();
462 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
463 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
464 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
465 workflowAction.selectExecutionList(execution);
466 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
467 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
471 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
472 String gAction = "createInstance";
473 String resource = "Service";
474 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
475 initExecution(gAction, bpmnRequest, false);
476 execution.setVariable("requestUri", "v6/serviceInstances/123");
478 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
479 northBoundRequest.setIsToplevelflow(true);
480 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
481 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
482 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
483 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
484 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
485 northBoundRequest.setOrchestrationFlowList(orchFlows);
487 Service service = new Service();
488 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
489 networkCustomization.setModelCustomizationUUID("1234");
490 service.getNetworkCustomizations().add(networkCustomization);
491 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
492 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
493 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
495 workflowAction.selectExecutionList(execution);
496 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
497 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
498 "ActivateNetworkBB", "ActivateServiceInstanceBB");
502 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
503 String gAction = "createInstance";
504 String resource = "Service";
505 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
506 initExecution(gAction, bpmnRequest, false);
507 execution.setVariable("requestUri", "v6/serviceInstances/123");
509 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
510 northBoundRequest.setIsToplevelflow(true);
511 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
512 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
513 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
514 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
515 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
516 northBoundRequest.setOrchestrationFlowList(orchFlows);
518 Service service = new Service();
519 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
520 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
521 networkCust.setModelCustomizationUUID("123");
522 networkCustomizations.add(networkCust);
523 service.setNetworkCustomizations(networkCustomizations);
524 NetworkCollectionResourceCustomization collectionResourceCustomization =
525 new NetworkCollectionResourceCustomization();
526 collectionResourceCustomization.setModelCustomizationUUID("123");
528 CollectionResource collectionResource = new CollectionResource();
529 collectionResource.setToscaNodeType("NetworkCollection");
530 InstanceGroup instanceGroup = new InstanceGroup();
531 instanceGroup.setToscaNodeType("NetworkCollectionResource");
532 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
533 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
534 new CollectionNetworkResourceCustomization();
535 collectionNetworkResourceCust.setModelCustomizationUUID("123");
536 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
537 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
538 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
539 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
540 new CollectionResourceInstanceGroupCustomization();
541 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
542 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
543 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
544 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
545 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
546 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
547 collectionResource.setInstanceGroup(instanceGroup);
548 collectionResourceCustomization.setCollectionResource(collectionResource);;
549 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
550 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
551 doReturn(collectionResourceCustomization).when(catalogDbClient)
552 .getNetworkCollectionResourceCustomizationByID("123");
553 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
554 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
555 workflowAction.selectExecutionList(execution);
556 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
557 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
558 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
559 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
560 "ActivateServiceInstanceBB");
561 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
562 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
564 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
565 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
567 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
570 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
571 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
572 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
573 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
574 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
576 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
579 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
580 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
581 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
582 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
583 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
585 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
591 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
592 String gAction = "createInstance";
593 String resource = "Service";
594 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
595 initExecution(gAction, bpmnRequest, false);
596 execution.setVariable("requestUri", "v6/serviceInstances/123");
598 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
599 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
600 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
601 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
602 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
603 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
604 northBoundRequest.setOrchestrationFlowList(orchFlows);
606 Service service = new Service();
607 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
609 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
610 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
611 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
612 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
613 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
614 HeatTemplate volumeHeatTemplate = new HeatTemplate();
615 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
616 vfModuleCustomization.setVfModule(vfModule);
618 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
619 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
620 HeatEnvironment heatEnvironment = new HeatEnvironment();
621 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
622 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
623 HeatTemplate moduleHeatTemplate = new HeatTemplate();
624 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
625 vfModuleCustomization2.setVfModule(vfModule2);
627 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
628 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
630 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
631 .thenReturn(prepareListWithResources());
632 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
633 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
634 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
635 .thenReturn(vfModuleCustomization);
636 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
637 .thenReturn(vfModuleCustomization2);
638 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
639 .thenReturn(vfModuleCustomization3);
640 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
641 workflowAction.selectExecutionList(execution);
642 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
643 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
644 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
645 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
646 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
647 "ActivateServiceInstanceBB");
649 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
650 int randomUUIDLength = UUID.randomUUID().toString().length();
651 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
652 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
653 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
655 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
656 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
657 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
658 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
659 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
660 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
661 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
662 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
663 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
664 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
665 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
666 assertEquals(true, execution.getVariable("homing"));
670 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
671 String gAction = "deleteInstance";
672 String resource = "Service";
673 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
674 initExecution(gAction, bpmnRequest, false);
675 execution.setVariable("requestUri", "v6/serviceInstances/123");
677 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
678 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
679 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
680 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
681 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
682 "UnassignServiceInstanceBB");
683 northBoundRequest.setOrchestrationFlowList(orchFlows);
685 ServiceInstance serviceInstanceAAI = new ServiceInstance();
686 serviceInstanceAAI.setServiceInstanceId("aaisi123");
687 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
688 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
689 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
690 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
691 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
692 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
693 vnf.setVnfId("vnfId123");
694 pnf.setPnfId("pnfId123");
696 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
697 vnf.getVfModules().add(vfModule);
698 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
699 vnf.getVfModules().add(vfModule2);
701 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
702 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
703 volumeGroup.setVolumeGroupId("vg123");
704 vnf.getVolumeGroups().add(volumeGroup);
706 serviceInstanceMSO.getVnfs().add(vnf);
707 serviceInstanceMSO.getPnfs().add(pnf);
709 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
710 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
711 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
712 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
713 workflowAction.selectExecutionList(execution);
714 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
715 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
716 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
717 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
718 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
722 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
723 String gAction = "deleteInstance";
724 String resource = "Service";
725 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
726 initExecution(gAction, bpmnRequest, false);
727 execution.setVariable("requestUri", "v6/serviceInstances/123");
729 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
730 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
731 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
732 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
733 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
734 "UnassignServiceInstanceBB");
735 northBoundRequest.setOrchestrationFlowList(orchFlows);
737 ServiceInstance serviceInstanceAAI = new ServiceInstance();
738 serviceInstanceAAI.setServiceInstanceId("aaisi123");
739 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
740 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
741 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
742 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
743 pnf.setPnfId("pnfId123");
745 serviceInstanceMSO.getPnfs().add(pnf);
747 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
748 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
749 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
750 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
751 workflowAction.selectExecutionList(execution);
752 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
753 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
757 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
758 String gAction = "unassignInstance";
759 String resource = "Service";
760 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
761 initExecution(gAction, bpmnRequest, false);
762 execution.setVariable("requestUri", "v6/serviceInstances/123");
764 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
765 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
766 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
767 northBoundRequest.setOrchestrationFlowList(orchFlows);
769 ServiceInstance serviceInstanceAAI = new ServiceInstance();
770 serviceInstanceAAI.setServiceInstanceId("aaisi123");
771 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
772 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
773 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
774 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
775 vnf.setVnfId("vnfId123");
777 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
778 vnf.getVfModules().add(vfModule);
779 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
780 vnf.getVfModules().add(vfModule2);
782 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
783 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
784 volumeGroup.setVolumeGroupId("vg123");
785 vnf.getVolumeGroups().add(volumeGroup);
787 serviceInstanceMSO.getVnfs().add(vnf);
789 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
790 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
791 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
792 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
793 workflowAction.selectExecutionList(execution);
794 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
795 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
796 "UnassignVnfBB", "UnassignServiceInstanceBB");
800 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
801 String gAction = "deleteInstance";
802 String resource = "Service";
803 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
804 initExecution(gAction, bpmnRequest, false);
805 execution.setVariable("requestUri", "v6/serviceInstances/123");
807 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
808 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
809 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
810 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
811 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
812 northBoundRequest.setOrchestrationFlowList(orchFlows);
814 ServiceInstance serviceInstanceAAI = new ServiceInstance();
815 serviceInstanceAAI.setServiceInstanceId("aaisi123");
816 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
817 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
819 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
820 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
821 network.setNetworkId("123");
822 serviceInstanceMSO.getNetworks().add(network);
823 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
824 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
825 network2.setNetworkId("321");
826 serviceInstanceMSO.getNetworks().add(network2);
828 Collection collection = new Collection();
829 serviceInstanceMSO.setCollection(collection);
831 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
832 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
833 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
834 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
835 workflowAction.selectExecutionList(execution);
836 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
837 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
838 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
839 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
843 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
844 String gAction = "recreateInstance";
845 String resource = "Vnf";
846 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
847 initExecution(gAction, bpmnRequest, false);
848 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
849 execution.setVariable("serviceInstanceId", "123");
850 execution.setVariable("vnfId", "1234");
852 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
853 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
854 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
855 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
856 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
857 "AAIUnsetVnfInMaintBB");
858 northBoundRequest.setOrchestrationFlowList(orchFlows);
860 ServiceInstance serviceInstanceAAI = new ServiceInstance();
861 serviceInstanceAAI.setServiceInstanceId("123");
862 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
863 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
864 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
865 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
866 vnf.setVnfId("1234");
868 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
869 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
870 vfModule.setVfModuleId("vfModule1");
871 vnf.getVfModules().add(vfModule);
872 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
873 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
874 vfModule2.setVfModuleId("vfModule2");
875 vnf.getVfModules().add(vfModule2);
877 serviceInstanceMSO.getVnfs().add(vnf);
879 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
880 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
881 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
882 false, "cloud-owner")).thenReturn(northBoundRequest);
883 workflowAction.selectExecutionList(execution);
884 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
885 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
886 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
887 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
888 "AAIUnsetVnfInMaintBB");
892 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
893 String gAction = "replaceInstance";
894 String resource = "Vnf";
895 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
896 initExecution(gAction, bpmnRequest, false);
897 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
898 execution.setVariable("serviceInstanceId", "123");
899 execution.setVariable("vnfId", "1234");
901 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
902 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
903 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
904 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
905 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
906 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
907 "AAIUnsetVnfInMaintBB");
908 northBoundRequest.setOrchestrationFlowList(orchFlows);
910 ServiceInstance serviceInstanceAAI = new ServiceInstance();
911 serviceInstanceAAI.setServiceInstanceId("123");
912 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
913 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
914 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
915 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
916 vnf.setVnfId("1234");
917 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
918 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
919 vfModule.setVfModuleId("vfModule1");
920 vnf.getVfModules().add(vfModule);
921 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
922 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
923 vfModule2.setVfModuleId("vfModule2");
924 vnf.getVfModules().add(vfModule2);
925 serviceInstanceMSO.getVnfs().add(vnf);
926 VfModule vfModuleAAI = new VfModule();
927 vfModuleAAI.setVfModuleId("vfModule2");
928 RelationshipList relationshipList = new RelationshipList();
929 Relationship relationship = new Relationship();
930 relationshipList.getRelationship().add(relationship);
931 vfModuleAAI.setRelationshipList(relationshipList);
932 Relationships relationships = new Relationships("abc");
933 Configuration config = new Configuration();
934 config.setConfigurationId("configId");
935 Optional<Configuration> configOp = Optional.of(config);
936 Optional<Relationships> relationshipsOp = Optional.of(relationships);
938 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
939 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
940 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
941 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
942 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
943 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
944 false, "cloud-owner")).thenReturn(northBoundRequest);
945 workflowAction.selectExecutionList(execution);
946 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
947 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
948 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
949 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
950 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
951 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
952 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
953 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
954 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
960 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
961 String gAction = "createInstance";
962 String resource = "NetworkCollection";
963 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
964 initExecution(gAction, bpmnRequest, false);
965 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
967 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
968 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
969 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
970 northBoundRequest.setOrchestrationFlowList(orchFlows);
972 Service service = new Service();
973 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
974 CollectionResource collectionResource = new CollectionResource();
975 collectionResource.setToscaNodeType("Data NetworkCollection Data");
976 collectionResourceCustomization.setCollectionResource(collectionResource);
977 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
979 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
980 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
981 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
982 workflowAction.selectExecutionList(execution);
983 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
984 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
985 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
986 "ActivateNetworkCollectionBB");
991 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
992 String gAction = "deleteInstance";
993 String resource = "NetworkCollection";
994 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
995 initExecution(gAction, bpmnRequest, false);
996 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
998 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
999 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
1000 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
1001 northBoundRequest.setOrchestrationFlowList(orchFlows);
1003 Service service = new Service();
1004 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1005 CollectionResource collectionResource = new CollectionResource();
1006 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1007 collectionResourceCustomization.setCollectionResource(collectionResource);
1008 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1010 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1011 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1012 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1013 workflowAction.selectExecutionList(execution);
1014 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1015 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1016 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1017 "DeleteNetworkCollectionBB");
1021 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1022 String gAction = "createInstance";
1023 String resource = "VfModule";
1024 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1025 initExecution(gAction, bpmnRequest, true);
1026 execution.setVariable("requestUri",
1027 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1029 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1030 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1031 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1032 northBoundRequest.setOrchestrationFlowList(orchFlows);
1034 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1035 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1036 workflowAction.selectExecutionList(execution);
1037 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1038 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1042 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1043 String gAction = "createInstance";
1044 String resource = "VfModule";
1045 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1046 initExecution(gAction, bpmnRequest, true);
1047 execution.setVariable("requestUri",
1048 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1050 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1051 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1052 "AddFabricConfigurationBB");
1053 northBoundRequest.setOrchestrationFlowList(orchFlows);
1055 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1056 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1057 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1058 new CvnfcConfigurationCustomization();
1059 ConfigurationResource configurationResource = new ConfigurationResource();
1060 configurationResource.setToscaNodeType("FabricConfiguration");
1061 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1062 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1063 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1064 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1065 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1066 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1067 cvnfcCustomization.setDescription("description");
1068 cvnfcCustomizations.add(cvnfcCustomization);
1070 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1071 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1072 new CvnfcConfigurationCustomization();
1073 ConfigurationResource configurationResource2 = new ConfigurationResource();
1074 configurationResource2.setToscaNodeType("FabricConfiguration");
1075 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1076 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1077 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1078 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1079 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1080 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1081 cvnfcCustomization2.setDescription("description2");
1082 cvnfcCustomizations.add(cvnfcCustomization2);
1084 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1085 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1087 workflowAction.selectExecutionList(execution);
1088 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1089 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1095 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1096 String gAction = "replaceInstance";
1097 String resource = "VfModule";
1098 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1099 initExecution(gAction, bpmnRequest, true);
1100 execution.setVariable("requestUri",
1101 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1103 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1104 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1105 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1106 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1107 workflowAction.selectExecutionList(execution);
1108 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1110 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1111 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1112 "ChangeModelServiceInstanceBB");
1116 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1117 String gAction = "replaceInstanceRetainAssignments";
1118 String resource = "VfModule";
1119 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1120 initExecution(gAction, bpmnRequest, true);
1121 execution.setVariable("requestUri",
1122 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1124 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1125 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1126 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1127 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1128 workflowAction.selectExecutionList(execution);
1129 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1131 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1132 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1136 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1137 String gAction = "replaceInstance";
1138 String resource = "VfModule";
1139 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1140 initExecution(gAction, bpmnRequest, true);
1141 execution.setVariable("requestUri",
1142 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1143 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1144 execution.setVariable("vfModuleId", "1234");
1146 VolumeGroup volumeGroup = new VolumeGroup();
1147 volumeGroup.setVolumeGroupId("volumeGroupId");
1148 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1149 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1150 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1151 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1152 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1153 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1154 workflowAction.selectExecutionList(execution);
1155 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1157 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1158 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1159 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1163 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1165 String gAction = "replaceInstanceRetainAssignments";
1166 String resource = "VfModule";
1167 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1168 initExecution(gAction, bpmnRequest, true);
1169 execution.setVariable("requestUri",
1170 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1171 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1172 execution.setVariable("vfModuleId", "1234");
1174 VolumeGroup volumeGroup = new VolumeGroup();
1175 volumeGroup.setVolumeGroupId("volumeGroupId");
1176 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1177 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1179 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1180 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1181 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1182 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1183 workflowAction.selectExecutionList(execution);
1184 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1186 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1187 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1188 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1192 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1193 String gAction = "replaceInstance";
1194 String resource = "VfModule";
1195 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1196 initExecution(gAction, bpmnRequest, true);
1197 execution.setVariable("requestUri",
1198 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1199 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1200 execution.setVariable("vfModuleId", "1234");
1202 VolumeGroup volumeGroup = new VolumeGroup();
1203 volumeGroup.setVolumeGroupId("volumeGroupId");
1204 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1205 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1207 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1208 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1209 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1210 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1211 vfModuleCustomization.setVfModule(vfModule);
1212 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1213 .thenReturn(vfModuleCustomization);
1215 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1216 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1217 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1218 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1219 workflowAction.selectExecutionList(execution);
1220 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1222 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1223 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1224 "ChangeModelServiceInstanceBB");
1228 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1229 String gAction = "replaceInstance";
1230 String resource = "VfModule";
1231 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1232 initExecution(gAction, bpmnRequest, true);
1233 execution.setVariable("requestUri",
1234 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1235 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1236 execution.setVariable("vfModuleId", "1234");
1238 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1239 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1240 vnf.setModelCustomizationId("modelCustomizationId");
1241 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1243 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1244 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1245 vfModuleFromAAI.setVfModuleId("1234");
1246 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1248 VolumeGroup volumeGroup = new VolumeGroup();
1249 volumeGroup.setVolumeGroupId("volumeGroupId");
1250 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1251 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1253 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1254 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1255 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1256 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1257 vfModuleCustomization.setVfModule(vfModule);
1258 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1259 .thenReturn(vfModuleCustomization);
1260 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1261 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1262 vnfc.setModelInvariantId("modelInvariantId");
1263 vnfc.setVnfcName("testVnfcName");
1265 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1267 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1268 configuration.setConfigurationId("configurationId");
1269 configuration.setModelCustomizationId("modelCustimizationId");
1270 configuration.setConfigurationName("testConfigurationName");
1271 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1273 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1274 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1275 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1276 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1277 SPY_workflowAction.selectExecutionList(execution);
1278 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1280 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1281 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1282 "ChangeModelServiceInstanceBB");
1286 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1287 String gAction = "replaceInstanceRetainAssignments";
1288 String resource = "VfModule";
1289 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1290 initExecution(gAction, bpmnRequest, true);
1291 execution.setVariable("requestUri",
1292 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1293 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1294 execution.setVariable("vfModuleId", "1234");
1296 VolumeGroup volumeGroup = new VolumeGroup();
1297 volumeGroup.setVolumeGroupId("volumeGroupId");
1298 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1299 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1301 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1302 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1303 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1304 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1305 vfModuleCustomization.setVfModule(vfModule);
1306 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1307 .thenReturn(vfModuleCustomization);
1309 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1310 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1311 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1312 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1313 workflowAction.selectExecutionList(execution);
1314 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1316 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1317 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1321 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1322 String gAction = "replaceInstance";
1323 String resource = "VfModule";
1324 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1325 initExecution(gAction, bpmnRequest, true);
1326 execution.setVariable("requestUri",
1327 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1328 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1329 execution.setVariable("vfModuleId", "1234");
1331 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1332 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1333 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1334 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1335 vfModuleCustomization.setVfModule(vfModule);
1336 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1337 .thenReturn(vfModuleCustomization);
1339 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1340 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1341 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1342 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1343 workflowAction.selectExecutionList(execution);
1344 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1346 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1347 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1348 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1352 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1354 String gAction = "replaceInstanceRetainAssignments";
1355 String resource = "VfModule";
1356 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1357 initExecution(gAction, bpmnRequest, true);
1358 execution.setVariable("requestUri",
1359 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1360 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1361 execution.setVariable("vfModuleId", "1234");
1363 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1364 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1365 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1366 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1367 vfModuleCustomization.setVfModule(vfModule);
1368 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1369 .thenReturn(vfModuleCustomization);
1371 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1372 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1373 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1374 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1375 workflowAction.selectExecutionList(execution);
1376 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1378 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1379 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1380 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1384 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1385 String gAction = "replaceInstance";
1386 String resource = "VfModule";
1387 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1388 initExecution(gAction, bpmnRequest, true);
1389 execution.setVariable("requestUri",
1390 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1391 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1392 execution.setVariable("vfModuleId", "1234");
1394 VolumeGroup volumeGroup = new VolumeGroup();
1395 volumeGroup.setVolumeGroupId("volumeGroupId");
1396 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1397 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1399 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1400 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1401 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1402 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1403 vfModuleCustomization.setVfModule(vfModule);
1404 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1405 .thenReturn(vfModuleCustomization);
1407 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1408 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1409 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1410 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1411 workflowAction.selectExecutionList(execution);
1412 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1414 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1415 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1416 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1417 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1421 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1422 String gAction = "replaceInstanceRetainAssignments";
1423 String resource = "VfModule";
1424 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1425 initExecution(gAction, bpmnRequest, true);
1426 execution.setVariable("requestUri",
1427 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1428 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1429 execution.setVariable("vfModuleId", "1234");
1431 VolumeGroup volumeGroup = new VolumeGroup();
1432 volumeGroup.setVolumeGroupId("volumeGroupId");
1433 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1434 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1436 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1437 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1438 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1439 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1440 vfModuleCustomization.setVfModule(vfModule);
1441 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1442 .thenReturn(vfModuleCustomization);
1444 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1445 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1446 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1447 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1448 workflowAction.selectExecutionList(execution);
1449 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1451 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1452 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1453 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1454 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1458 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1459 String gAction = "deleteInstance";
1460 String resource = "VfModule";
1461 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1462 initExecution(gAction, bpmnRequest, true);
1463 execution.setVariable("requestUri",
1464 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1466 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1467 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1468 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1469 northBoundRequest.setOrchestrationFlowList(orchFlows);
1471 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1472 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1474 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1475 vnf.setVnfId("vnf0");
1476 vnf.setModelCustomizationId("modelCustomizationId");
1477 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1479 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1480 vfModule.setModelCustomizationId("modelCustomizationId");
1481 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1483 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1484 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1485 vnfc.setModelInvariantId("modelInvariantId");
1486 vnfc.setVnfcName("testVnfcName");
1488 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1491 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1492 configuration.setConfigurationId("configurationId");
1493 configuration.setModelCustomizationId("modelCustimizationId");
1494 configuration.setConfigurationName("testConfigurationName");
1495 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1498 SPY_workflowAction.selectExecutionList(execution);
1499 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1500 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1501 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1505 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1506 String gAction = "createInstance";
1507 String resource = "VfModule";
1508 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1509 initExecution(gAction, bpmnRequest, true);
1510 execution.setVariable("requestUri",
1511 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1513 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1514 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1515 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1516 northBoundRequest.setOrchestrationFlowList(orchFlows);
1518 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1519 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1520 workflowAction.selectExecutionList(execution);
1521 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1522 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1526 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1527 String gAction = "deleteInstance";
1528 ObjectMapper mapper = new ObjectMapper();
1529 WorkflowType resourceType = WorkflowType.VFMODULE;
1530 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1531 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1532 execution.setVariable("requestAction", gAction);
1533 execution.setVariable("bpmnRequest", bpmnRequest);
1534 execution.setVariable("vnfId", "1234");
1535 execution.setVariable("vfModuleId", "vfModuleId1234");
1536 execution.setVariable("requestUri",
1537 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1538 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1539 RequestDetails requestDetails = sIRequest.getRequestDetails();
1540 String requestAction = "deleteInstance";
1541 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1542 boolean aLaCarte = true;
1543 String apiVersion = "7";
1544 String vnfType = "vnfType";
1545 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1546 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1547 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1548 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1550 thrown.expect(AAIEntityNotFoundException.class);
1551 thrown.expectMessage(containsString(
1552 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1554 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1555 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1557 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1558 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1559 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1560 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1562 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1563 vnf.setVnfId("vnf0");
1564 vnf.setModelCustomizationId("modelCustomizationId");
1565 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1567 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1568 vfModule.setModelCustomizationId("modelCustomizationId");
1569 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1571 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1575 public void getConfigBuildingBlocksTest() throws Exception {
1576 String gAction = "deleteInstance";
1577 ObjectMapper mapper = new ObjectMapper();
1578 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1580 WorkflowType resourceType = WorkflowType.VFMODULE;
1581 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1582 execution.setVariable("requestAction", gAction);
1583 String bpmnRequest =
1584 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1585 execution.setVariable("bpmnRequest", bpmnRequest);
1586 execution.setVariable("vnfId", "1234");
1587 execution.setVariable("vfModuleId", "vfModuleId1234");
1588 execution.setVariable("requestUri",
1589 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1590 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1591 RequestDetails requestDetails = sIRequest.getRequestDetails();
1592 String requestAction = "deleteInstance";
1593 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1594 boolean aLaCarte = true;
1595 String apiVersion = "7";
1596 String vnfType = "vnfType";
1597 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1598 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1599 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1600 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1602 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1603 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1605 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1606 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1607 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1608 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1610 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1611 vnf.setVnfId("vnf0");
1612 vnf.setModelCustomizationId("modelCustomizationId");
1613 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1615 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1616 vfModule.setModelCustomizationId("modelCustomizationId");
1618 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1619 config1.setConfigurationId("config1");
1620 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1621 config2.setConfigurationId("config2");
1623 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1624 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1625 vnfc1.setVnfcName("zauk53avetd02svm001");
1626 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1627 vnfc2.setVnfcName("zauk53avetd02tvm001");
1631 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1632 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1633 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1634 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1635 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1636 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1637 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1639 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1641 assertFalse(results.isEmpty());
1642 assertEquals(2, results.size());
1643 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1644 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1645 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1646 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1650 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1651 String gAction = "deleteInstance";
1652 ObjectMapper mapper = new ObjectMapper();
1653 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1655 WorkflowType resourceType = WorkflowType.VFMODULE;
1656 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1657 execution.setVariable("requestAction", gAction);
1658 String bpmnRequest =
1659 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1660 execution.setVariable("bpmnRequest", bpmnRequest);
1661 execution.setVariable("vnfId", "1234");
1662 execution.setVariable("vfModuleId", "vfModuleId1234");
1663 execution.setVariable("requestUri",
1664 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1665 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1666 RequestDetails requestDetails = sIRequest.getRequestDetails();
1667 String requestAction = "deleteInstance";
1668 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1669 boolean aLaCarte = true;
1670 String apiVersion = "7";
1671 String vnfType = "vnfType";
1672 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1673 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1674 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1675 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1677 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1678 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1680 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1681 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1682 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1683 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1685 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1686 vnf.setVnfId("vnf0");
1687 vnf.setModelCustomizationId("modelCustomizationId");
1688 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1690 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1691 vfModule.setModelCustomizationId("modelCustomizationId");
1693 /* this is a test case where configuration for vnfc is null */
1694 org.onap.aai.domain.yang.Configuration config1 = null;
1695 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1696 config2.setConfigurationId("config2");
1698 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1699 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1700 vnfc1.setVnfcName("zauk53avetd02svm001");
1701 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1702 vnfc2.setVnfcName("zauk53avetd02tvm001");
1706 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1707 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1708 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1709 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1710 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1711 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1712 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1714 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1716 assertFalse(results.isEmpty());
1717 assertEquals(1, results.size());
1718 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1719 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1723 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1724 String gAction = "deleteInstance";
1725 String resource = "VfModule";
1726 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1727 initExecution(gAction, bpmnRequest, true);
1728 execution.setVariable("requestUri",
1729 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1731 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1732 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1733 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1734 northBoundRequest.setOrchestrationFlowList(orchFlows);
1736 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1737 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1739 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1740 vnf.setVnfId("vnf0");
1741 vnf.setModelCustomizationId("modelCustomizationId");
1742 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1744 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1745 vfModule.setModelCustomizationId("modelCustomizationId");
1746 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1748 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1750 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1753 SPY_workflowAction.selectExecutionList(execution);
1754 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1755 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1759 public void selectExecutionListMacroResumeTest() throws Exception {
1760 String gAction = "createInstance";
1761 String resource = "Service";
1762 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1763 initExecution(gAction, bpmnRequest, false);
1764 execution.setVariable("requestUri", "v6/serviceInstances/123");
1766 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1767 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1768 northBoundRequest.setOrchestrationFlowList(orchFlows);
1770 Service service = new Service();
1771 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1773 ServiceInstance si = new ServiceInstance();
1775 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1776 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1778 String flowsToExecuteString =
1779 "[{\"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\"}}]";
1780 ObjectMapper om = new ObjectMapper();
1781 List<ExecuteBuildingBlock> flowsToExecute = null;
1783 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1784 flowsToExecute = Arrays.asList(asArray);
1785 } catch (Exception e) {
1786 e.printStackTrace();
1789 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1791 workflowAction.selectExecutionList(execution);
1792 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1793 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1797 public void getRelatedResourcesInVfModuleTest() throws Exception {
1798 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1799 vnfc.setModelInvariantId("modelInvariantId");
1800 vnfc.setVnfcName("testVnfcName");
1802 String vfncPayload =
1803 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1804 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1806 String configurationPayload =
1807 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1808 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1809 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1810 configurationResultWrappers.add(configurationWrapper);
1812 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1813 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1815 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1817 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1818 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1819 assertEquals("testConfigurationId", configuration.getConfigurationId());
1823 * WorkflowActionBB Tests
1827 public void pluralTest() {
1828 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1829 "networks, Network", "invalidNames, invalidNames");
1830 items.forEach(item -> {
1831 String[] split = item.split(",");
1832 String type = split[0].trim();
1833 String expected = split[1].trim();
1834 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1839 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1840 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1842 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1843 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1844 executeFlows.add(ebb);
1846 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1847 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1848 executeFlows.add(ebb2);
1850 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1851 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1852 executeFlows.add(ebb3);
1854 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1855 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1856 executeFlows.add(ebb4);
1858 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1859 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1860 executeFlows.add(ebb5);
1862 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1863 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1864 executeFlows.add(ebb6);
1866 List<ExecuteBuildingBlock> sorted =
1867 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1868 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1869 "CreateNetworkBB", "ActivateNetworkBB");
1873 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1874 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1876 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1877 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1878 executeFlows.add(ebb);
1880 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1881 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1882 executeFlows.add(ebb2);
1884 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1885 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1886 executeFlows.add(ebb3);
1888 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1889 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1890 executeFlows.add(ebb4);
1892 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1893 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1894 executeFlows.add(ebb5);
1896 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1897 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1898 executeFlows.add(ebb6);
1900 List<ExecuteBuildingBlock> sorted =
1901 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1902 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1903 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1907 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1908 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1909 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1910 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1911 northBoundRequest.setOrchestrationFlowList(orchFlows);
1912 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1913 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1915 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1916 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1917 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1918 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1919 WorkflowType.VNF, false, "my-custom-cloud-owner");
1920 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1921 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1922 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1923 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1924 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1925 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1926 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1927 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1928 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1929 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1933 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1934 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1935 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1936 northBoundRequest.setOrchestrationFlowList(orchFlows);
1937 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1938 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1940 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1941 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1942 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1946 public void extractResourceIdAndTypeFromUriTest() {
1947 String uri = "/v6/serviceInstances/123";
1948 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1949 String uri3 = "/v6/serviceInstances";
1950 String uri4 = "/v6/serviceInstances/assign";
1951 String uri5 = "'/v6/serviceInstances/123/vnfs";
1952 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1953 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1954 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1955 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1956 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1957 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1958 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1959 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1960 assertEquals(expected1.getResourceId(), result.getResourceId());
1961 assertEquals(expected1.getResourceType(), result.getResourceType());
1962 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1963 assertEquals(expected2.getResourceId(), result.getResourceId());
1964 assertEquals(expected2.getResourceType(), result.getResourceType());
1965 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1966 assertEquals("Service", result.getResourceType().toString());
1967 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1968 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1969 assertEquals("Service", result.getResourceType().toString());
1970 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1971 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1972 assertEquals("Vnf", result.getResourceType().toString());
1973 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1974 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1975 assertEquals(expected3.getResourceId(), result.getResourceId());
1976 assertEquals(expected3.getResourceType(), result.getResourceType());
1977 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1978 assertEquals(expected4.getResourceId(), result.getResourceId());
1979 assertEquals(expected4.getResourceType(), result.getResourceType());
1980 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1981 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1982 assertEquals("VfModule", result.getResourceType().toString());
1987 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1988 this.expectedException.expect(IllegalArgumentException.class);
1989 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1990 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1994 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1995 this.expectedException.expect(IllegalArgumentException.class);
1996 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1997 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
2001 public void extractResourceIdAndTypeFromUriResumeTest() {
2002 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
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");
2004 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2008 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2009 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2010 "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");
2011 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2015 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2016 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2017 "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");
2018 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2022 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2023 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2024 "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");
2025 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2029 public void isUriResumeTest() {
2030 assertTrue(workflowAction.isUriResume(
2031 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2032 assertTrue(workflowAction.isUriResume(
2033 " 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"));
2035 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2039 public void isRequestMacroServiceResumeTest() {
2040 ServiceInstance si = new ServiceInstance();
2041 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2042 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2043 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2047 public void populateResourceIdsFromApiHandlerTest() {
2048 execution.setVariable("serviceInstanceId", "123");
2049 execution.setVariable("vnfId", "888");
2050 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2051 assertEquals("123", x.getServiceInstanceId());
2052 assertEquals("888", x.getVnfId());
2053 assertNull(x.getVolumeGroupId());
2057 public void handleRuntimeExceptionTest() {
2058 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2059 execution.setVariable("testProcessKey", "testProcessKeyValue");
2061 workflowAction.handleRuntimeException(execution);
2062 } catch (BpmnError wfe) {
2063 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2069 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2070 execution.setVariable("testProcessKey", "testProcessKeyValue");
2071 Service service = new Service();
2072 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2073 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2074 networkCust.setModelCustomizationUUID("123");
2075 networkCustomizations.add(networkCust);
2076 service.setNetworkCustomizations(networkCustomizations);
2077 NetworkCollectionResourceCustomization collectionResourceCustomization =
2078 new NetworkCollectionResourceCustomization();
2079 collectionResourceCustomization.setModelCustomizationUUID("123");
2080 CollectionResource collectionResource = new CollectionResource();
2081 collectionResource.setToscaNodeType("NetworkCollection");
2082 InstanceGroup instanceGroup = new InstanceGroup();
2083 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2084 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2085 new CollectionResourceInstanceGroupCustomization();
2086 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2087 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2088 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2089 collectionResource.setInstanceGroup(instanceGroup);
2090 collectionResourceCustomization.setCollectionResource(collectionResource);;
2091 service.setModelUUID("abc");
2092 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2093 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2094 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2095 doReturn(collectionResourceCustomization).when(catalogDbClient)
2096 .getNetworkCollectionResourceCustomizationByID("123");
2097 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2098 ObjectMapper mapper = new ObjectMapper();
2099 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2100 List<Resource> resourceCounter = new ArrayList<>();
2101 thrown.expect(BpmnError.class);
2102 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2103 serviceEBBLoader.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2109 public void findCatalogNetworkCollectionTest() {
2110 Service service = new Service();
2111 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2112 networkCustomization.setModelCustomizationUUID("123");
2113 service.getCollectionResourceCustomizations().add(networkCustomization);
2114 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2115 CollectionResourceCustomization customization =
2116 serviceEBBLoader.findCatalogNetworkCollection(execution, service);
2117 assertNotNull(customization);
2121 public void findCatalogNetworkCollectionEmptyTest() {
2122 Service service = new Service();
2123 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2124 networkCustomization.setModelCustomizationUUID("123");
2125 service.getCollectionResourceCustomizations().add(networkCustomization);
2126 CollectionResourceCustomization customization =
2127 serviceEBBLoader.findCatalogNetworkCollection(execution, service);
2128 assertNull(customization);
2132 public void findCatalogNetworkCollectionMoreThanOneTest() {
2133 Service service = new Service();
2134 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2135 networkCustomization1.setModelCustomizationUUID("123");
2136 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2137 networkCustomization2.setModelCustomizationUUID("321");
2138 service.getCollectionResourceCustomizations().add(networkCustomization1);
2139 service.getCollectionResourceCustomizations().add(networkCustomization2);
2140 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2141 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2142 serviceEBBLoader.findCatalogNetworkCollection(execution, service);
2143 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2144 execution.getVariable("WorkflowActionErrorMessage"));
2149 public void traverseAAIServiceTest() {
2150 List<Resource> resourceCounter = new ArrayList<>();
2151 String resourceId = "si0";
2152 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2154 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2155 serviceInstanceAAI.setServiceInstanceId(resourceId);
2157 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2165 Configuration config = new Configuration();
2166 config.setConfigurationId("testConfigurationId2");
2167 serviceInstance.getConfigurations().add(config);
2169 Relationship relationship1 = new Relationship();
2170 relationship1.setRelatedTo("vnfc");
2171 RelationshipList relationshipList1 = new RelationshipList();
2172 relationshipList1.getRelationship().add(relationship1);
2174 Relationship relationship2 = new Relationship();
2175 relationship2.setRelatedTo("vpn-binding");
2176 RelationshipList relationshipList2 = new RelationshipList();
2177 relationshipList2.getRelationship().add(relationship2);
2179 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2180 aaiConfiguration1.setConfigurationId("testConfigurationId");
2181 aaiConfiguration1.setRelationshipList(relationshipList1);
2183 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2184 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2185 aaiConfiguration2.setRelationshipList(relationshipList1);
2188 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2189 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2190 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2191 .getConfiguration("testConfigurationId");
2192 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2193 .getConfiguration("testConfigurationId2");
2194 serviceEBBLoader.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2195 assertEquals(8, resourceCounter.size());
2196 assertTrue(resourceCounter.get(2).isBaseVfModule());
2197 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2198 } catch (Exception e) {
2199 fail("Unexpected exception was thrown.");
2204 public void foundRelatedTest() {
2205 List<Resource> resourceList = new ArrayList<>();
2206 resourceList.add(new Resource(WorkflowType.PNF, "model customization id", false));
2207 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2208 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2209 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2211 assertEquals(serviceEBBLoader.foundRelated(resourceList), true);
2215 public void containsWorkflowTypeTest() {
2216 List<Resource> resourceList = new ArrayList<>();
2217 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2218 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2219 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2220 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2222 assertEquals(serviceEBBLoader.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2223 assertEquals(serviceEBBLoader.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2224 assertEquals(serviceEBBLoader.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2225 assertEquals(serviceEBBLoader.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2226 assertEquals(serviceEBBLoader.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2229 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2230 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2231 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2232 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2233 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2234 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2235 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2236 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2237 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2241 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2242 List<OrchestrationFlow> result = new ArrayList<>();
2243 int sequenceNumber = 1;
2244 for (String flowName : flowNames) {
2245 OrchestrationFlow orchFlow = new OrchestrationFlow();
2246 orchFlow.setFlowName(flowName);
2247 orchFlow.setSequenceNumber(sequenceNumber++);
2248 result.add(orchFlow);
2253 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2254 for (int i = 0; i < ebbs.size(); i++) {
2255 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2257 assertEquals(ebbs.size(), flowNames.length);
2260 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2261 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2262 execution.setVariable("requestAction", gAction);
2263 execution.setVariable("bpmnRequest", bpmnRequest);
2264 execution.setVariable("aLaCarte", isAlaCarte);
2265 execution.setVariable("apiVersion", "7");
2268 private String readBpmnRequestFromFile(String fileName) throws IOException {
2269 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2272 private List<Resource> prepareListWithResources() {
2273 List<Resource> resourceList = new ArrayList<>();
2274 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2275 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2276 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2277 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2278 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2279 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2280 return resourceList;