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 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import static org.hamcrest.CoreMatchers.containsString;
26 import static org.hamcrest.CoreMatchers.equalTo;
27 import static org.junit.Assert.*;
28 import static org.mockito.ArgumentMatchers.anyObject;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.Matchers.isA;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.when;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34 import java.io.IOException;
35 import java.net.MalformedURLException;
36 import java.nio.file.Files;
37 import java.nio.file.Paths;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.HashSet;
41 import java.util.List;
42 import java.util.Optional;
44 import java.util.UUID;
45 import org.camunda.bpm.engine.delegate.BpmnError;
46 import org.camunda.bpm.engine.delegate.DelegateExecution;
47 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
48 import org.junit.Before;
49 import org.junit.Ignore;
50 import org.junit.Rule;
51 import org.junit.Test;
52 import org.junit.rules.ExpectedException;
53 import org.mockito.InjectMocks;
54 import org.mockito.Mock;
55 import org.mockito.Spy;
56 import org.onap.aai.domain.yang.GenericVnf;
57 import org.onap.aai.domain.yang.L3Network;
58 import org.onap.aai.domain.yang.Relationship;
59 import org.onap.aai.domain.yang.RelationshipList;
60 import org.onap.aai.domain.yang.ServiceInstance;
61 import org.onap.aai.domain.yang.VfModule;
62 import org.onap.aai.domain.yang.VfModules;
63 import org.onap.aai.domain.yang.Vnfc;
64 import org.onap.aai.domain.yang.VolumeGroup;
65 import org.onap.so.bpmn.BaseTaskTest;
66 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
67 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
68 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
69 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
70 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
71 import org.onap.so.client.aai.AAIObjectType;
72 import org.onap.so.client.aai.entities.AAIResultWrapper;
73 import org.onap.so.client.aai.entities.Relationships;
74 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
75 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
76 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
77 import org.onap.so.db.catalog.beans.CollectionResource;
78 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
79 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
80 import org.onap.so.db.catalog.beans.ConfigurationResource;
81 import org.onap.so.db.catalog.beans.CvnfcCustomization;
82 import org.onap.so.db.catalog.beans.HeatEnvironment;
83 import org.onap.so.db.catalog.beans.HeatTemplate;
84 import org.onap.so.db.catalog.beans.InstanceGroup;
85 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
86 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
87 import org.onap.so.db.catalog.beans.Service;
88 import org.onap.so.db.catalog.beans.VfModuleCustomization;
89 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
90 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
91 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
92 import org.onap.so.serviceinstancebeans.RequestDetails;
93 import org.onap.so.serviceinstancebeans.RequestParameters;
94 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
95 import org.onap.so.serviceinstancebeans.SubscriberInfo;
96 import org.springframework.core.env.Environment;
98 public class WorkflowActionTest extends BaseTaskTest {
102 protected Environment environment;
104 protected WorkflowAction workflowAction;
105 private DelegateExecution execution;
110 protected WorkflowAction SPY_workflowAction;
113 public ExpectedException thrown = ExpectedException.none();
115 private String RESOURCE_PATH = "src/test/resources/__files/";
118 public void before() throws Exception {
119 execution = new DelegateExecutionFake();
120 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
121 servInstance.setServiceInstanceId("TEST");
122 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
123 workflowAction.setBbInputSetupUtils(bbSetupUtils);
124 workflowAction.setBbInputSetup(bbInputSetup);
131 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
132 String gAction = "createInstance";
133 String resource = "Network";
134 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
135 execution.setVariable("requestAction", gAction);
137 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
138 execution.setVariable("bpmnRequest", bpmnRequest);
139 execution.setVariable("aLaCarte", true);
140 execution.setVariable("apiVersion", "7");
141 execution.setVariable("requestUri", "v6/networks/123");
143 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
144 List<OrchestrationFlow> orchFlows =
145 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
146 northBoundRequest.setOrchestrationFlowList(orchFlows);
148 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
149 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
150 workflowAction.selectExecutionList(execution);
151 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
152 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
156 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
157 String gAction = "deleteInstance";
158 String resource = "Network";
159 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
160 execution.setVariable("requestAction", gAction);
162 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
163 execution.setVariable("bpmnRequest", bpmnRequest);
164 execution.setVariable("aLaCarte", true);
165 execution.setVariable("apiVersion", "7");
166 execution.setVariable("requestUri", "v6/networks/123");
168 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
169 List<OrchestrationFlow> orchFlows =
170 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
171 northBoundRequest.setOrchestrationFlowList(orchFlows);
173 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
174 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
175 workflowAction.selectExecutionList(execution);
176 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
177 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
181 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
182 String gAction = "createInstance";
183 String resource = "Service";
184 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
185 execution.setVariable("requestAction", gAction);
187 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
188 execution.setVariable("bpmnRequest", bpmnRequest);
189 execution.setVariable("aLaCarte", true);
190 execution.setVariable("apiVersion", "7");
191 execution.setVariable("requestUri", "v6/serviceInstances/123");
194 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
195 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
196 northBoundRequest.setOrchestrationFlowList(orchFlows);
198 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
199 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
200 workflowAction.selectExecutionList(execution);
201 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
202 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
206 * SERVICE MACRO TESTS
209 public void selectExecutionListServiceMacroAssignTest() throws Exception {
210 String gAction = "assignInstance";
211 String resource = "Service";
212 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
213 execution.setVariable("requestAction", gAction);
215 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
216 execution.setVariable("bpmnRequest", bpmnRequest);
217 execution.setVariable("aLaCarte", false);
218 execution.setVariable("apiVersion", "7");
219 execution.setVariable("requestUri", "v6/serviceInstances/123");
222 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
223 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
224 "AssignVolumeGroupBB", "AssignVfModuleBB");
225 northBoundRequest.setOrchestrationFlowList(orchFlows);
227 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
228 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
229 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
230 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
231 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
232 HeatTemplate volumeHeatTemplate = new HeatTemplate();
233 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
234 vfModuleCustomization.setVfModule(vfModule);
236 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
237 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
238 HeatEnvironment heatEnvironment = new HeatEnvironment();
239 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
240 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
241 HeatTemplate moduleHeatTemplate = new HeatTemplate();
242 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
243 vfModuleCustomization2.setVfModule(vfModule2);
245 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
246 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
248 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
249 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
250 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
251 .thenReturn(vfModuleCustomization);
252 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
253 .thenReturn(vfModuleCustomization2);
254 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
255 .thenReturn(vfModuleCustomization3);
256 workflowAction.selectExecutionList(execution);
257 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
258 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
259 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
263 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
264 String gAction = "assignInstance";
265 String resource = "Service";
266 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
267 execution.setVariable("requestAction", gAction);
268 String bpmnRequest = new String(
269 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
270 execution.setVariable("bpmnRequest", bpmnRequest);
271 execution.setVariable("aLaCarte", false);
272 execution.setVariable("apiVersion", "7");
273 execution.setVariable("requestUri", "v6/serviceInstances/123");
276 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
277 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
278 "AssignVolumeGroupBB", "AssignVfModuleBB");
279 northBoundRequest.setOrchestrationFlowList(orchFlows);
281 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
282 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
283 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
284 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
285 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
286 HeatTemplate volumeHeatTemplate = new HeatTemplate();
287 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
288 vfModuleCustomization.setVfModule(vfModule);
290 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
291 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
292 HeatEnvironment heatEnvironment = new HeatEnvironment();
293 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
294 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
295 HeatTemplate moduleHeatTemplate = new HeatTemplate();
296 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
297 vfModuleCustomization2.setVfModule(vfModule2);
299 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
300 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
302 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
303 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
304 false, "att-aic")).thenReturn(northBoundRequest);
305 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
306 .thenReturn(vfModuleCustomization);
307 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
308 .thenReturn(vfModuleCustomization2);
309 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
310 .thenReturn(vfModuleCustomization3);
311 workflowAction.selectExecutionList(execution);
312 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
313 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
314 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
318 public void selectExecutionListServiceMacroActivateTest() throws Exception {
319 String gAction = "activateInstance";
320 String resource = "Service";
321 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
322 execution.setVariable("requestAction", gAction);
323 String bpmnRequest = new String(Files
324 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
325 execution.setVariable("bpmnRequest", bpmnRequest);
326 execution.setVariable("aLaCarte", false);
327 execution.setVariable("apiVersion", "7");
328 execution.setVariable("requestUri", "v6/serviceInstances/si0");
331 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
332 List<OrchestrationFlow> orchFlows =
333 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
334 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
335 northBoundRequest.setOrchestrationFlowList(orchFlows);
337 ServiceInstance serviceInstanceAAI = new ServiceInstance();
338 serviceInstanceAAI.setServiceInstanceId("si0");
339 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
340 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
341 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
342 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
343 vnf.setVnfId("vnf0");
345 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
346 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
347 vfModule.setVfModuleId("vfModule0");
348 vnf.getVfModules().add(vfModule);
349 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
350 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
351 vfModule2.setVfModuleId("vfModule1");
352 vnf.getVfModules().add(vfModule2);
354 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
355 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
356 volumeGroup.setVolumeGroupId("volumeGroup0");
357 vnf.getVolumeGroups().add(volumeGroup);
359 serviceInstanceMSO.getVnfs().add(vnf);
361 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
362 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
363 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
364 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
365 workflowAction.selectExecutionList(execution);
366 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
367 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
368 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
369 "ActivateServiceInstanceBB");
370 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
371 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
372 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
373 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
374 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
375 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
376 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
377 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
382 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
383 String gAction = "deactivateInstance";
384 String resource = "Service";
385 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
386 execution.setVariable("requestAction", gAction);
387 String bpmnRequest = new String(Files
388 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
389 execution.setVariable("bpmnRequest", bpmnRequest);
390 execution.setVariable("aLaCarte", false);
391 execution.setVariable("apiVersion", "7");
392 execution.setVariable("requestUri", "v6/serviceInstances/123");
395 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
396 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
397 northBoundRequest.setOrchestrationFlowList(orchFlows);
399 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
400 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
401 workflowAction.selectExecutionList(execution);
402 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
403 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
407 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
408 String gAction = "createInstance";
409 String resource = "Service";
410 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
411 execution.setVariable("requestAction", gAction);
412 String bpmnRequest = new String(Files
413 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
414 execution.setVariable("bpmnRequest", bpmnRequest);
415 execution.setVariable("aLaCarte", false);
416 execution.setVariable("apiVersion", "7");
417 execution.setVariable("requestUri", "v6/serviceInstances/123");
420 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
421 northBoundRequest.setIsToplevelflow(true);
422 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
423 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
424 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
425 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
426 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
427 northBoundRequest.setOrchestrationFlowList(orchFlows);
429 Service service = new Service();
430 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
431 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
432 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
433 workflowAction.selectExecutionList(execution);
434 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
435 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
439 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
440 String gAction = "createInstance";
441 String resource = "Service";
442 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
443 execution.setVariable("requestAction", gAction);
444 String bpmnRequest = new String(Files
445 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
446 execution.setVariable("bpmnRequest", bpmnRequest);
447 execution.setVariable("aLaCarte", false);
448 execution.setVariable("apiVersion", "7");
449 execution.setVariable("requestUri", "v6/serviceInstances/123");
452 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
453 northBoundRequest.setIsToplevelflow(true);
454 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
455 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
456 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
457 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
458 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
459 northBoundRequest.setOrchestrationFlowList(orchFlows);
461 Service service = new Service();
462 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
463 networkCustomization.setModelCustomizationUUID("1234");
464 service.getNetworkCustomizations().add(networkCustomization);
465 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
466 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
467 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
468 workflowAction.selectExecutionList(execution);
469 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
470 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
471 "ActivateNetworkBB", "ActivateServiceInstanceBB");
475 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
476 String gAction = "createInstance";
477 String resource = "Service";
478 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
479 execution.setVariable("requestAction", gAction);
480 String bpmnRequest = new String(Files
481 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
482 execution.setVariable("bpmnRequest", bpmnRequest);
483 execution.setVariable("aLaCarte", false);
484 execution.setVariable("apiVersion", "7");
485 execution.setVariable("requestUri", "v6/serviceInstances/123");
488 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
489 northBoundRequest.setIsToplevelflow(true);
490 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
491 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
492 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
493 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
494 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
495 northBoundRequest.setOrchestrationFlowList(orchFlows);
497 Service service = new Service();
498 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
499 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
500 networkCust.setModelCustomizationUUID("123");
501 networkCustomizations.add(networkCust);
502 service.setNetworkCustomizations(networkCustomizations);
503 NetworkCollectionResourceCustomization collectionResourceCustomization =
504 new NetworkCollectionResourceCustomization();
505 collectionResourceCustomization.setModelCustomizationUUID("123");
507 CollectionResource collectionResource = new CollectionResource();
508 collectionResource.setToscaNodeType("NetworkCollection");
509 InstanceGroup instanceGroup = new InstanceGroup();
510 instanceGroup.setToscaNodeType("NetworkCollectionResource");
511 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
512 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
513 new CollectionNetworkResourceCustomization();
514 collectionNetworkResourceCust.setModelCustomizationUUID("123");
515 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
516 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
517 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
518 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
519 new CollectionResourceInstanceGroupCustomization();
520 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
521 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
522 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
523 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
524 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
525 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
526 collectionResource.setInstanceGroup(instanceGroup);
527 collectionResourceCustomization.setCollectionResource(collectionResource);;
528 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
529 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
530 doReturn(collectionResourceCustomization).when(catalogDbClient)
531 .getNetworkCollectionResourceCustomizationByID("123");
532 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
533 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
534 workflowAction.selectExecutionList(execution);
535 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
536 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
537 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
538 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
539 "ActivateServiceInstanceBB");
540 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
541 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
542 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
543 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
544 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
546 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
549 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
550 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
551 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
552 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
553 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
555 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
558 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
559 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
560 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
562 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
564 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
570 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
571 String gAction = "createInstance";
572 String resource = "Service";
573 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
574 execution.setVariable("requestAction", gAction);
576 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
577 execution.setVariable("bpmnRequest", bpmnRequest);
578 execution.setVariable("aLaCarte", false);
579 execution.setVariable("apiVersion", "7");
580 execution.setVariable("requestUri", "v6/serviceInstances/123");
583 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
584 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
585 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
586 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
587 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
588 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
589 northBoundRequest.setOrchestrationFlowList(orchFlows);
591 Service service = new Service();
592 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
594 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
595 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
596 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
597 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
598 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
599 HeatTemplate volumeHeatTemplate = new HeatTemplate();
600 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
601 vfModuleCustomization.setVfModule(vfModule);
603 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
604 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
605 HeatEnvironment heatEnvironment = new HeatEnvironment();
606 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
607 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
608 HeatTemplate moduleHeatTemplate = new HeatTemplate();
609 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
610 vfModuleCustomization2.setVfModule(vfModule2);
612 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
613 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
615 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
616 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
617 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
618 .thenReturn(vfModuleCustomization);
619 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
620 .thenReturn(vfModuleCustomization2);
621 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
622 .thenReturn(vfModuleCustomization3);
623 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
624 workflowAction.selectExecutionList(execution);
625 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
626 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
627 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
628 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
629 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
630 "ActivateServiceInstanceBB");
631 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
632 int randomUUIDLength = UUID.randomUUID().toString().length();
633 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
634 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
635 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
636 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
637 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
638 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
639 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
640 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
641 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
642 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
647 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
648 assertEquals(true, execution.getVariable("homing"));
652 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
653 String gAction = "deleteInstance";
654 String resource = "Service";
655 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
656 execution.setVariable("requestAction", gAction);
657 String bpmnRequest = new String(Files
658 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
659 execution.setVariable("bpmnRequest", bpmnRequest);
660 execution.setVariable("aLaCarte", false);
661 execution.setVariable("apiVersion", "7");
662 execution.setVariable("requestUri", "v6/serviceInstances/123");
665 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
666 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
667 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
668 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
669 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
670 northBoundRequest.setOrchestrationFlowList(orchFlows);
672 ServiceInstance serviceInstanceAAI = new ServiceInstance();
673 serviceInstanceAAI.setServiceInstanceId("aaisi123");
674 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
675 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
676 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
677 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
678 vnf.setVnfId("vnfId123");
680 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
681 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
682 vfModule.setVfModuleId("vfModule1");
683 vnf.getVfModules().add(vfModule);
684 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
685 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
686 vfModule2.setVfModuleId("vfModule2");
687 vnf.getVfModules().add(vfModule2);
689 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
690 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
691 volumeGroup.setVolumeGroupId("vg123");
692 vnf.getVolumeGroups().add(volumeGroup);
694 serviceInstanceMSO.getVnfs().add(vnf);
696 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
697 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
698 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
699 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
700 workflowAction.selectExecutionList(execution);
701 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
702 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
703 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
704 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
705 "UnassignVnfBB", "UnassignServiceInstanceBB");
709 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
710 String gAction = "unassignInstance";
711 String resource = "Service";
712 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
713 execution.setVariable("requestAction", gAction);
714 String bpmnRequest = new String(Files
715 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
716 execution.setVariable("bpmnRequest", bpmnRequest);
717 execution.setVariable("aLaCarte", false);
718 execution.setVariable("apiVersion", "7");
719 execution.setVariable("requestUri", "v6/serviceInstances/123");
722 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
723 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
724 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
725 northBoundRequest.setOrchestrationFlowList(orchFlows);
727 ServiceInstance serviceInstanceAAI = new ServiceInstance();
728 serviceInstanceAAI.setServiceInstanceId("aaisi123");
729 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
730 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
731 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
732 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
733 vnf.setVnfId("vnfId123");
735 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
736 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
737 vfModule.setVfModuleId("vfModule1");
738 vnf.getVfModules().add(vfModule);
739 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
740 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
741 vfModule2.setVfModuleId("vfModule2");
742 vnf.getVfModules().add(vfModule2);
744 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
745 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
746 volumeGroup.setVolumeGroupId("vg123");
747 vnf.getVolumeGroups().add(volumeGroup);
749 serviceInstanceMSO.getVnfs().add(vnf);
751 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
752 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
753 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
754 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
755 workflowAction.selectExecutionList(execution);
756 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
757 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
758 "UnassignVnfBB", "UnassignServiceInstanceBB");
762 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
763 String gAction = "deleteInstance";
764 String resource = "Service";
765 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
766 execution.setVariable("requestAction", gAction);
767 String bpmnRequest = new String(Files
768 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
769 execution.setVariable("bpmnRequest", bpmnRequest);
770 execution.setVariable("aLaCarte", false);
771 execution.setVariable("apiVersion", "7");
772 execution.setVariable("requestUri", "v6/serviceInstances/123");
775 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
776 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
777 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
778 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
779 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
780 northBoundRequest.setOrchestrationFlowList(orchFlows);
782 ServiceInstance serviceInstanceAAI = new ServiceInstance();
783 serviceInstanceAAI.setServiceInstanceId("aaisi123");
784 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
785 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
787 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
788 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
789 network.setNetworkId("123");
790 serviceInstanceMSO.getNetworks().add(network);
791 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
792 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
793 network2.setNetworkId("321");
794 serviceInstanceMSO.getNetworks().add(network2);
796 Collection collection = new Collection();
797 serviceInstanceMSO.setCollection(collection);
799 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
800 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
801 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
802 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
803 workflowAction.selectExecutionList(execution);
804 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
805 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
806 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
807 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
811 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
812 String gAction = "recreateInstance";
813 String resource = "Vnf";
814 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
815 execution.setVariable("requestAction", gAction);
817 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
818 execution.setVariable("bpmnRequest", bpmnRequest);
819 execution.setVariable("aLaCarte", false);
820 execution.setVariable("apiVersion", "7");
821 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
822 execution.setVariable("serviceInstanceId", "123");
823 execution.setVariable("vnfId", "1234");
825 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
826 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
827 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
828 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
829 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
830 "AAIUnsetVnfInMaintBB");
831 northBoundRequest.setOrchestrationFlowList(orchFlows);
833 ServiceInstance serviceInstanceAAI = new ServiceInstance();
834 serviceInstanceAAI.setServiceInstanceId("123");
835 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
836 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
837 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
838 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
839 vnf.setVnfId("1234");
841 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
842 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
843 vfModule.setVfModuleId("vfModule1");
844 vnf.getVfModules().add(vfModule);
845 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
846 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
847 vfModule2.setVfModuleId("vfModule2");
848 vnf.getVfModules().add(vfModule2);
850 serviceInstanceMSO.getVnfs().add(vnf);
852 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
853 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
854 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
855 false, "cloud-owner")).thenReturn(northBoundRequest);
856 workflowAction.selectExecutionList(execution);
857 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
858 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
859 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
860 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
861 "AAIUnsetVnfInMaintBB");
865 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
866 String gAction = "replaceInstance";
867 String resource = "Vnf";
868 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
869 execution.setVariable("requestAction", gAction);
871 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
872 execution.setVariable("bpmnRequest", bpmnRequest);
873 execution.setVariable("aLaCarte", false);
874 execution.setVariable("apiVersion", "7");
875 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
876 execution.setVariable("serviceInstanceId", "123");
877 execution.setVariable("vnfId", "1234");
879 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
880 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
881 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
882 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
883 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
884 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
885 "AAIUnsetVnfInMaintBB");
886 northBoundRequest.setOrchestrationFlowList(orchFlows);
888 ServiceInstance serviceInstanceAAI = new ServiceInstance();
889 serviceInstanceAAI.setServiceInstanceId("123");
890 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
891 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
892 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
893 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
894 vnf.setVnfId("1234");
895 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
896 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
897 vfModule.setVfModuleId("vfModule1");
898 vnf.getVfModules().add(vfModule);
899 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
900 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
901 vfModule2.setVfModuleId("vfModule2");
902 vnf.getVfModules().add(vfModule2);
903 serviceInstanceMSO.getVnfs().add(vnf);
904 VfModule vfModuleAAI = new VfModule();
905 vfModuleAAI.setVfModuleId("vfModule2");
906 RelationshipList relationshipList = new RelationshipList();
907 Relationship relationship = new Relationship();
908 relationshipList.getRelationship().add(relationship);
909 vfModuleAAI.setRelationshipList(relationshipList);
910 Relationships relationships = new Relationships("abc");
911 Configuration config = new Configuration();
912 config.setConfigurationId("configId");
913 Optional<Configuration> configOp = Optional.of(config);
914 Optional<Relationships> relationshipsOp = Optional.of(relationships);
916 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
917 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
918 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
919 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
920 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
921 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
922 false, "cloud-owner")).thenReturn(northBoundRequest);
923 workflowAction.selectExecutionList(execution);
924 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
925 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
926 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
927 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
928 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
929 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
930 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
935 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
936 String gAction = "createInstance";
937 String resource = "NetworkCollection";
938 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
939 execution.setVariable("requestAction", gAction);
940 String bpmnRequest = new String(
941 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
942 execution.setVariable("bpmnRequest", bpmnRequest);
943 execution.setVariable("aLaCarte", false);
944 execution.setVariable("apiVersion", "7");
945 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
948 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
949 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
950 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
951 northBoundRequest.setOrchestrationFlowList(orchFlows);
953 Service service = new Service();
954 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
955 CollectionResource collectionResource = new CollectionResource();
956 collectionResource.setToscaNodeType("Data NetworkCollection Data");
957 collectionResourceCustomization.setCollectionResource(collectionResource);
958 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
960 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
961 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
962 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
963 workflowAction.selectExecutionList(execution);
964 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
965 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
966 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
967 "ActivateNetworkCollectionBB");
972 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
973 String gAction = "deleteInstance";
974 String resource = "NetworkCollection";
975 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
976 execution.setVariable("requestAction", gAction);
977 String bpmnRequest = new String(
978 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
979 execution.setVariable("bpmnRequest", bpmnRequest);
980 execution.setVariable("aLaCarte", false);
981 execution.setVariable("apiVersion", "7");
982 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
984 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
985 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
986 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
987 northBoundRequest.setOrchestrationFlowList(orchFlows);
989 Service service = new Service();
990 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
991 CollectionResource collectionResource = new CollectionResource();
992 collectionResource.setToscaNodeType("Data NetworkCollection Data");
993 collectionResourceCustomization.setCollectionResource(collectionResource);
994 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
996 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
997 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
998 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
999 workflowAction.selectExecutionList(execution);
1000 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1001 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1002 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1003 "DeleteNetworkCollectionBB");
1007 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1008 String gAction = "createInstance";
1009 String resource = "VfModule";
1010 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1011 execution.setVariable("requestAction", gAction);
1012 String bpmnRequest =
1013 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1014 execution.setVariable("bpmnRequest", bpmnRequest);
1015 execution.setVariable("aLaCarte", true);
1016 execution.setVariable("apiVersion", "7");
1017 execution.setVariable("requestUri",
1018 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1021 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1022 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1023 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1024 northBoundRequest.setOrchestrationFlowList(orchFlows);
1026 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1027 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1028 workflowAction.selectExecutionList(execution);
1029 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1030 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1034 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1035 String gAction = "createInstance";
1036 String resource = "VfModule";
1037 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1038 execution.setVariable("requestAction", gAction);
1039 String bpmnRequest =
1040 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1041 execution.setVariable("bpmnRequest", bpmnRequest);
1042 execution.setVariable("aLaCarte", true);
1043 execution.setVariable("apiVersion", "7");
1044 execution.setVariable("requestUri",
1045 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1047 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1048 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1049 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1050 northBoundRequest.setOrchestrationFlowList(orchFlows);
1052 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1053 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1054 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1055 new CvnfcConfigurationCustomization();
1056 ConfigurationResource configurationResource = new ConfigurationResource();
1057 configurationResource.setToscaNodeType("FabricConfiguration");
1058 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1059 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1060 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1061 Set<CvnfcConfigurationCustomization> custSet = new HashSet<CvnfcConfigurationCustomization>();
1062 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1063 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1064 cvnfcCustomization.setDescription("description");
1065 cvnfcCustomizations.add(cvnfcCustomization);
1067 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1068 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1069 new CvnfcConfigurationCustomization();
1070 ConfigurationResource configurationResource2 = new ConfigurationResource();
1071 configurationResource2.setToscaNodeType("FabricConfiguration");
1072 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1073 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1074 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1075 Set<CvnfcConfigurationCustomization> custSet2 = new HashSet<CvnfcConfigurationCustomization>();
1076 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1077 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1078 cvnfcCustomization2.setDescription("description2");
1079 cvnfcCustomizations.add(cvnfcCustomization2);
1081 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1082 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1083 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1084 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1085 workflowAction.selectExecutionList(execution);
1086 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1087 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1088 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1089 "ActivateFabricConfigurationBB");
1093 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1094 String gAction = "deleteInstance";
1095 String resource = "VfModule";
1096 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1097 execution.setVariable("requestAction", gAction);
1098 String bpmnRequest =
1099 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1100 execution.setVariable("bpmnRequest", bpmnRequest);
1101 execution.setVariable("aLaCarte", true);
1102 execution.setVariable("apiVersion", "7");
1103 execution.setVariable("requestUri",
1104 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1106 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1107 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1108 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1109 northBoundRequest.setOrchestrationFlowList(orchFlows);
1111 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1112 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1114 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1115 vnf.setVnfId("vnf0");
1116 vnf.setModelCustomizationId("modelCustomizationId");
1117 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1119 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1120 vfModule.setModelCustomizationId("modelCustomizationId");
1121 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1123 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1124 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1125 vnfc.setModelInvariantId("modelInvariantId");
1126 vnfc.setVnfcName("testVnfcName");
1128 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1131 List<org.onap.aai.domain.yang.Configuration> configurations =
1132 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1133 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1134 configuration.setConfigurationId("configurationId");
1135 configuration.setModelCustomizationId("modelCustimizationId");
1136 configuration.setConfigurationName("testConfigurationName");
1137 configurations.add(configuration);
1138 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1141 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1143 SPY_workflowAction.selectExecutionList(execution);
1144 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1145 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1146 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1150 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1151 String gAction = "deleteInstance";
1152 String resource = "VfModule";
1153 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1154 execution.setVariable("requestAction", gAction);
1155 String bpmnRequest =
1156 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1157 execution.setVariable("bpmnRequest", bpmnRequest);
1158 execution.setVariable("aLaCarte", true);
1159 execution.setVariable("apiVersion", "7");
1160 execution.setVariable("requestUri",
1161 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1163 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1164 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1165 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1166 northBoundRequest.setOrchestrationFlowList(orchFlows);
1168 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1169 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1171 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1172 vnf.setVnfId("vnf0");
1173 vnf.setModelCustomizationId("modelCustomizationId");
1174 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1176 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1177 vfModule.setModelCustomizationId("modelCustomizationId");
1178 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1180 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1181 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1182 vnfc.setModelInvariantId("modelInvariantId");
1183 vnfc.setVnfcName("testVnfcName");
1185 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1188 List<org.onap.aai.domain.yang.Configuration> configurations =
1189 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1190 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1191 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1194 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1196 SPY_workflowAction.selectExecutionList(execution);
1197 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1198 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1202 public void getRelatedResourcesInVfModuleTest() throws Exception {
1203 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1204 vnfc.setModelInvariantId("modelInvariantId");
1205 vnfc.setVnfcName("testVnfcName");
1207 String vfncPayload =
1208 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1209 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1211 String configurationPayload =
1212 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1213 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1214 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1215 configurationResultWrappers.add(configurationWrapper);
1217 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1218 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1220 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1222 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1223 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1224 assertEquals(1, configurationsList.size());
1225 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1229 * WorkflowActionBB Tests
1233 public void pluralTest() {
1234 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1235 "networks, Network", "invalidNames, invalidNames");
1236 items.forEach(item -> {
1237 String[] split = item.split(",");
1238 String type = split[0].trim();
1239 String expected = split[1].trim();
1240 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1245 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1246 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1247 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1248 BuildingBlock bb = new BuildingBlock();
1249 bb.setBpmnFlowName("AssignNetworkBB");
1251 ebb.setBuildingBlock(bb);
1252 executeFlows.add(ebb);
1253 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1254 BuildingBlock bb2 = new BuildingBlock();
1255 bb2.setBpmnFlowName("AssignNetworkBB");
1257 ebb2.setBuildingBlock(bb2);
1258 executeFlows.add(ebb2);
1259 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1260 BuildingBlock bb3 = new BuildingBlock();
1261 bb3.setBpmnFlowName("CreateNetworkBB");
1263 ebb3.setBuildingBlock(bb3);
1264 executeFlows.add(ebb3);
1265 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1266 BuildingBlock bb4 = new BuildingBlock();
1267 bb4.setBpmnFlowName("CreateNetworkBB");
1269 ebb4.setBuildingBlock(bb4);
1270 executeFlows.add(ebb4);
1271 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1272 BuildingBlock bb5 = new BuildingBlock();
1273 bb5.setBpmnFlowName("ActivateNetworkBB");
1275 ebb5.setBuildingBlock(bb5);
1276 executeFlows.add(ebb5);
1277 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1278 BuildingBlock bb6 = new BuildingBlock();
1279 bb6.setBpmnFlowName("ActivateNetworkBB");
1281 ebb6.setBuildingBlock(bb6);
1282 executeFlows.add(ebb6);
1284 List<ExecuteBuildingBlock> sorted =
1285 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1286 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1287 "CreateNetworkBB", "ActivateNetworkBB");
1291 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1292 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1293 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1294 BuildingBlock bb = new BuildingBlock();
1295 bb.setBpmnFlowName("DeactivateNetworkBB");
1297 ebb.setBuildingBlock(bb);
1298 executeFlows.add(ebb);
1299 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1300 BuildingBlock bb2 = new BuildingBlock();
1301 bb2.setBpmnFlowName("DeactivateNetworkBB");
1303 ebb2.setBuildingBlock(bb2);
1304 executeFlows.add(ebb2);
1305 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1306 BuildingBlock bb3 = new BuildingBlock();
1307 bb3.setBpmnFlowName("DeleteNetworkBB");
1309 ebb3.setBuildingBlock(bb3);
1310 executeFlows.add(ebb3);
1311 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1312 BuildingBlock bb4 = new BuildingBlock();
1313 bb4.setBpmnFlowName("DeleteNetworkBB");
1315 ebb4.setBuildingBlock(bb4);
1316 executeFlows.add(ebb4);
1317 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1318 BuildingBlock bb5 = new BuildingBlock();
1319 bb5.setBpmnFlowName("UnassignNetworkBB");
1321 ebb5.setBuildingBlock(bb5);
1322 executeFlows.add(ebb5);
1323 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1324 BuildingBlock bb6 = new BuildingBlock();
1325 bb6.setBpmnFlowName("UnassignNetworkBB");
1327 ebb6.setBuildingBlock(bb6);
1328 executeFlows.add(ebb6);
1330 List<ExecuteBuildingBlock> sorted =
1331 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1332 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1333 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1337 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1338 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1339 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1340 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1341 northBoundRequest.setOrchestrationFlowList(orchFlows);
1342 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1343 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1345 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1346 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1347 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1348 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1349 WorkflowType.VNF, false, "my-custom-cloud-owner");
1350 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1351 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1352 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1353 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1354 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1355 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1356 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1357 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1358 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1359 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1363 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1364 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1365 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1366 northBoundRequest.setOrchestrationFlowList(orchFlows);
1367 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1368 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1370 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1371 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1372 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1376 public void extractResourceIdAndTypeFromUriTest() {
1377 String uri = "/v6/serviceInstances/123";
1378 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1379 String uri3 = "/v6/serviceInstances";
1380 String uri4 = "/v6/serviceInstances/assign";
1381 String uri5 = "'/v6/serviceInstances/123/vnfs";
1382 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1383 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1384 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1385 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1386 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1387 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1388 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1389 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1390 assertEquals(expected1.getResourceId(), result.getResourceId());
1391 assertEquals(expected1.getResourceType(), result.getResourceType());
1392 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1393 assertEquals(expected2.getResourceId(), result.getResourceId());
1394 assertEquals(expected2.getResourceType(), result.getResourceType());
1395 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1396 assertEquals("Service", result.getResourceType().toString());
1397 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1398 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1399 assertEquals("Service", result.getResourceType().toString());
1400 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1401 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1402 assertEquals("Vnf", result.getResourceType().toString());
1403 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1404 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1405 assertEquals(expected3.getResourceId(), result.getResourceId());
1406 assertEquals(expected3.getResourceType(), result.getResourceType());
1407 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1408 assertEquals(expected4.getResourceId(), result.getResourceId());
1409 assertEquals(expected4.getResourceType(), result.getResourceType());
1410 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1411 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1412 assertEquals("VfModule", result.getResourceType().toString());
1417 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1418 this.expectedException.expect(IllegalArgumentException.class);
1419 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1420 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1424 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1425 this.expectedException.expect(IllegalArgumentException.class);
1426 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1427 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1431 public void populateResourceIdsFromApiHandlerTest() {
1432 execution.setVariable("serviceInstanceId", "123");
1433 execution.setVariable("vnfId", "888");
1434 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1435 assertEquals("123", x.getServiceInstanceId());
1436 assertEquals("888", x.getVnfId());
1437 assertNull(x.getVolumeGroupId());
1441 public void validateResourceIdInAAITest() throws Exception {
1443 RequestDetails reqDetails = new RequestDetails();
1444 SubscriberInfo subInfo = new SubscriberInfo();
1445 subInfo.setGlobalSubscriberId("id123");
1446 reqDetails.setSubscriberInfo(subInfo);
1447 RequestParameters reqParams = new RequestParameters();
1448 reqParams.setSubscriptionServiceType("subServiceType123");
1449 reqDetails.setRequestParameters(reqParams);
1450 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1451 ServiceInstance si = new ServiceInstance();
1452 si.setServiceInstanceId("siId123");
1453 Optional<ServiceInstance> siOp = Optional.of(si);
1454 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1455 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1456 .thenReturn(Optional.empty());
1457 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1458 reqDetails, workflowResourceIds);
1459 assertEquals("siId123", id);
1460 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1461 reqDetails, workflowResourceIds);
1462 assertEquals("generatedId123", id2);
1465 L3Network network = new L3Network();
1466 network.setNetworkId("id123");
1467 network.setNetworkName("name123");
1468 workflowResourceIds.setServiceInstanceId("siId123");
1469 Optional<L3Network> opNetwork = Optional.of(network);
1470 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1471 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1472 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails,
1473 workflowResourceIds);
1474 assertEquals("id123", id);
1475 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails,
1476 workflowResourceIds);
1477 assertEquals("generatedId123", id2);
1480 GenericVnf vnf = new GenericVnf();
1481 vnf.setVnfId("id123");
1482 vnf.setVnfName("vnfName123");
1483 Optional<GenericVnf> opVnf = Optional.of(vnf);
1484 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "name123")).thenReturn(opVnf);
1485 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1486 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails,
1487 workflowResourceIds);
1488 assertEquals("id123", id);
1489 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1490 workflowResourceIds);
1491 assertEquals("generatedId123", id2);
1494 VfModules vfModules = new VfModules();
1495 VfModule vfModule = new VfModule();
1496 vfModule.setVfModuleId("id123");
1497 vfModule.setVfModuleName("name123");
1498 vfModules.getVfModule().add(vfModule);
1499 vnf.setVfModules(vfModules);
1500 workflowResourceIds.setVnfId("id123");
1501 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1502 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails,
1503 workflowResourceIds);
1504 assertEquals("id123", id);
1506 GenericVnf vnf2 = new GenericVnf();
1507 VfModules vfModules2 = new VfModules();
1508 VfModule vfModule2 = new VfModule();
1509 vfModule2.setVfModuleId("id123");
1510 vfModule2.setVfModuleName("name123");
1511 vfModules2.getVfModule().add(vfModule2);
1512 vnf2.setVfModules(vfModules2);
1513 workflowResourceIds.setVnfId("id111");
1514 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1515 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails,
1516 workflowResourceIds);
1517 assertEquals("generatedId123", id2);
1520 VolumeGroup volumeGroup = new VolumeGroup();
1521 volumeGroup.setVolumeGroupId("id123");
1522 volumeGroup.setVolumeGroupName("name123");
1523 workflowResourceIds.setVnfId("id123");
1524 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1525 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1526 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
1527 workflowResourceIds);
1528 assertEquals("id123", id);
1530 workflowResourceIds.setVnfId("id444");
1531 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1532 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1533 .thenReturn(opVolumeGroup);
1534 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444", "111111")).thenReturn(Optional.empty());
1535 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails,
1536 workflowResourceIds);
1537 assertEquals("id123", id2);
1541 public void handleRuntimeExceptionTest() {
1542 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1543 execution.setVariable("testProcessKey", "testProcessKeyValue");
1545 workflowAction.handleRuntimeException(execution);
1546 } catch (BpmnError wfe) {
1547 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1553 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException {
1554 execution.setVariable("testProcessKey", "testProcessKeyValue");
1555 Service service = new Service();
1556 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1557 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1558 networkCust.setModelCustomizationUUID("123");
1559 networkCustomizations.add(networkCust);
1560 service.setNetworkCustomizations(networkCustomizations);
1561 NetworkCollectionResourceCustomization collectionResourceCustomization =
1562 new NetworkCollectionResourceCustomization();
1563 collectionResourceCustomization.setModelCustomizationUUID("123");
1564 CollectionResource collectionResource = new CollectionResource();
1565 collectionResource.setToscaNodeType("NetworkCollection");
1566 InstanceGroup instanceGroup = new InstanceGroup();
1567 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1568 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1569 new CollectionResourceInstanceGroupCustomization();
1570 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1571 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1572 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1573 collectionResource.setInstanceGroup(instanceGroup);
1574 collectionResourceCustomization.setCollectionResource(collectionResource);;
1575 service.setModelUUID("abc");
1576 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1577 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1578 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1579 doReturn(collectionResourceCustomization).when(catalogDbClient)
1580 .getNetworkCollectionResourceCustomizationByID("123");
1581 String bpmnRequest = new String(Files
1582 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1583 ObjectMapper mapper = new ObjectMapper();
1584 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1585 List<Resource> resourceCounter = new ArrayList<>();
1586 thrown.expect(BpmnError.class);
1587 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1591 public void sortVfModulesByBaseFirstTest() {
1592 List<Resource> resources = new ArrayList<>();
1593 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1594 resource1.setBaseVfModule(false);
1595 resources.add(resource1);
1596 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1597 resource2.setBaseVfModule(false);
1598 resources.add(resource2);
1599 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1600 resource3.setBaseVfModule(true);
1601 resources.add(resource3);
1602 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1603 assertEquals("333", result.get(0).getResourceId());
1604 assertEquals("222", result.get(1).getResourceId());
1605 assertEquals("111", result.get(2).getResourceId());
1609 public void sortVfModulesByBaseLastTest() {
1610 List<Resource> resources = new ArrayList<>();
1611 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1612 resource1.setBaseVfModule(true);
1613 resources.add(resource1);
1614 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1615 resource2.setBaseVfModule(false);
1616 resources.add(resource2);
1617 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1618 resource3.setBaseVfModule(false);
1619 resources.add(resource3);
1620 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1621 assertEquals("333", result.get(0).getResourceId());
1622 assertEquals("222", result.get(1).getResourceId());
1623 assertEquals("111", result.get(2).getResourceId());
1627 public void findCatalogNetworkCollectionTest() {
1628 Service service = new Service();
1629 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1630 networkCustomization.setModelCustomizationUUID("123");
1631 service.getCollectionResourceCustomizations().add(networkCustomization);
1632 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1633 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1634 assertNotNull(customization);
1638 public void findCatalogNetworkCollectionEmptyTest() {
1639 Service service = new Service();
1640 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1641 networkCustomization.setModelCustomizationUUID("123");
1642 service.getCollectionResourceCustomizations().add(networkCustomization);
1643 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1644 assertNull(customization);
1648 public void findCatalogNetworkCollectionMoreThanOneTest() {
1649 Service service = new Service();
1650 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1651 networkCustomization1.setModelCustomizationUUID("123");
1652 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1653 networkCustomization2.setModelCustomizationUUID("321");
1654 service.getCollectionResourceCustomizations().add(networkCustomization1);
1655 service.getCollectionResourceCustomizations().add(networkCustomization2);
1656 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1657 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1658 workflowAction.findCatalogNetworkCollection(execution, service);
1659 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1660 execution.getVariable("WorkflowActionErrorMessage"));
1664 public void verifyLackOfNullPointerExceptionForNullResource() {
1665 ExecuteBuildingBlock result = null;
1667 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
1668 false, null, null, null, false, null, true);
1669 } catch (NullPointerException e) {
1670 fail("NullPointerException should not be thrown when 'resource' is null");
1672 assertNotNull(result);
1675 private List<OrchestrationFlow> createFlowList(String... flowNames) {
1676 List<OrchestrationFlow> result = new ArrayList<>();
1677 for (String flowName : flowNames) {
1678 OrchestrationFlow orchFlow = new OrchestrationFlow();
1679 orchFlow.setFlowName(flowName);
1680 result.add(orchFlow);
1685 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
1686 for (int i = 0; i < ebbs.size(); i++) {
1687 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);