2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Modifications Copyright (c) 2020 Nokia
10 * ================================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 * ============LICENSE_END=========================================================
25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
27 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
28 import static org.hamcrest.CoreMatchers.containsString;
29 import static org.hamcrest.CoreMatchers.equalTo;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.junit.Assert.fail;
37 import static org.mockito.ArgumentMatchers.any;
38 import static org.mockito.ArgumentMatchers.anyList;
39 import static org.mockito.ArgumentMatchers.anyObject;
40 import static org.mockito.ArgumentMatchers.anyString;
41 import static org.mockito.ArgumentMatchers.eq;
42 import static org.mockito.ArgumentMatchers.isA;
43 import static org.mockito.Mockito.doReturn;
44 import static org.mockito.Mockito.doThrow;
45 import static org.mockito.Mockito.when;
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.ObjectMapper;
48 import java.io.IOException;
49 import java.net.MalformedURLException;
50 import java.nio.file.Files;
51 import java.nio.file.Paths;
52 import java.util.ArrayList;
53 import java.util.Arrays;
54 import java.util.List;
55 import java.util.Optional;
56 import java.util.UUID;
57 import org.camunda.bpm.engine.delegate.BpmnError;
58 import org.camunda.bpm.engine.delegate.DelegateExecution;
59 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
60 import org.javatuples.Pair;
61 import org.junit.Before;
62 import org.junit.Ignore;
63 import org.junit.Rule;
64 import org.junit.Test;
65 import org.junit.rules.ExpectedException;
66 import org.mockito.InjectMocks;
67 import org.mockito.Mock;
68 import org.mockito.Spy;
69 import org.onap.aai.domain.yang.Relationship;
70 import org.onap.aai.domain.yang.RelationshipList;
71 import org.onap.aai.domain.yang.ServiceInstance;
72 import org.onap.aai.domain.yang.VfModule;
73 import org.onap.aai.domain.yang.VolumeGroup;
74 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
75 import org.onap.aaiclient.client.aai.entities.Relationships;
76 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
77 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
78 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
79 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
80 import org.onap.so.bpmn.BaseTaskTest;
81 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
82 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
83 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
84 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
85 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
86 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
87 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
88 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
89 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
90 import org.onap.so.db.catalog.beans.CollectionResource;
91 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
92 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
93 import org.onap.so.db.catalog.beans.ConfigurationResource;
94 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
95 import org.onap.so.db.catalog.beans.CvnfcCustomization;
96 import org.onap.so.db.catalog.beans.HeatEnvironment;
97 import org.onap.so.db.catalog.beans.HeatTemplate;
98 import org.onap.so.db.catalog.beans.InstanceGroup;
99 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
100 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
101 import org.onap.so.db.catalog.beans.Service;
102 import org.onap.so.db.catalog.beans.VfModuleCustomization;
103 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
104 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
105 import org.onap.so.serviceinstancebeans.RequestDetails;
106 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
107 import org.springframework.core.env.Environment;
109 public class WorkflowActionTest extends BaseTaskTest {
111 private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
112 private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
113 private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
114 private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
115 private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
116 private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
117 "VfModuleReplaceRebuildVolumeGroups.json";
118 private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
119 private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
122 protected Environment environment;
124 protected UserParamsServiceTraversal userParamsServiceTraversal;
127 private AaiResourceIdValidator aaiResourceIdValidator;
129 protected WorkflowAction workflowAction;
131 private DelegateExecution execution;
135 protected WorkflowAction SPY_workflowAction;
138 protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
142 protected VnfEBBLoader vnfEBBLoaderSpy;
145 public ExpectedException thrown = ExpectedException.none();
147 private String RESOURCE_PATH = "src/test/resources/__files/";
149 private List<OrchestrationFlow> replaceVfModuleOrchFlows =
150 createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
151 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
152 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
153 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
154 private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
155 "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
156 "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
157 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
158 private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
159 "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
160 "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
161 "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
162 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
165 public void before() throws Exception {
166 execution = new DelegateExecutionFake();
167 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
168 servInstance.setServiceInstanceId("TEST");
169 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
170 workflowAction.setBbInputSetupUtils(bbSetupUtils);
171 workflowAction.setBbInputSetup(bbInputSetup);
179 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
180 String gAction = "createInstance";
181 String resource = "Network";
182 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
183 initExecution(gAction, bpmnRequest, true);
184 execution.setVariable("requestUri", "v6/networks/123");
186 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
187 List<OrchestrationFlow> orchFlows =
188 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
189 northBoundRequest.setOrchestrationFlowList(orchFlows);
191 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
192 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
194 workflowAction.selectExecutionList(execution);
195 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
196 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
200 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
201 String gAction = "deleteInstance";
202 String resource = "Network";
203 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
204 initExecution(gAction, bpmnRequest, true);
205 execution.setVariable("requestUri", "v6/networks/123");
207 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
208 List<OrchestrationFlow> orchFlows =
209 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
210 northBoundRequest.setOrchestrationFlowList(orchFlows);
212 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
213 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
215 workflowAction.selectExecutionList(execution);
216 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
217 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
221 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
222 String gAction = "createInstance";
223 String resource = "Service";
224 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
225 initExecution(gAction, bpmnRequest, true);
226 execution.setVariable("requestUri", "v6/serviceInstances/123");
229 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
230 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
231 northBoundRequest.setOrchestrationFlowList(orchFlows);
233 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
234 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
236 workflowAction.selectExecutionList(execution);
237 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
238 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
242 public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
243 String gAction = "createInstance";
244 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
245 initExecution(gAction, bpmnRequest, true);
246 execution.setVariable("requestUri", "v6/serviceInstances");
248 doThrow(new DuplicateNameException(
249 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
250 .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
251 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
253 SPY_workflowAction.selectExecutionList(execution);
254 assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
255 "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.");
257 // verify default values are present in failure case
258 assertEquals(true, execution.getVariable("isTopLevelFlow"));
259 assertEquals(false, execution.getVariable("sentSyncResponse"));
263 * SERVICE MACRO TESTS
266 public void selectExecutionListServiceMacroAssignTest() throws Exception {
267 String gAction = "assignInstance";
268 String resource = "Service";
269 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
270 initExecution(gAction, bpmnRequest, false);
271 execution.setVariable("requestUri", "v6/serviceInstances/123");
273 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
274 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
275 "AssignVolumeGroupBB", "AssignVfModuleBB");
276 northBoundRequest.setOrchestrationFlowList(orchFlows);
278 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
279 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
280 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
281 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
282 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
283 HeatTemplate volumeHeatTemplate = new HeatTemplate();
284 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
285 vfModuleCustomization.setVfModule(vfModule);
287 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
288 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
289 HeatEnvironment heatEnvironment = new HeatEnvironment();
290 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
291 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
292 HeatTemplate moduleHeatTemplate = new HeatTemplate();
293 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
294 vfModuleCustomization2.setVfModule(vfModule2);
296 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
297 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
299 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
300 .thenReturn(prepareListWithResources());
301 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
302 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
303 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
304 .thenReturn(vfModuleCustomization);
305 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
306 .thenReturn(vfModuleCustomization2);
307 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
308 .thenReturn(vfModuleCustomization3);
310 workflowAction.selectExecutionList(execution);
311 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
312 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
313 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
317 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
318 String gAction = "assignInstance";
319 String resource = "Service";
320 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
321 initExecution(gAction, bpmnRequest, false);
322 execution.setVariable("requestUri", "v6/serviceInstances/123");
324 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
325 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
326 "AssignVolumeGroupBB", "AssignVfModuleBB");
327 northBoundRequest.setOrchestrationFlowList(orchFlows);
329 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
330 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
331 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
332 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
333 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
334 HeatTemplate volumeHeatTemplate = new HeatTemplate();
335 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
336 vfModuleCustomization.setVfModule(vfModule);
338 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
339 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
340 HeatEnvironment heatEnvironment = new HeatEnvironment();
341 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
342 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
343 HeatTemplate moduleHeatTemplate = new HeatTemplate();
344 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
345 vfModuleCustomization2.setVfModule(vfModule2);
347 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
348 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
350 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
351 .thenReturn(prepareListWithResources());
352 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
353 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
354 false, "att-aic")).thenReturn(northBoundRequest);
355 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
356 .thenReturn(vfModuleCustomization);
357 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
358 .thenReturn(vfModuleCustomization2);
359 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
360 .thenReturn(vfModuleCustomization3);
361 workflowAction.selectExecutionList(execution);
362 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
363 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
364 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
368 public void selectExecutionListServiceMacroActivateTest() throws Exception {
369 String gAction = "activateInstance";
370 String resource = "Service";
371 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
372 initExecution(gAction, bpmnRequest, false);
373 execution.setVariable("requestUri", "v6/serviceInstances/si0");
375 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
376 List<OrchestrationFlow> orchFlows =
377 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
378 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
379 northBoundRequest.setOrchestrationFlowList(orchFlows);
381 ServiceInstance serviceInstanceAAI = new ServiceInstance();
382 serviceInstanceAAI.setServiceInstanceId("si0");
383 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
384 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
385 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
386 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
387 vnf.setVnfId("vnf0");
389 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
390 vnf.getVfModules().add(vfModule);
391 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
392 vnf.getVfModules().add(vfModule2);
394 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
395 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
396 volumeGroup.setVolumeGroupId("volumeGroup0");
397 vnf.getVolumeGroups().add(volumeGroup);
399 serviceInstanceMSO.getVnfs().add(vnf);
401 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
402 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
403 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
404 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
405 workflowAction.selectExecutionList(execution);
406 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
407 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
408 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
409 "ActivateServiceInstanceBB");
410 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
411 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
412 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
413 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
414 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
415 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
416 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
417 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
421 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
422 String gAction = "deactivateInstance";
423 String resource = "Service";
424 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
425 initExecution(gAction, bpmnRequest, false);
426 execution.setVariable("requestUri", "v6/serviceInstances/123");
428 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
429 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
430 northBoundRequest.setOrchestrationFlowList(orchFlows);
432 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
433 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
434 workflowAction.selectExecutionList(execution);
435 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
436 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
440 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
441 String gAction = "createInstance";
442 String resource = "Service";
443 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
444 initExecution(gAction, bpmnRequest, false);
445 execution.setVariable("requestUri", "v6/serviceInstances/123");
447 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
448 northBoundRequest.setIsToplevelflow(true);
449 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
450 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
451 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
452 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
453 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
454 northBoundRequest.setOrchestrationFlowList(orchFlows);
456 Service service = new Service();
457 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
458 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
459 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
460 workflowAction.selectExecutionList(execution);
461 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
462 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
466 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
467 String gAction = "createInstance";
468 String resource = "Service";
469 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
470 initExecution(gAction, bpmnRequest, false);
471 execution.setVariable("requestUri", "v6/serviceInstances/123");
473 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
474 northBoundRequest.setIsToplevelflow(true);
475 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
476 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
477 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
478 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
479 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
480 northBoundRequest.setOrchestrationFlowList(orchFlows);
482 Service service = new Service();
483 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
484 networkCustomization.setModelCustomizationUUID("1234");
485 service.getNetworkCustomizations().add(networkCustomization);
486 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
487 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
488 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
490 workflowAction.selectExecutionList(execution);
491 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
492 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
493 "ActivateNetworkBB", "ActivateServiceInstanceBB");
497 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
498 String gAction = "createInstance";
499 String resource = "Service";
500 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
501 initExecution(gAction, bpmnRequest, false);
502 execution.setVariable("requestUri", "v6/serviceInstances/123");
504 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
505 northBoundRequest.setIsToplevelflow(true);
506 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
507 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
508 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
509 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
510 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
511 northBoundRequest.setOrchestrationFlowList(orchFlows);
513 Service service = new Service();
514 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
515 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
516 networkCust.setModelCustomizationUUID("123");
517 networkCustomizations.add(networkCust);
518 service.setNetworkCustomizations(networkCustomizations);
519 NetworkCollectionResourceCustomization collectionResourceCustomization =
520 new NetworkCollectionResourceCustomization();
521 collectionResourceCustomization.setModelCustomizationUUID("123");
523 CollectionResource collectionResource = new CollectionResource();
524 collectionResource.setToscaNodeType("NetworkCollection");
525 InstanceGroup instanceGroup = new InstanceGroup();
526 instanceGroup.setToscaNodeType("NetworkCollectionResource");
527 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
528 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
529 new CollectionNetworkResourceCustomization();
530 collectionNetworkResourceCust.setModelCustomizationUUID("123");
531 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
532 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
533 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
534 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
535 new CollectionResourceInstanceGroupCustomization();
536 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
537 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
538 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
539 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
540 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
541 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
542 collectionResource.setInstanceGroup(instanceGroup);
543 collectionResourceCustomization.setCollectionResource(collectionResource);;
544 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
545 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
546 doReturn(collectionResourceCustomization).when(catalogDbClient)
547 .getNetworkCollectionResourceCustomizationByID("123");
548 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
549 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
550 workflowAction.selectExecutionList(execution);
551 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
552 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
553 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
554 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
555 "ActivateServiceInstanceBB");
556 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
557 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
558 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
559 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
560 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
562 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
565 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
566 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
567 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
568 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
569 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
571 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
574 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
575 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
576 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
577 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
578 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
580 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
586 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
587 String gAction = "createInstance";
588 String resource = "Service";
589 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
590 initExecution(gAction, bpmnRequest, false);
591 execution.setVariable("requestUri", "v6/serviceInstances/123");
593 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
594 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
595 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
596 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
597 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
598 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
599 northBoundRequest.setOrchestrationFlowList(orchFlows);
601 Service service = new Service();
602 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
604 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
605 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
606 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
607 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
608 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
609 HeatTemplate volumeHeatTemplate = new HeatTemplate();
610 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
611 vfModuleCustomization.setVfModule(vfModule);
613 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
614 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
615 HeatEnvironment heatEnvironment = new HeatEnvironment();
616 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
617 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
618 HeatTemplate moduleHeatTemplate = new HeatTemplate();
619 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
620 vfModuleCustomization2.setVfModule(vfModule2);
622 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
623 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
625 when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
626 .thenReturn(prepareListWithResources());
627 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
628 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
629 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
630 .thenReturn(vfModuleCustomization);
631 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
632 .thenReturn(vfModuleCustomization2);
633 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
634 .thenReturn(vfModuleCustomization3);
635 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
636 workflowAction.selectExecutionList(execution);
637 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
638 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
639 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
640 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
641 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
642 "ActivateServiceInstanceBB");
644 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
645 int randomUUIDLength = UUID.randomUUID().toString().length();
646 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
647 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
648 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
652 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
653 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
655 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
656 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
657 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
658 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
659 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
660 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
661 assertEquals(true, execution.getVariable("homing"));
665 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
666 String gAction = "deleteInstance";
667 String resource = "Service";
668 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
669 initExecution(gAction, bpmnRequest, false);
670 execution.setVariable("requestUri", "v6/serviceInstances/123");
672 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
673 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
674 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
675 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
676 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
677 "UnassignServiceInstanceBB");
678 northBoundRequest.setOrchestrationFlowList(orchFlows);
680 ServiceInstance serviceInstanceAAI = new ServiceInstance();
681 serviceInstanceAAI.setServiceInstanceId("aaisi123");
682 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
683 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
684 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
685 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
686 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
687 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
688 vnf.setVnfId("vnfId123");
689 pnf.setPnfId("pnfId123");
691 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
692 vnf.getVfModules().add(vfModule);
693 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
694 vnf.getVfModules().add(vfModule2);
696 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
697 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
698 volumeGroup.setVolumeGroupId("vg123");
699 vnf.getVolumeGroups().add(volumeGroup);
701 serviceInstanceMSO.getVnfs().add(vnf);
702 serviceInstanceMSO.getPnfs().add(pnf);
704 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
705 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
706 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
707 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
708 workflowAction.selectExecutionList(execution);
709 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
710 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
711 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
712 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
713 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
717 public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
718 String gAction = "deleteInstance";
719 String resource = "Service";
720 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
721 initExecution(gAction, bpmnRequest, false);
722 execution.setVariable("requestUri", "v6/serviceInstances/123");
724 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
725 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
726 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
727 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
728 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
729 "UnassignServiceInstanceBB");
730 northBoundRequest.setOrchestrationFlowList(orchFlows);
732 ServiceInstance serviceInstanceAAI = new ServiceInstance();
733 serviceInstanceAAI.setServiceInstanceId("aaisi123");
734 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
735 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
736 org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
737 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
738 pnf.setPnfId("pnfId123");
740 serviceInstanceMSO.getPnfs().add(pnf);
742 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
743 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
744 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
745 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
746 workflowAction.selectExecutionList(execution);
747 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
748 assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
752 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
753 String gAction = "unassignInstance";
754 String resource = "Service";
755 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
756 initExecution(gAction, bpmnRequest, false);
757 execution.setVariable("requestUri", "v6/serviceInstances/123");
759 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
760 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
761 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
762 northBoundRequest.setOrchestrationFlowList(orchFlows);
764 ServiceInstance serviceInstanceAAI = new ServiceInstance();
765 serviceInstanceAAI.setServiceInstanceId("aaisi123");
766 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
767 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
768 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
769 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
770 vnf.setVnfId("vnfId123");
772 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
773 vnf.getVfModules().add(vfModule);
774 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
775 vnf.getVfModules().add(vfModule2);
777 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
778 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
779 volumeGroup.setVolumeGroupId("vg123");
780 vnf.getVolumeGroups().add(volumeGroup);
782 serviceInstanceMSO.getVnfs().add(vnf);
784 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
785 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
786 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
787 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
788 workflowAction.selectExecutionList(execution);
789 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
790 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
791 "UnassignVnfBB", "UnassignServiceInstanceBB");
795 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
796 String gAction = "deleteInstance";
797 String resource = "Service";
798 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
799 initExecution(gAction, bpmnRequest, false);
800 execution.setVariable("requestUri", "v6/serviceInstances/123");
802 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
803 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
804 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
805 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
806 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
807 northBoundRequest.setOrchestrationFlowList(orchFlows);
809 ServiceInstance serviceInstanceAAI = new ServiceInstance();
810 serviceInstanceAAI.setServiceInstanceId("aaisi123");
811 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
812 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
814 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
815 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
816 network.setNetworkId("123");
817 serviceInstanceMSO.getNetworks().add(network);
818 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
819 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
820 network2.setNetworkId("321");
821 serviceInstanceMSO.getNetworks().add(network2);
823 Collection collection = new Collection();
824 serviceInstanceMSO.setCollection(collection);
826 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
827 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
828 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
829 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
830 workflowAction.selectExecutionList(execution);
831 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
832 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
833 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
834 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
838 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
839 String gAction = "recreateInstance";
840 String resource = "Vnf";
841 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
842 initExecution(gAction, bpmnRequest, false);
843 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
844 execution.setVariable("serviceInstanceId", "123");
845 execution.setVariable("vnfId", "1234");
847 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
848 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
849 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
850 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
851 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
852 "AAIUnsetVnfInMaintBB");
853 northBoundRequest.setOrchestrationFlowList(orchFlows);
855 ServiceInstance serviceInstanceAAI = new ServiceInstance();
856 serviceInstanceAAI.setServiceInstanceId("123");
857 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
858 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
859 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
860 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
861 vnf.setVnfId("1234");
863 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
864 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
865 vfModule.setVfModuleId("vfModule1");
866 vnf.getVfModules().add(vfModule);
867 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
868 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
869 vfModule2.setVfModuleId("vfModule2");
870 vnf.getVfModules().add(vfModule2);
872 serviceInstanceMSO.getVnfs().add(vnf);
874 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
875 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
876 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
877 false, "cloud-owner")).thenReturn(northBoundRequest);
878 workflowAction.selectExecutionList(execution);
879 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
880 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
881 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
882 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
883 "AAIUnsetVnfInMaintBB");
887 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
888 String gAction = "replaceInstance";
889 String resource = "Vnf";
890 String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
891 initExecution(gAction, bpmnRequest, false);
892 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
893 execution.setVariable("serviceInstanceId", "123");
894 execution.setVariable("vnfId", "1234");
896 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
897 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
898 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
899 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
900 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
901 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
902 "AAIUnsetVnfInMaintBB");
903 northBoundRequest.setOrchestrationFlowList(orchFlows);
905 ServiceInstance serviceInstanceAAI = new ServiceInstance();
906 serviceInstanceAAI.setServiceInstanceId("123");
907 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
908 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
909 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
910 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
911 vnf.setVnfId("1234");
912 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
913 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
914 vfModule.setVfModuleId("vfModule1");
915 vnf.getVfModules().add(vfModule);
916 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
917 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
918 vfModule2.setVfModuleId("vfModule2");
919 vnf.getVfModules().add(vfModule2);
920 serviceInstanceMSO.getVnfs().add(vnf);
921 VfModule vfModuleAAI = new VfModule();
922 vfModuleAAI.setVfModuleId("vfModule2");
923 RelationshipList relationshipList = new RelationshipList();
924 Relationship relationship = new Relationship();
925 relationshipList.getRelationship().add(relationship);
926 vfModuleAAI.setRelationshipList(relationshipList);
927 Relationships relationships = new Relationships("abc");
928 Configuration config = new Configuration();
929 config.setConfigurationId("configId");
930 Optional<Configuration> configOp = Optional.of(config);
931 Optional<Relationships> relationshipsOp = Optional.of(relationships);
933 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
934 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
935 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
936 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
937 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
938 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
939 false, "cloud-owner")).thenReturn(northBoundRequest);
940 workflowAction.selectExecutionList(execution);
941 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
942 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
943 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
944 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
945 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
946 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
947 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
948 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
949 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
955 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
956 String gAction = "createInstance";
957 String resource = "NetworkCollection";
958 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
959 initExecution(gAction, bpmnRequest, false);
960 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
962 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
963 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
964 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
965 northBoundRequest.setOrchestrationFlowList(orchFlows);
967 Service service = new Service();
968 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
969 CollectionResource collectionResource = new CollectionResource();
970 collectionResource.setToscaNodeType("Data NetworkCollection Data");
971 collectionResourceCustomization.setCollectionResource(collectionResource);
972 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
974 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
975 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
976 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
977 workflowAction.selectExecutionList(execution);
978 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
979 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
980 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
981 "ActivateNetworkCollectionBB");
986 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
987 String gAction = "deleteInstance";
988 String resource = "NetworkCollection";
989 String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
990 initExecution(gAction, bpmnRequest, false);
991 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
993 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
994 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
995 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
996 northBoundRequest.setOrchestrationFlowList(orchFlows);
998 Service service = new Service();
999 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1000 CollectionResource collectionResource = new CollectionResource();
1001 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1002 collectionResourceCustomization.setCollectionResource(collectionResource);
1003 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1005 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1006 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1007 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1008 workflowAction.selectExecutionList(execution);
1009 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1010 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1011 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1012 "DeleteNetworkCollectionBB");
1016 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1017 String gAction = "createInstance";
1018 String resource = "VfModule";
1019 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1020 initExecution(gAction, bpmnRequest, true);
1021 execution.setVariable("requestUri",
1022 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1024 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1025 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1026 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1027 northBoundRequest.setOrchestrationFlowList(orchFlows);
1029 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1030 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1031 workflowAction.selectExecutionList(execution);
1032 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1033 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1037 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1038 String gAction = "createInstance";
1039 String resource = "VfModule";
1040 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1041 initExecution(gAction, bpmnRequest, true);
1042 execution.setVariable("requestUri",
1043 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1045 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1046 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1047 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1048 northBoundRequest.setOrchestrationFlowList(orchFlows);
1050 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1051 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1052 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1053 new CvnfcConfigurationCustomization();
1054 ConfigurationResource configurationResource = new ConfigurationResource();
1055 configurationResource.setToscaNodeType("FabricConfiguration");
1056 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1057 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1058 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1059 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1060 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1061 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1062 cvnfcCustomization.setDescription("description");
1063 cvnfcCustomizations.add(cvnfcCustomization);
1065 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1066 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1067 new CvnfcConfigurationCustomization();
1068 ConfigurationResource configurationResource2 = new ConfigurationResource();
1069 configurationResource2.setToscaNodeType("FabricConfiguration");
1070 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1071 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1072 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1073 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1074 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1075 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1076 cvnfcCustomization2.setDescription("description2");
1077 cvnfcCustomizations.add(cvnfcCustomization2);
1079 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1080 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1081 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1082 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1083 workflowAction.selectExecutionList(execution);
1084 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1085 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1086 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1087 "ActivateFabricConfigurationBB");
1091 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
1092 String gAction = "replaceInstance";
1093 String resource = "VfModule";
1094 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1095 initExecution(gAction, bpmnRequest, true);
1096 execution.setVariable("requestUri",
1097 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1099 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1100 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1101 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1102 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1103 workflowAction.selectExecutionList(execution);
1104 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1106 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1107 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1108 "ChangeModelServiceInstanceBB");
1112 public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1113 String gAction = "replaceInstanceRetainAssignments";
1114 String resource = "VfModule";
1115 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1116 initExecution(gAction, bpmnRequest, true);
1117 execution.setVariable("requestUri",
1118 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1120 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1121 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1122 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1123 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1124 workflowAction.selectExecutionList(execution);
1125 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1127 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1128 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1132 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
1133 String gAction = "replaceInstance";
1134 String resource = "VfModule";
1135 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1136 initExecution(gAction, bpmnRequest, true);
1137 execution.setVariable("requestUri",
1138 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1139 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1140 execution.setVariable("vfModuleId", "1234");
1142 VolumeGroup volumeGroup = new VolumeGroup();
1143 volumeGroup.setVolumeGroupId("volumeGroupId");
1144 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1145 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1146 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1147 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1148 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1149 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1150 workflowAction.selectExecutionList(execution);
1151 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1153 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1154 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
1155 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1159 public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
1161 String gAction = "replaceInstanceRetainAssignments";
1162 String resource = "VfModule";
1163 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1164 initExecution(gAction, bpmnRequest, true);
1165 execution.setVariable("requestUri",
1166 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1167 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1168 execution.setVariable("vfModuleId", "1234");
1170 VolumeGroup volumeGroup = new VolumeGroup();
1171 volumeGroup.setVolumeGroupId("volumeGroupId");
1172 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1173 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1175 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1176 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1177 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1178 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1179 workflowAction.selectExecutionList(execution);
1180 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1182 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1183 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
1184 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1188 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
1189 String gAction = "replaceInstance";
1190 String resource = "VfModule";
1191 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1192 initExecution(gAction, bpmnRequest, true);
1193 execution.setVariable("requestUri",
1194 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1195 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1196 execution.setVariable("vfModuleId", "1234");
1198 VolumeGroup volumeGroup = new VolumeGroup();
1199 volumeGroup.setVolumeGroupId("volumeGroupId");
1200 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1201 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1203 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1204 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1205 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1206 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1207 vfModuleCustomization.setVfModule(vfModule);
1208 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1209 .thenReturn(vfModuleCustomization);
1211 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1212 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1213 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1214 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1215 workflowAction.selectExecutionList(execution);
1216 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1218 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1219 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1220 "ChangeModelServiceInstanceBB");
1224 public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
1225 String gAction = "replaceInstance";
1226 String resource = "VfModule";
1227 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1228 initExecution(gAction, bpmnRequest, true);
1229 execution.setVariable("requestUri",
1230 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1231 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1232 execution.setVariable("vfModuleId", "1234");
1234 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1235 vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1236 vnf.setModelCustomizationId("modelCustomizationId");
1237 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1239 org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
1240 vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
1241 vfModuleFromAAI.setVfModuleId("1234");
1242 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
1244 VolumeGroup volumeGroup = new VolumeGroup();
1245 volumeGroup.setVolumeGroupId("volumeGroupId");
1246 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1247 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1249 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1250 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1251 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1252 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1253 vfModuleCustomization.setVfModule(vfModule);
1254 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1255 .thenReturn(vfModuleCustomization);
1256 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1257 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1258 vnfc.setModelInvariantId("modelInvariantId");
1259 vnfc.setVnfcName("testVnfcName");
1261 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
1263 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1264 configuration.setConfigurationId("configurationId");
1265 configuration.setModelCustomizationId("modelCustimizationId");
1266 configuration.setConfigurationName("testConfigurationName");
1267 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
1269 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1270 northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
1271 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1272 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1273 SPY_workflowAction.selectExecutionList(execution);
1274 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1276 assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
1277 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
1278 "ChangeModelServiceInstanceBB");
1282 public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1283 String gAction = "replaceInstanceRetainAssignments";
1284 String resource = "VfModule";
1285 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1286 initExecution(gAction, bpmnRequest, true);
1287 execution.setVariable("requestUri",
1288 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1289 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1290 execution.setVariable("vfModuleId", "1234");
1292 VolumeGroup volumeGroup = new VolumeGroup();
1293 volumeGroup.setVolumeGroupId("volumeGroupId");
1294 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1295 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1297 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1298 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1299 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1300 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1301 vfModuleCustomization.setVfModule(vfModule);
1302 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1303 .thenReturn(vfModuleCustomization);
1305 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1306 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1307 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1308 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1309 workflowAction.selectExecutionList(execution);
1310 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1312 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
1313 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1317 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
1318 String gAction = "replaceInstance";
1319 String resource = "VfModule";
1320 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1321 initExecution(gAction, bpmnRequest, true);
1322 execution.setVariable("requestUri",
1323 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1324 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1325 execution.setVariable("vfModuleId", "1234");
1327 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1328 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1329 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1330 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1331 vfModuleCustomization.setVfModule(vfModule);
1332 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1333 .thenReturn(vfModuleCustomization);
1335 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1336 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1337 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1338 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1339 workflowAction.selectExecutionList(execution);
1340 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1342 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
1343 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1344 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1348 public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
1350 String gAction = "replaceInstanceRetainAssignments";
1351 String resource = "VfModule";
1352 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1353 initExecution(gAction, bpmnRequest, true);
1354 execution.setVariable("requestUri",
1355 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1356 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1357 execution.setVariable("vfModuleId", "1234");
1359 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1360 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1361 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1362 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1363 vfModuleCustomization.setVfModule(vfModule);
1364 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1365 .thenReturn(vfModuleCustomization);
1367 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1368 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1369 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1370 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1371 workflowAction.selectExecutionList(execution);
1372 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1374 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
1375 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
1376 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1380 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
1381 String gAction = "replaceInstance";
1382 String resource = "VfModule";
1383 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1384 initExecution(gAction, bpmnRequest, true);
1385 execution.setVariable("requestUri",
1386 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1387 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1388 execution.setVariable("vfModuleId", "1234");
1390 VolumeGroup volumeGroup = new VolumeGroup();
1391 volumeGroup.setVolumeGroupId("volumeGroupId");
1392 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1393 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1395 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1396 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1397 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1398 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1399 vfModuleCustomization.setVfModule(vfModule);
1400 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1401 .thenReturn(vfModuleCustomization);
1403 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1404 northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
1405 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1406 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1407 workflowAction.selectExecutionList(execution);
1408 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1410 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1411 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
1412 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
1413 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1417 public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
1418 String gAction = "replaceInstanceRetainAssignments";
1419 String resource = "VfModule";
1420 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
1421 initExecution(gAction, bpmnRequest, true);
1422 execution.setVariable("requestUri",
1423 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
1424 execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
1425 execution.setVariable("vfModuleId", "1234");
1427 VolumeGroup volumeGroup = new VolumeGroup();
1428 volumeGroup.setVolumeGroupId("volumeGroupId");
1429 doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
1430 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
1432 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
1433 vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
1434 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
1435 vfModule.setVolumeHeatTemplate(new HeatTemplate());
1436 vfModuleCustomization.setVfModule(vfModule);
1437 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
1438 .thenReturn(vfModuleCustomization);
1440 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1441 northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
1442 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1443 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1444 workflowAction.selectExecutionList(execution);
1445 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1447 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
1448 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
1449 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1450 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
1455 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1456 String gAction = "deleteInstance";
1457 String resource = "VfModule";
1458 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1459 initExecution(gAction, bpmnRequest, true);
1460 execution.setVariable("requestUri",
1461 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1463 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1464 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1465 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1466 northBoundRequest.setOrchestrationFlowList(orchFlows);
1468 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1469 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1471 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1472 vnf.setVnfId("vnf0");
1473 vnf.setModelCustomizationId("modelCustomizationId");
1474 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1476 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1477 vfModule.setModelCustomizationId("modelCustomizationId");
1478 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1480 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1481 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1482 vnfc.setModelInvariantId("modelInvariantId");
1483 vnfc.setVnfcName("testVnfcName");
1485 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1488 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1489 configuration.setConfigurationId("configurationId");
1490 configuration.setModelCustomizationId("modelCustimizationId");
1491 configuration.setConfigurationName("testConfigurationName");
1492 doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1495 SPY_workflowAction.selectExecutionList(execution);
1496 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1497 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1498 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1502 public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
1503 String gAction = "createInstance";
1504 String resource = "VfModule";
1505 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
1506 initExecution(gAction, bpmnRequest, true);
1507 execution.setVariable("requestUri",
1508 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1510 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1511 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1512 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1513 northBoundRequest.setOrchestrationFlowList(orchFlows);
1515 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1516 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1517 workflowAction.selectExecutionList(execution);
1518 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1519 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1523 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1524 String gAction = "deleteInstance";
1525 ObjectMapper mapper = new ObjectMapper();
1526 WorkflowType resourceType = WorkflowType.VFMODULE;
1527 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1528 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1529 execution.setVariable("requestAction", gAction);
1530 execution.setVariable("bpmnRequest", bpmnRequest);
1531 execution.setVariable("vnfId", "1234");
1532 execution.setVariable("vfModuleId", "vfModuleId1234");
1533 execution.setVariable("requestUri",
1534 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1535 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1536 RequestDetails requestDetails = sIRequest.getRequestDetails();
1537 String requestAction = "deleteInstance";
1538 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1539 boolean aLaCarte = true;
1540 String apiVersion = "7";
1541 String vnfType = "vnfType";
1542 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1543 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1544 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1545 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1547 thrown.expect(AAIEntityNotFoundException.class);
1548 thrown.expectMessage(containsString(
1549 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1551 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1552 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1554 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1555 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1556 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1557 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1559 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1560 vnf.setVnfId("vnf0");
1561 vnf.setModelCustomizationId("modelCustomizationId");
1562 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1564 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1565 vfModule.setModelCustomizationId("modelCustomizationId");
1566 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1568 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1572 public void getConfigBuildingBlocksTest() throws Exception {
1573 String gAction = "deleteInstance";
1574 ObjectMapper mapper = new ObjectMapper();
1575 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1577 WorkflowType resourceType = WorkflowType.VFMODULE;
1578 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1579 execution.setVariable("requestAction", gAction);
1580 String bpmnRequest =
1581 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1582 execution.setVariable("bpmnRequest", bpmnRequest);
1583 execution.setVariable("vnfId", "1234");
1584 execution.setVariable("vfModuleId", "vfModuleId1234");
1585 execution.setVariable("requestUri",
1586 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1587 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1588 RequestDetails requestDetails = sIRequest.getRequestDetails();
1589 String requestAction = "deleteInstance";
1590 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1591 boolean aLaCarte = true;
1592 String apiVersion = "7";
1593 String vnfType = "vnfType";
1594 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1595 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1596 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1597 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1599 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1600 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1602 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1603 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1604 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1605 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1607 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1608 vnf.setVnfId("vnf0");
1609 vnf.setModelCustomizationId("modelCustomizationId");
1610 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1612 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1613 vfModule.setModelCustomizationId("modelCustomizationId");
1615 org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
1616 config1.setConfigurationId("config1");
1617 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1618 config2.setConfigurationId("config2");
1620 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1621 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1622 vnfc1.setVnfcName("zauk53avetd02svm001");
1623 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1624 vnfc2.setVnfcName("zauk53avetd02tvm001");
1628 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1629 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1630 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1631 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1632 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1633 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1634 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1636 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1638 assertFalse(results.isEmpty());
1639 assertEquals(2, results.size());
1640 assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
1641 assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
1642 assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1643 assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
1647 public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
1648 String gAction = "deleteInstance";
1649 ObjectMapper mapper = new ObjectMapper();
1650 mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
1652 WorkflowType resourceType = WorkflowType.VFMODULE;
1653 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1654 execution.setVariable("requestAction", gAction);
1655 String bpmnRequest =
1656 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1657 execution.setVariable("bpmnRequest", bpmnRequest);
1658 execution.setVariable("vnfId", "1234");
1659 execution.setVariable("vfModuleId", "vfModuleId1234");
1660 execution.setVariable("requestUri",
1661 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1662 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1663 RequestDetails requestDetails = sIRequest.getRequestDetails();
1664 String requestAction = "deleteInstance";
1665 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1666 boolean aLaCarte = true;
1667 String apiVersion = "7";
1668 String vnfType = "vnfType";
1669 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1670 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1671 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1672 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1674 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1675 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1677 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1678 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1679 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1680 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1682 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1683 vnf.setVnfId("vnf0");
1684 vnf.setModelCustomizationId("modelCustomizationId");
1685 when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
1687 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1688 vfModule.setModelCustomizationId("modelCustomizationId");
1690 /* this is a test case where configuration for vnfc is null */
1691 org.onap.aai.domain.yang.Configuration config1 = null;
1692 org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
1693 config2.setConfigurationId("config2");
1695 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1696 org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
1697 vnfc1.setVnfcName("zauk53avetd02svm001");
1698 org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
1699 vnfc2.setVnfcName("zauk53avetd02tvm001");
1703 when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
1704 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
1705 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
1706 doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
1707 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1708 doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
1709 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
1711 List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1713 assertFalse(results.isEmpty());
1714 assertEquals(1, results.size());
1715 assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
1716 assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
1720 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1721 String gAction = "deleteInstance";
1722 String resource = "VfModule";
1723 String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
1724 initExecution(gAction, bpmnRequest, true);
1725 execution.setVariable("requestUri",
1726 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1728 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1729 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1730 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
1731 northBoundRequest.setOrchestrationFlowList(orchFlows);
1733 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1734 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1736 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1737 vnf.setVnfId("vnf0");
1738 vnf.setModelCustomizationId("modelCustomizationId");
1739 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1741 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1742 vfModule.setModelCustomizationId("modelCustomizationId");
1743 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1745 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1747 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1750 SPY_workflowAction.selectExecutionList(execution);
1751 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1752 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1756 public void selectExecutionListMacroResumeTest() throws Exception {
1757 String gAction = "createInstance";
1758 String resource = "Service";
1759 String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
1760 initExecution(gAction, bpmnRequest, false);
1761 execution.setVariable("requestUri", "v6/serviceInstances/123");
1763 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1764 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1765 northBoundRequest.setOrchestrationFlowList(orchFlows);
1767 Service service = new Service();
1768 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1770 ServiceInstance si = new ServiceInstance();
1772 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1773 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1775 String flowsToExecuteString =
1776 "[{\"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\"}}]";
1777 ObjectMapper om = new ObjectMapper();
1778 List<ExecuteBuildingBlock> flowsToExecute = null;
1780 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1781 flowsToExecute = Arrays.asList(asArray);
1782 } catch (Exception e) {
1783 e.printStackTrace();
1786 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1788 workflowAction.selectExecutionList(execution);
1789 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1790 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1794 public void getRelatedResourcesInVfModuleTest() throws Exception {
1795 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1796 vnfc.setModelInvariantId("modelInvariantId");
1797 vnfc.setVnfcName("testVnfcName");
1799 String vfncPayload =
1800 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1801 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1803 String configurationPayload =
1804 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1805 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1806 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1807 configurationResultWrappers.add(configurationWrapper);
1809 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
1810 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1812 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1814 org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
1815 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
1816 assertEquals("testConfigurationId", configuration.getConfigurationId());
1820 * WorkflowActionBB Tests
1824 public void pluralTest() {
1825 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1826 "networks, Network", "invalidNames, invalidNames");
1827 items.forEach(item -> {
1828 String[] split = item.split(",");
1829 String type = split[0].trim();
1830 String expected = split[1].trim();
1831 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1836 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1837 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1839 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
1840 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1841 executeFlows.add(ebb);
1843 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
1844 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1845 executeFlows.add(ebb2);
1847 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
1848 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1849 executeFlows.add(ebb3);
1851 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
1852 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1853 executeFlows.add(ebb4);
1855 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
1856 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1857 executeFlows.add(ebb5);
1859 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
1860 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1861 executeFlows.add(ebb6);
1863 List<ExecuteBuildingBlock> sorted =
1864 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1865 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1866 "CreateNetworkBB", "ActivateNetworkBB");
1870 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1871 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1873 BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
1874 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
1875 executeFlows.add(ebb);
1877 BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
1878 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
1879 executeFlows.add(ebb2);
1881 BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
1882 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
1883 executeFlows.add(ebb3);
1885 BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
1886 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
1887 executeFlows.add(ebb4);
1889 BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
1890 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
1891 executeFlows.add(ebb5);
1893 BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
1894 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
1895 executeFlows.add(ebb6);
1897 List<ExecuteBuildingBlock> sorted =
1898 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1899 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1900 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1904 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1905 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1906 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1907 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1908 northBoundRequest.setOrchestrationFlowList(orchFlows);
1909 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1910 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1912 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1913 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1914 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1915 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1916 WorkflowType.VNF, false, "my-custom-cloud-owner");
1917 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1918 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1919 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1920 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1921 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1922 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1923 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1924 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1925 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1926 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1930 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1931 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1932 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1933 northBoundRequest.setOrchestrationFlowList(orchFlows);
1934 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1935 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1937 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1938 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1939 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1943 public void extractResourceIdAndTypeFromUriTest() {
1944 String uri = "/v6/serviceInstances/123";
1945 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1946 String uri3 = "/v6/serviceInstances";
1947 String uri4 = "/v6/serviceInstances/assign";
1948 String uri5 = "'/v6/serviceInstances/123/vnfs";
1949 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1950 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1951 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1952 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1953 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1954 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1955 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1956 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1957 assertEquals(expected1.getResourceId(), result.getResourceId());
1958 assertEquals(expected1.getResourceType(), result.getResourceType());
1959 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1960 assertEquals(expected2.getResourceId(), result.getResourceId());
1961 assertEquals(expected2.getResourceType(), result.getResourceType());
1962 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1963 assertEquals("Service", result.getResourceType().toString());
1964 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1965 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1966 assertEquals("Service", result.getResourceType().toString());
1967 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1968 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1969 assertEquals("Vnf", result.getResourceType().toString());
1970 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1971 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1972 assertEquals(expected3.getResourceId(), result.getResourceId());
1973 assertEquals(expected3.getResourceType(), result.getResourceType());
1974 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1975 assertEquals(expected4.getResourceId(), result.getResourceId());
1976 assertEquals(expected4.getResourceType(), result.getResourceType());
1977 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1978 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1979 assertEquals("VfModule", result.getResourceType().toString());
1984 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1985 this.expectedException.expect(IllegalArgumentException.class);
1986 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1987 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1991 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1992 this.expectedException.expect(IllegalArgumentException.class);
1993 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1994 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1998 public void extractResourceIdAndTypeFromUriResumeTest() {
1999 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2000 "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");
2001 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2005 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
2006 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2007 "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");
2008 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2012 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
2013 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2014 "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");
2015 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2019 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
2020 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
2021 "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");
2022 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
2026 public void isUriResumeTest() {
2027 assertTrue(workflowAction.isUriResume(
2028 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
2029 assertTrue(workflowAction.isUriResume(
2030 " 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"));
2032 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
2036 public void isRequestMacroServiceResumeTest() {
2037 ServiceInstance si = new ServiceInstance();
2038 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
2039 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
2040 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
2044 public void populateResourceIdsFromApiHandlerTest() {
2045 execution.setVariable("serviceInstanceId", "123");
2046 execution.setVariable("vnfId", "888");
2047 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
2048 assertEquals("123", x.getServiceInstanceId());
2049 assertEquals("888", x.getVnfId());
2050 assertNull(x.getVolumeGroupId());
2054 public void handleRuntimeExceptionTest() {
2055 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2056 execution.setVariable("testProcessKey", "testProcessKeyValue");
2058 workflowAction.handleRuntimeException(execution);
2059 } catch (BpmnError wfe) {
2060 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2066 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2067 execution.setVariable("testProcessKey", "testProcessKeyValue");
2068 Service service = new Service();
2069 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2070 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2071 networkCust.setModelCustomizationUUID("123");
2072 networkCustomizations.add(networkCust);
2073 service.setNetworkCustomizations(networkCustomizations);
2074 NetworkCollectionResourceCustomization collectionResourceCustomization =
2075 new NetworkCollectionResourceCustomization();
2076 collectionResourceCustomization.setModelCustomizationUUID("123");
2077 CollectionResource collectionResource = new CollectionResource();
2078 collectionResource.setToscaNodeType("NetworkCollection");
2079 InstanceGroup instanceGroup = new InstanceGroup();
2080 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2081 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2082 new CollectionResourceInstanceGroupCustomization();
2083 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2084 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2085 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2086 collectionResource.setInstanceGroup(instanceGroup);
2087 collectionResourceCustomization.setCollectionResource(collectionResource);;
2088 service.setModelUUID("abc");
2089 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2090 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2091 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2092 doReturn(collectionResourceCustomization).when(catalogDbClient)
2093 .getNetworkCollectionResourceCustomizationByID("123");
2094 String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
2095 ObjectMapper mapper = new ObjectMapper();
2096 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2097 List<Resource> resourceCounter = new ArrayList<>();
2098 thrown.expect(BpmnError.class);
2099 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2100 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2106 public void findCatalogNetworkCollectionTest() {
2107 Service service = new Service();
2108 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2109 networkCustomization.setModelCustomizationUUID("123");
2110 service.getCollectionResourceCustomizations().add(networkCustomization);
2111 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2112 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2113 assertNotNull(customization);
2117 public void findCatalogNetworkCollectionEmptyTest() {
2118 Service service = new Service();
2119 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2120 networkCustomization.setModelCustomizationUUID("123");
2121 service.getCollectionResourceCustomizations().add(networkCustomization);
2122 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2123 assertNull(customization);
2127 public void findCatalogNetworkCollectionMoreThanOneTest() {
2128 Service service = new Service();
2129 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2130 networkCustomization1.setModelCustomizationUUID("123");
2131 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2132 networkCustomization2.setModelCustomizationUUID("321");
2133 service.getCollectionResourceCustomizations().add(networkCustomization1);
2134 service.getCollectionResourceCustomizations().add(networkCustomization2);
2135 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2136 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2137 workflowAction.findCatalogNetworkCollection(execution, service);
2138 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2139 execution.getVariable("WorkflowActionErrorMessage"));
2144 public void traverseAAIServiceTest() {
2145 List<Resource> resourceCounter = new ArrayList<>();
2146 String resourceId = "si0";
2147 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2149 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2150 serviceInstanceAAI.setServiceInstanceId(resourceId);
2152 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2160 Configuration config = new Configuration();
2161 config.setConfigurationId("testConfigurationId2");
2162 serviceInstance.getConfigurations().add(config);
2164 Relationship relationship1 = new Relationship();
2165 relationship1.setRelatedTo("vnfc");
2166 RelationshipList relationshipList1 = new RelationshipList();
2167 relationshipList1.getRelationship().add(relationship1);
2169 Relationship relationship2 = new Relationship();
2170 relationship2.setRelatedTo("vpn-binding");
2171 RelationshipList relationshipList2 = new RelationshipList();
2172 relationshipList2.getRelationship().add(relationship2);
2174 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2175 aaiConfiguration1.setConfigurationId("testConfigurationId");
2176 aaiConfiguration1.setRelationshipList(relationshipList1);
2178 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2179 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2180 aaiConfiguration2.setRelationshipList(relationshipList1);
2183 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2184 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2185 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2186 .getConfiguration("testConfigurationId");
2187 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2188 .getConfiguration("testConfigurationId2");
2189 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2190 assertEquals(8, resourceCounter.size());
2191 assertTrue(resourceCounter.get(2).isBaseVfModule());
2192 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2193 } catch (Exception e) {
2194 fail("Unexpected exception was thrown.");
2199 public void foundRelatedTest() {
2200 List<Resource> resourceList = new ArrayList<>();
2201 resourceList.add(new Resource(WorkflowType.PNF, "model customization id", false));
2202 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2203 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2204 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2206 assertEquals(workflowAction.foundRelated(resourceList), true);
2210 public void containsWorkflowTypeTest() {
2211 List<Resource> resourceList = new ArrayList<>();
2212 resourceList.add(new Resource(WorkflowType.PNF, "resource id", false));
2213 resourceList.add(new Resource(WorkflowType.VNF, "model customization id", false));
2214 resourceList.add(new Resource(WorkflowType.NETWORK, "model customization id", false));
2215 resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, "model customization id", false));
2217 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.PNF), true);
2218 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.VNF), true);
2219 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORK), true);
2220 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION), true);
2221 assertEquals(workflowAction.containsWorkflowType(resourceList, WorkflowType.CONFIGURATION), false);
2224 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2225 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2226 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2227 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2228 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2229 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2230 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2231 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2232 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2236 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2237 List<OrchestrationFlow> result = new ArrayList<>();
2238 int sequenceNumber = 1;
2239 for (String flowName : flowNames) {
2240 OrchestrationFlow orchFlow = new OrchestrationFlow();
2241 orchFlow.setFlowName(flowName);
2242 orchFlow.setSequenceNumber(sequenceNumber++);
2243 result.add(orchFlow);
2248 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2249 for (int i = 0; i < ebbs.size(); i++) {
2250 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
2254 private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
2255 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
2256 execution.setVariable("requestAction", gAction);
2257 execution.setVariable("bpmnRequest", bpmnRequest);
2258 execution.setVariable("aLaCarte", isAlaCarte);
2259 execution.setVariable("apiVersion", "7");
2262 private String readBpmnRequestFromFile(String fileName) throws IOException {
2263 return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
2266 private List<Resource> prepareListWithResources() {
2267 List<Resource> resourceList = new ArrayList<>();
2268 resourceList.add(new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2269 resourceList.add(new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false));
2270 resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false));
2271 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2272 resourceList.add(new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false));
2273 resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false));
2274 return resourceList;