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 com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
26 import static org.hamcrest.CoreMatchers.containsString;
27 import static org.hamcrest.CoreMatchers.equalTo;
28 import static org.junit.Assert.*;
29 import static org.mockito.ArgumentMatchers.anyObject;
30 import static org.mockito.ArgumentMatchers.anyString;
31 import static org.mockito.Matchers.isA;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.when;
34 import com.fasterxml.jackson.databind.ObjectMapper;
35 import java.io.IOException;
36 import java.net.MalformedURLException;
37 import java.nio.file.Files;
38 import java.nio.file.Paths;
39 import java.util.ArrayList;
40 import java.util.Arrays;
41 import java.util.HashSet;
42 import java.util.List;
43 import java.util.Optional;
45 import java.util.UUID;
46 import org.camunda.bpm.engine.delegate.BpmnError;
47 import org.camunda.bpm.engine.delegate.DelegateExecution;
48 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
49 import org.javatuples.Pair;
50 import org.junit.Before;
51 import org.junit.Ignore;
52 import org.junit.Rule;
53 import org.junit.Test;
54 import org.junit.rules.ExpectedException;
55 import org.mockito.InjectMocks;
56 import org.mockito.Mock;
57 import org.mockito.Spy;
58 import org.onap.aai.domain.yang.GenericVnf;
59 import org.onap.aai.domain.yang.L3Network;
60 import org.onap.aai.domain.yang.Relationship;
61 import org.onap.aai.domain.yang.RelationshipList;
62 import org.onap.aai.domain.yang.ServiceInstance;
63 import org.onap.aai.domain.yang.VfModule;
64 import org.onap.aai.domain.yang.VfModules;
65 import org.onap.aai.domain.yang.Vnfc;
66 import org.onap.aai.domain.yang.VolumeGroup;
67 import org.onap.so.bpmn.BaseTaskTest;
68 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
69 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
70 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
71 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
72 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
73 import org.onap.so.client.aai.AAIObjectType;
74 import org.onap.so.client.aai.entities.AAIResultWrapper;
75 import org.onap.so.client.aai.entities.Relationships;
76 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
77 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
78 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
79 import org.onap.so.db.catalog.beans.CollectionResource;
80 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
81 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
82 import org.onap.so.db.catalog.beans.ConfigurationResource;
83 import org.onap.so.db.catalog.beans.CvnfcCustomization;
84 import org.onap.so.db.catalog.beans.HeatEnvironment;
85 import org.onap.so.db.catalog.beans.HeatTemplate;
86 import org.onap.so.db.catalog.beans.InstanceGroup;
87 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
88 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
89 import org.onap.so.db.catalog.beans.Service;
90 import org.onap.so.db.catalog.beans.VfModuleCustomization;
91 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
92 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
93 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
94 import org.onap.so.serviceinstancebeans.RequestDetails;
95 import org.onap.so.serviceinstancebeans.RequestParameters;
96 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
97 import org.onap.so.serviceinstancebeans.SubscriberInfo;
98 import org.springframework.core.env.Environment;
100 public class WorkflowActionTest extends BaseTaskTest {
104 protected Environment environment;
106 protected WorkflowAction workflowAction;
107 private DelegateExecution execution;
112 protected WorkflowAction SPY_workflowAction;
115 public ExpectedException thrown = ExpectedException.none();
117 private String RESOURCE_PATH = "src/test/resources/__files/";
120 public void before() throws Exception {
121 execution = new DelegateExecutionFake();
122 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
123 servInstance.setServiceInstanceId("TEST");
124 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
125 workflowAction.setBbInputSetupUtils(bbSetupUtils);
126 workflowAction.setBbInputSetup(bbInputSetup);
133 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
134 String gAction = "createInstance";
135 String resource = "Network";
136 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
137 execution.setVariable("requestAction", gAction);
139 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
140 execution.setVariable("bpmnRequest", bpmnRequest);
141 execution.setVariable("aLaCarte", true);
142 execution.setVariable("apiVersion", "7");
143 execution.setVariable("requestUri", "v6/networks/123");
145 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
146 List<OrchestrationFlow> orchFlows =
147 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
148 northBoundRequest.setOrchestrationFlowList(orchFlows);
150 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
151 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
152 workflowAction.selectExecutionList(execution);
153 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
154 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
158 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
159 String gAction = "deleteInstance";
160 String resource = "Network";
161 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
162 execution.setVariable("requestAction", gAction);
164 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
165 execution.setVariable("bpmnRequest", bpmnRequest);
166 execution.setVariable("aLaCarte", true);
167 execution.setVariable("apiVersion", "7");
168 execution.setVariable("requestUri", "v6/networks/123");
170 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
171 List<OrchestrationFlow> orchFlows =
172 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
173 northBoundRequest.setOrchestrationFlowList(orchFlows);
175 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
176 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
177 workflowAction.selectExecutionList(execution);
178 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
179 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
183 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
184 String gAction = "createInstance";
185 String resource = "Service";
186 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
187 execution.setVariable("requestAction", gAction);
189 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
190 execution.setVariable("bpmnRequest", bpmnRequest);
191 execution.setVariable("aLaCarte", true);
192 execution.setVariable("apiVersion", "7");
193 execution.setVariable("requestUri", "v6/serviceInstances/123");
196 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
197 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
198 northBoundRequest.setOrchestrationFlowList(orchFlows);
200 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
201 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
202 workflowAction.selectExecutionList(execution);
203 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
204 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
208 * SERVICE MACRO TESTS
211 public void selectExecutionListServiceMacroAssignTest() throws Exception {
212 String gAction = "assignInstance";
213 String resource = "Service";
214 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
215 execution.setVariable("requestAction", gAction);
217 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
218 execution.setVariable("bpmnRequest", bpmnRequest);
219 execution.setVariable("aLaCarte", false);
220 execution.setVariable("apiVersion", "7");
221 execution.setVariable("requestUri", "v6/serviceInstances/123");
224 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
225 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
226 "AssignVolumeGroupBB", "AssignVfModuleBB");
227 northBoundRequest.setOrchestrationFlowList(orchFlows);
229 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
230 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
231 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
232 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
233 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
234 HeatTemplate volumeHeatTemplate = new HeatTemplate();
235 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
236 vfModuleCustomization.setVfModule(vfModule);
238 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
239 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
240 HeatEnvironment heatEnvironment = new HeatEnvironment();
241 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
242 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
243 HeatTemplate moduleHeatTemplate = new HeatTemplate();
244 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
245 vfModuleCustomization2.setVfModule(vfModule2);
247 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
248 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
250 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
251 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
252 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
253 .thenReturn(vfModuleCustomization);
254 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
255 .thenReturn(vfModuleCustomization2);
256 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
257 .thenReturn(vfModuleCustomization3);
258 workflowAction.selectExecutionList(execution);
259 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
260 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
261 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
265 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
266 String gAction = "assignInstance";
267 String resource = "Service";
268 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
269 execution.setVariable("requestAction", gAction);
270 String bpmnRequest = new String(
271 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
272 execution.setVariable("bpmnRequest", bpmnRequest);
273 execution.setVariable("aLaCarte", false);
274 execution.setVariable("apiVersion", "7");
275 execution.setVariable("requestUri", "v6/serviceInstances/123");
278 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
279 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
280 "AssignVolumeGroupBB", "AssignVfModuleBB");
281 northBoundRequest.setOrchestrationFlowList(orchFlows);
283 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
284 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
285 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
286 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
287 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
288 HeatTemplate volumeHeatTemplate = new HeatTemplate();
289 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
290 vfModuleCustomization.setVfModule(vfModule);
292 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
293 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
294 HeatEnvironment heatEnvironment = new HeatEnvironment();
295 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
296 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
297 HeatTemplate moduleHeatTemplate = new HeatTemplate();
298 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
299 vfModuleCustomization2.setVfModule(vfModule2);
301 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
302 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
304 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
305 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
306 false, "att-aic")).thenReturn(northBoundRequest);
307 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
308 .thenReturn(vfModuleCustomization);
309 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
310 .thenReturn(vfModuleCustomization2);
311 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
312 .thenReturn(vfModuleCustomization3);
313 workflowAction.selectExecutionList(execution);
314 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
315 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
316 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
320 public void selectExecutionListServiceMacroActivateTest() throws Exception {
321 String gAction = "activateInstance";
322 String resource = "Service";
323 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
324 execution.setVariable("requestAction", gAction);
325 String bpmnRequest = new String(Files
326 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
327 execution.setVariable("bpmnRequest", bpmnRequest);
328 execution.setVariable("aLaCarte", false);
329 execution.setVariable("apiVersion", "7");
330 execution.setVariable("requestUri", "v6/serviceInstances/si0");
333 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
334 List<OrchestrationFlow> orchFlows =
335 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
336 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
337 northBoundRequest.setOrchestrationFlowList(orchFlows);
339 ServiceInstance serviceInstanceAAI = new ServiceInstance();
340 serviceInstanceAAI.setServiceInstanceId("si0");
341 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
342 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
343 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
344 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
345 vnf.setVnfId("vnf0");
347 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
348 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
349 vfModule.setVfModuleId("vfModule0");
350 vnf.getVfModules().add(vfModule);
351 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
352 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
353 vfModule2.setVfModuleId("vfModule1");
354 vnf.getVfModules().add(vfModule2);
356 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
357 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
358 volumeGroup.setVolumeGroupId("volumeGroup0");
359 vnf.getVolumeGroups().add(volumeGroup);
361 serviceInstanceMSO.getVnfs().add(vnf);
363 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
364 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
365 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
366 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
367 workflowAction.selectExecutionList(execution);
368 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
369 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
370 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
371 "ActivateServiceInstanceBB");
372 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
373 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
374 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
375 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
376 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
377 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
378 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
379 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
384 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
385 String gAction = "deactivateInstance";
386 String resource = "Service";
387 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
388 execution.setVariable("requestAction", gAction);
389 String bpmnRequest = new String(Files
390 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
391 execution.setVariable("bpmnRequest", bpmnRequest);
392 execution.setVariable("aLaCarte", false);
393 execution.setVariable("apiVersion", "7");
394 execution.setVariable("requestUri", "v6/serviceInstances/123");
397 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
398 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
399 northBoundRequest.setOrchestrationFlowList(orchFlows);
401 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
402 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
403 workflowAction.selectExecutionList(execution);
404 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
405 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
409 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
410 String gAction = "createInstance";
411 String resource = "Service";
412 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
413 execution.setVariable("requestAction", gAction);
414 String bpmnRequest = new String(Files
415 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
416 execution.setVariable("bpmnRequest", bpmnRequest);
417 execution.setVariable("aLaCarte", false);
418 execution.setVariable("apiVersion", "7");
419 execution.setVariable("requestUri", "v6/serviceInstances/123");
422 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
423 northBoundRequest.setIsToplevelflow(true);
424 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
425 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
426 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
427 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
428 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
429 northBoundRequest.setOrchestrationFlowList(orchFlows);
431 Service service = new Service();
432 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
433 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
434 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
435 workflowAction.selectExecutionList(execution);
436 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
437 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
441 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
442 String gAction = "createInstance";
443 String resource = "Service";
444 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
445 execution.setVariable("requestAction", gAction);
446 String bpmnRequest = new String(Files
447 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
448 execution.setVariable("bpmnRequest", bpmnRequest);
449 execution.setVariable("aLaCarte", false);
450 execution.setVariable("apiVersion", "7");
451 execution.setVariable("requestUri", "v6/serviceInstances/123");
454 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
455 northBoundRequest.setIsToplevelflow(true);
456 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
457 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
458 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
459 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
460 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
461 northBoundRequest.setOrchestrationFlowList(orchFlows);
463 Service service = new Service();
464 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
465 networkCustomization.setModelCustomizationUUID("1234");
466 service.getNetworkCustomizations().add(networkCustomization);
467 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
468 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
469 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
470 workflowAction.selectExecutionList(execution);
471 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
472 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
473 "ActivateNetworkBB", "ActivateServiceInstanceBB");
477 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
478 String gAction = "createInstance";
479 String resource = "Service";
480 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
481 execution.setVariable("requestAction", gAction);
482 String bpmnRequest = new String(Files
483 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
484 execution.setVariable("bpmnRequest", bpmnRequest);
485 execution.setVariable("aLaCarte", false);
486 execution.setVariable("apiVersion", "7");
487 execution.setVariable("requestUri", "v6/serviceInstances/123");
490 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
491 northBoundRequest.setIsToplevelflow(true);
492 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
493 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
494 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
495 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
496 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
497 northBoundRequest.setOrchestrationFlowList(orchFlows);
499 Service service = new Service();
500 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
501 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
502 networkCust.setModelCustomizationUUID("123");
503 networkCustomizations.add(networkCust);
504 service.setNetworkCustomizations(networkCustomizations);
505 NetworkCollectionResourceCustomization collectionResourceCustomization =
506 new NetworkCollectionResourceCustomization();
507 collectionResourceCustomization.setModelCustomizationUUID("123");
509 CollectionResource collectionResource = new CollectionResource();
510 collectionResource.setToscaNodeType("NetworkCollection");
511 InstanceGroup instanceGroup = new InstanceGroup();
512 instanceGroup.setToscaNodeType("NetworkCollectionResource");
513 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
514 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
515 new CollectionNetworkResourceCustomization();
516 collectionNetworkResourceCust.setModelCustomizationUUID("123");
517 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
518 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
519 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
520 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
521 new CollectionResourceInstanceGroupCustomization();
522 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
523 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
524 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
525 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
526 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
527 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
528 collectionResource.setInstanceGroup(instanceGroup);
529 collectionResourceCustomization.setCollectionResource(collectionResource);;
530 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
531 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
532 doReturn(collectionResourceCustomization).when(catalogDbClient)
533 .getNetworkCollectionResourceCustomizationByID("123");
534 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
535 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
536 workflowAction.selectExecutionList(execution);
537 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
538 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
539 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
540 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
541 "ActivateServiceInstanceBB");
542 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
543 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
544 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
545 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
546 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
548 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
551 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
552 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
553 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
554 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
555 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
557 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
560 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
561 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
562 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
564 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
566 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
572 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
573 String gAction = "createInstance";
574 String resource = "Service";
575 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
576 execution.setVariable("requestAction", gAction);
578 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
579 execution.setVariable("bpmnRequest", bpmnRequest);
580 execution.setVariable("aLaCarte", false);
581 execution.setVariable("apiVersion", "7");
582 execution.setVariable("requestUri", "v6/serviceInstances/123");
585 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
586 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
587 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
588 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
589 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
590 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
591 northBoundRequest.setOrchestrationFlowList(orchFlows);
593 Service service = new Service();
594 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
596 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
597 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
598 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
599 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
600 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
601 HeatTemplate volumeHeatTemplate = new HeatTemplate();
602 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
603 vfModuleCustomization.setVfModule(vfModule);
605 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
606 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
607 HeatEnvironment heatEnvironment = new HeatEnvironment();
608 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
609 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
610 HeatTemplate moduleHeatTemplate = new HeatTemplate();
611 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
612 vfModuleCustomization2.setVfModule(vfModule2);
614 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
615 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
617 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
618 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
619 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
620 .thenReturn(vfModuleCustomization);
621 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
622 .thenReturn(vfModuleCustomization2);
623 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
624 .thenReturn(vfModuleCustomization3);
625 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
626 workflowAction.selectExecutionList(execution);
627 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
628 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
629 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
630 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
631 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
632 "ActivateServiceInstanceBB");
633 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
634 int randomUUIDLength = UUID.randomUUID().toString().length();
635 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
636 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
637 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
638 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
639 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
640 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
641 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
642 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
647 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
649 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
650 assertEquals(true, execution.getVariable("homing"));
654 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
655 String gAction = "deleteInstance";
656 String resource = "Service";
657 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
658 execution.setVariable("requestAction", gAction);
659 String bpmnRequest = new String(Files
660 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
661 execution.setVariable("bpmnRequest", bpmnRequest);
662 execution.setVariable("aLaCarte", false);
663 execution.setVariable("apiVersion", "7");
664 execution.setVariable("requestUri", "v6/serviceInstances/123");
667 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
668 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
669 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
670 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
671 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
672 northBoundRequest.setOrchestrationFlowList(orchFlows);
674 ServiceInstance serviceInstanceAAI = new ServiceInstance();
675 serviceInstanceAAI.setServiceInstanceId("aaisi123");
676 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
677 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
678 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
679 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
680 vnf.setVnfId("vnfId123");
682 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
683 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
684 vfModule.setVfModuleId("vfModule1");
685 vnf.getVfModules().add(vfModule);
686 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
687 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
688 vfModule2.setVfModuleId("vfModule2");
689 vnf.getVfModules().add(vfModule2);
691 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
692 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
693 volumeGroup.setVolumeGroupId("vg123");
694 vnf.getVolumeGroups().add(volumeGroup);
696 serviceInstanceMSO.getVnfs().add(vnf);
698 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
699 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
700 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
701 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
702 workflowAction.selectExecutionList(execution);
703 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
704 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
705 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
706 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
707 "UnassignVnfBB", "UnassignServiceInstanceBB");
711 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
712 String gAction = "unassignInstance";
713 String resource = "Service";
714 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
715 execution.setVariable("requestAction", gAction);
716 String bpmnRequest = new String(Files
717 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
718 execution.setVariable("bpmnRequest", bpmnRequest);
719 execution.setVariable("aLaCarte", false);
720 execution.setVariable("apiVersion", "7");
721 execution.setVariable("requestUri", "v6/serviceInstances/123");
724 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
725 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
726 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
727 northBoundRequest.setOrchestrationFlowList(orchFlows);
729 ServiceInstance serviceInstanceAAI = new ServiceInstance();
730 serviceInstanceAAI.setServiceInstanceId("aaisi123");
731 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
732 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
733 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
734 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
735 vnf.setVnfId("vnfId123");
737 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
738 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
739 vfModule.setVfModuleId("vfModule1");
740 vnf.getVfModules().add(vfModule);
741 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
742 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
743 vfModule2.setVfModuleId("vfModule2");
744 vnf.getVfModules().add(vfModule2);
746 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
747 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
748 volumeGroup.setVolumeGroupId("vg123");
749 vnf.getVolumeGroups().add(volumeGroup);
751 serviceInstanceMSO.getVnfs().add(vnf);
753 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
754 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
755 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
756 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
757 workflowAction.selectExecutionList(execution);
758 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
759 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
760 "UnassignVnfBB", "UnassignServiceInstanceBB");
764 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
765 String gAction = "deleteInstance";
766 String resource = "Service";
767 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
768 execution.setVariable("requestAction", gAction);
769 String bpmnRequest = new String(Files
770 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
771 execution.setVariable("bpmnRequest", bpmnRequest);
772 execution.setVariable("aLaCarte", false);
773 execution.setVariable("apiVersion", "7");
774 execution.setVariable("requestUri", "v6/serviceInstances/123");
777 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
778 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
779 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
780 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
781 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
782 northBoundRequest.setOrchestrationFlowList(orchFlows);
784 ServiceInstance serviceInstanceAAI = new ServiceInstance();
785 serviceInstanceAAI.setServiceInstanceId("aaisi123");
786 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
787 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
789 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
790 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
791 network.setNetworkId("123");
792 serviceInstanceMSO.getNetworks().add(network);
793 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
794 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
795 network2.setNetworkId("321");
796 serviceInstanceMSO.getNetworks().add(network2);
798 Collection collection = new Collection();
799 serviceInstanceMSO.setCollection(collection);
801 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
802 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
803 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
804 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
805 workflowAction.selectExecutionList(execution);
806 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
807 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
808 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
809 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
813 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
814 String gAction = "recreateInstance";
815 String resource = "Vnf";
816 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
817 execution.setVariable("requestAction", gAction);
819 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
820 execution.setVariable("bpmnRequest", bpmnRequest);
821 execution.setVariable("aLaCarte", false);
822 execution.setVariable("apiVersion", "7");
823 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
824 execution.setVariable("serviceInstanceId", "123");
825 execution.setVariable("vnfId", "1234");
827 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
828 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
829 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
830 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
831 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
832 "AAIUnsetVnfInMaintBB");
833 northBoundRequest.setOrchestrationFlowList(orchFlows);
835 ServiceInstance serviceInstanceAAI = new ServiceInstance();
836 serviceInstanceAAI.setServiceInstanceId("123");
837 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
838 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
839 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
840 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
841 vnf.setVnfId("1234");
843 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
844 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
845 vfModule.setVfModuleId("vfModule1");
846 vnf.getVfModules().add(vfModule);
847 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
848 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
849 vfModule2.setVfModuleId("vfModule2");
850 vnf.getVfModules().add(vfModule2);
852 serviceInstanceMSO.getVnfs().add(vnf);
854 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
855 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
856 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
857 false, "cloud-owner")).thenReturn(northBoundRequest);
858 workflowAction.selectExecutionList(execution);
859 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
860 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
861 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
862 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
863 "AAIUnsetVnfInMaintBB");
867 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
868 String gAction = "replaceInstance";
869 String resource = "Vnf";
870 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
871 execution.setVariable("requestAction", gAction);
873 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
874 execution.setVariable("bpmnRequest", bpmnRequest);
875 execution.setVariable("aLaCarte", false);
876 execution.setVariable("apiVersion", "7");
877 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
878 execution.setVariable("serviceInstanceId", "123");
879 execution.setVariable("vnfId", "1234");
881 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
882 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
883 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
884 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
885 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
886 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
887 "AAIUnsetVnfInMaintBB");
888 northBoundRequest.setOrchestrationFlowList(orchFlows);
890 ServiceInstance serviceInstanceAAI = new ServiceInstance();
891 serviceInstanceAAI.setServiceInstanceId("123");
892 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
893 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
894 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
895 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
896 vnf.setVnfId("1234");
897 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
898 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
899 vfModule.setVfModuleId("vfModule1");
900 vnf.getVfModules().add(vfModule);
901 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
902 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
903 vfModule2.setVfModuleId("vfModule2");
904 vnf.getVfModules().add(vfModule2);
905 serviceInstanceMSO.getVnfs().add(vnf);
906 VfModule vfModuleAAI = new VfModule();
907 vfModuleAAI.setVfModuleId("vfModule2");
908 RelationshipList relationshipList = new RelationshipList();
909 Relationship relationship = new Relationship();
910 relationshipList.getRelationship().add(relationship);
911 vfModuleAAI.setRelationshipList(relationshipList);
912 Relationships relationships = new Relationships("abc");
913 Configuration config = new Configuration();
914 config.setConfigurationId("configId");
915 Optional<Configuration> configOp = Optional.of(config);
916 Optional<Relationships> relationshipsOp = Optional.of(relationships);
918 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
919 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
920 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
921 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
922 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
923 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
924 false, "cloud-owner")).thenReturn(northBoundRequest);
925 workflowAction.selectExecutionList(execution);
926 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
927 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
928 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
929 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
930 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
931 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
932 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
937 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
938 String gAction = "createInstance";
939 String resource = "NetworkCollection";
940 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
941 execution.setVariable("requestAction", gAction);
942 String bpmnRequest = new String(
943 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
944 execution.setVariable("bpmnRequest", bpmnRequest);
945 execution.setVariable("aLaCarte", false);
946 execution.setVariable("apiVersion", "7");
947 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
950 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
951 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
952 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
953 northBoundRequest.setOrchestrationFlowList(orchFlows);
955 Service service = new Service();
956 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
957 CollectionResource collectionResource = new CollectionResource();
958 collectionResource.setToscaNodeType("Data NetworkCollection Data");
959 collectionResourceCustomization.setCollectionResource(collectionResource);
960 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
962 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
963 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
964 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
965 workflowAction.selectExecutionList(execution);
966 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
967 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
968 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
969 "ActivateNetworkCollectionBB");
974 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
975 String gAction = "deleteInstance";
976 String resource = "NetworkCollection";
977 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
978 execution.setVariable("requestAction", gAction);
979 String bpmnRequest = new String(
980 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
981 execution.setVariable("bpmnRequest", bpmnRequest);
982 execution.setVariable("aLaCarte", false);
983 execution.setVariable("apiVersion", "7");
984 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
986 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
987 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
988 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
989 northBoundRequest.setOrchestrationFlowList(orchFlows);
991 Service service = new Service();
992 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
993 CollectionResource collectionResource = new CollectionResource();
994 collectionResource.setToscaNodeType("Data NetworkCollection Data");
995 collectionResourceCustomization.setCollectionResource(collectionResource);
996 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
998 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
999 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1000 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1001 workflowAction.selectExecutionList(execution);
1002 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1003 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1004 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1005 "DeleteNetworkCollectionBB");
1009 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1010 String gAction = "createInstance";
1011 String resource = "VfModule";
1012 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1013 execution.setVariable("requestAction", gAction);
1014 String bpmnRequest =
1015 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1016 execution.setVariable("bpmnRequest", bpmnRequest);
1017 execution.setVariable("aLaCarte", true);
1018 execution.setVariable("apiVersion", "7");
1019 execution.setVariable("requestUri",
1020 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1023 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1024 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1025 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1026 northBoundRequest.setOrchestrationFlowList(orchFlows);
1028 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1029 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1030 workflowAction.selectExecutionList(execution);
1031 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1032 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1036 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1037 String gAction = "createInstance";
1038 String resource = "VfModule";
1039 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1040 execution.setVariable("requestAction", gAction);
1041 String bpmnRequest =
1042 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1043 execution.setVariable("bpmnRequest", bpmnRequest);
1044 execution.setVariable("aLaCarte", true);
1045 execution.setVariable("apiVersion", "7");
1046 execution.setVariable("requestUri",
1047 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1049 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1050 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1051 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1052 northBoundRequest.setOrchestrationFlowList(orchFlows);
1054 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1055 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1056 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1057 new CvnfcConfigurationCustomization();
1058 ConfigurationResource configurationResource = new ConfigurationResource();
1059 configurationResource.setToscaNodeType("FabricConfiguration");
1060 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1061 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1062 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1063 Set<CvnfcConfigurationCustomization> custSet = new HashSet<CvnfcConfigurationCustomization>();
1064 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1065 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1066 cvnfcCustomization.setDescription("description");
1067 cvnfcCustomizations.add(cvnfcCustomization);
1069 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1070 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1071 new CvnfcConfigurationCustomization();
1072 ConfigurationResource configurationResource2 = new ConfigurationResource();
1073 configurationResource2.setToscaNodeType("FabricConfiguration");
1074 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1075 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1076 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1077 Set<CvnfcConfigurationCustomization> custSet2 = new HashSet<CvnfcConfigurationCustomization>();
1078 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1079 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1080 cvnfcCustomization2.setDescription("description2");
1081 cvnfcCustomizations.add(cvnfcCustomization2);
1083 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1084 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1085 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1086 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1087 workflowAction.selectExecutionList(execution);
1088 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1089 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1090 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1091 "ActivateFabricConfigurationBB");
1095 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1096 String gAction = "deleteInstance";
1097 String resource = "VfModule";
1098 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1099 execution.setVariable("requestAction", gAction);
1100 String bpmnRequest =
1101 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1102 execution.setVariable("bpmnRequest", bpmnRequest);
1103 execution.setVariable("aLaCarte", true);
1104 execution.setVariable("apiVersion", "7");
1105 execution.setVariable("requestUri",
1106 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1108 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1109 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1110 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1111 northBoundRequest.setOrchestrationFlowList(orchFlows);
1113 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1114 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1116 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1117 vnf.setVnfId("vnf0");
1118 vnf.setModelCustomizationId("modelCustomizationId");
1119 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1121 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1122 vfModule.setModelCustomizationId("modelCustomizationId");
1123 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1125 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1126 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1127 vnfc.setModelInvariantId("modelInvariantId");
1128 vnfc.setVnfcName("testVnfcName");
1130 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1133 List<org.onap.aai.domain.yang.Configuration> configurations =
1134 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1135 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1136 configuration.setConfigurationId("configurationId");
1137 configuration.setModelCustomizationId("modelCustimizationId");
1138 configuration.setConfigurationName("testConfigurationName");
1139 configurations.add(configuration);
1140 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1143 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1145 SPY_workflowAction.selectExecutionList(execution);
1146 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1147 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1148 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1152 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1153 String gAction = "deleteInstance";
1154 String resource = "VfModule";
1155 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1156 execution.setVariable("requestAction", gAction);
1157 String bpmnRequest =
1158 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1159 execution.setVariable("bpmnRequest", bpmnRequest);
1160 execution.setVariable("aLaCarte", true);
1161 execution.setVariable("apiVersion", "7");
1162 execution.setVariable("requestUri",
1163 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1165 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1166 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1167 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1168 northBoundRequest.setOrchestrationFlowList(orchFlows);
1170 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1171 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1173 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1174 vnf.setVnfId("vnf0");
1175 vnf.setModelCustomizationId("modelCustomizationId");
1176 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1178 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1179 vfModule.setModelCustomizationId("modelCustomizationId");
1180 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1182 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1183 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1184 vnfc.setModelInvariantId("modelInvariantId");
1185 vnfc.setVnfcName("testVnfcName");
1187 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1190 List<org.onap.aai.domain.yang.Configuration> configurations =
1191 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1192 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1193 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1196 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1198 SPY_workflowAction.selectExecutionList(execution);
1199 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1200 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1204 public void getRelatedResourcesInVfModuleTest() throws Exception {
1205 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1206 vnfc.setModelInvariantId("modelInvariantId");
1207 vnfc.setVnfcName("testVnfcName");
1209 String vfncPayload =
1210 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1211 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1213 String configurationPayload =
1214 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1215 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1216 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1217 configurationResultWrappers.add(configurationWrapper);
1219 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1220 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1222 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1224 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1225 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1226 assertEquals(1, configurationsList.size());
1227 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1231 * WorkflowActionBB Tests
1235 public void pluralTest() {
1236 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1237 "networks, Network", "invalidNames, invalidNames");
1238 items.forEach(item -> {
1239 String[] split = item.split(",");
1240 String type = split[0].trim();
1241 String expected = split[1].trim();
1242 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1247 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1248 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1249 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1250 BuildingBlock bb = new BuildingBlock();
1251 bb.setBpmnFlowName("AssignNetworkBB");
1253 ebb.setBuildingBlock(bb);
1254 executeFlows.add(ebb);
1255 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1256 BuildingBlock bb2 = new BuildingBlock();
1257 bb2.setBpmnFlowName("AssignNetworkBB");
1259 ebb2.setBuildingBlock(bb2);
1260 executeFlows.add(ebb2);
1261 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1262 BuildingBlock bb3 = new BuildingBlock();
1263 bb3.setBpmnFlowName("CreateNetworkBB");
1265 ebb3.setBuildingBlock(bb3);
1266 executeFlows.add(ebb3);
1267 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1268 BuildingBlock bb4 = new BuildingBlock();
1269 bb4.setBpmnFlowName("CreateNetworkBB");
1271 ebb4.setBuildingBlock(bb4);
1272 executeFlows.add(ebb4);
1273 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1274 BuildingBlock bb5 = new BuildingBlock();
1275 bb5.setBpmnFlowName("ActivateNetworkBB");
1277 ebb5.setBuildingBlock(bb5);
1278 executeFlows.add(ebb5);
1279 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1280 BuildingBlock bb6 = new BuildingBlock();
1281 bb6.setBpmnFlowName("ActivateNetworkBB");
1283 ebb6.setBuildingBlock(bb6);
1284 executeFlows.add(ebb6);
1286 List<ExecuteBuildingBlock> sorted =
1287 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1288 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1289 "CreateNetworkBB", "ActivateNetworkBB");
1293 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1294 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1295 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1296 BuildingBlock bb = new BuildingBlock();
1297 bb.setBpmnFlowName("DeactivateNetworkBB");
1299 ebb.setBuildingBlock(bb);
1300 executeFlows.add(ebb);
1301 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1302 BuildingBlock bb2 = new BuildingBlock();
1303 bb2.setBpmnFlowName("DeactivateNetworkBB");
1305 ebb2.setBuildingBlock(bb2);
1306 executeFlows.add(ebb2);
1307 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1308 BuildingBlock bb3 = new BuildingBlock();
1309 bb3.setBpmnFlowName("DeleteNetworkBB");
1311 ebb3.setBuildingBlock(bb3);
1312 executeFlows.add(ebb3);
1313 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1314 BuildingBlock bb4 = new BuildingBlock();
1315 bb4.setBpmnFlowName("DeleteNetworkBB");
1317 ebb4.setBuildingBlock(bb4);
1318 executeFlows.add(ebb4);
1319 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1320 BuildingBlock bb5 = new BuildingBlock();
1321 bb5.setBpmnFlowName("UnassignNetworkBB");
1323 ebb5.setBuildingBlock(bb5);
1324 executeFlows.add(ebb5);
1325 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1326 BuildingBlock bb6 = new BuildingBlock();
1327 bb6.setBpmnFlowName("UnassignNetworkBB");
1329 ebb6.setBuildingBlock(bb6);
1330 executeFlows.add(ebb6);
1332 List<ExecuteBuildingBlock> sorted =
1333 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1334 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1335 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1339 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1340 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1341 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1342 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1343 northBoundRequest.setOrchestrationFlowList(orchFlows);
1344 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1345 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1347 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1348 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1349 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1350 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1351 WorkflowType.VNF, false, "my-custom-cloud-owner");
1352 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1353 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1354 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1355 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1356 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1357 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1358 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1359 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1360 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1361 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1365 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1366 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1367 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1368 northBoundRequest.setOrchestrationFlowList(orchFlows);
1369 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1370 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1372 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1373 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1374 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1378 public void extractResourceIdAndTypeFromUriTest() {
1379 String uri = "/v6/serviceInstances/123";
1380 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1381 String uri3 = "/v6/serviceInstances";
1382 String uri4 = "/v6/serviceInstances/assign";
1383 String uri5 = "'/v6/serviceInstances/123/vnfs";
1384 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1385 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1386 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1387 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1388 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1389 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1390 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1391 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1392 assertEquals(expected1.getResourceId(), result.getResourceId());
1393 assertEquals(expected1.getResourceType(), result.getResourceType());
1394 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1395 assertEquals(expected2.getResourceId(), result.getResourceId());
1396 assertEquals(expected2.getResourceType(), result.getResourceType());
1397 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1398 assertEquals("Service", result.getResourceType().toString());
1399 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1400 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1401 assertEquals("Service", result.getResourceType().toString());
1402 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1403 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1404 assertEquals("Vnf", result.getResourceType().toString());
1405 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1406 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1407 assertEquals(expected3.getResourceId(), result.getResourceId());
1408 assertEquals(expected3.getResourceType(), result.getResourceType());
1409 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1410 assertEquals(expected4.getResourceId(), result.getResourceId());
1411 assertEquals(expected4.getResourceType(), result.getResourceType());
1412 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1413 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1414 assertEquals("VfModule", result.getResourceType().toString());
1419 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1420 this.expectedException.expect(IllegalArgumentException.class);
1421 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1422 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1426 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1427 this.expectedException.expect(IllegalArgumentException.class);
1428 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1429 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1433 public void populateResourceIdsFromApiHandlerTest() {
1434 execution.setVariable("serviceInstanceId", "123");
1435 execution.setVariable("vnfId", "888");
1436 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1437 assertEquals("123", x.getServiceInstanceId());
1438 assertEquals("888", x.getVnfId());
1439 assertNull(x.getVolumeGroupId());
1443 public void validateResourceIdInAAITest() throws Exception {
1445 RequestDetails reqDetails = new RequestDetails();
1446 SubscriberInfo subInfo = new SubscriberInfo();
1447 subInfo.setGlobalSubscriberId("id123");
1448 reqDetails.setSubscriberInfo(subInfo);
1449 RequestParameters reqParams = new RequestParameters();
1450 reqParams.setSubscriptionServiceType("subServiceType123");
1451 reqDetails.setRequestParameters(reqParams);
1452 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1453 ServiceInstance si = new ServiceInstance();
1454 si.setServiceInstanceId("siId123");
1455 Optional<ServiceInstance> siOp = Optional.of(si);
1456 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1457 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1458 .thenReturn(Optional.empty());
1459 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1460 reqDetails, workflowResourceIds);
1461 assertEquals("siId123", id);
1462 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1463 reqDetails, workflowResourceIds);
1464 assertEquals("generatedId123", id2);
1467 L3Network network = new L3Network();
1468 network.setNetworkId("id123");
1469 network.setNetworkName("name123");
1470 workflowResourceIds.setServiceInstanceId("siId123");
1471 Optional<L3Network> opNetwork = Optional.of(network);
1472 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1473 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1474 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails,
1475 workflowResourceIds);
1476 assertEquals("id123", id);
1477 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails,
1478 workflowResourceIds);
1479 assertEquals("generatedId123", id2);
1482 GenericVnf vnf = new GenericVnf();
1483 vnf.setVnfId("id123");
1484 vnf.setVnfName("vnfName123");
1485 Optional<GenericVnf> opVnf = Optional.of(vnf);
1486 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "name123")).thenReturn(opVnf);
1487 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1488 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails,
1489 workflowResourceIds);
1490 assertEquals("id123", id);
1491 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1492 workflowResourceIds);
1493 assertEquals("generatedId123", id2);
1496 VfModules vfModules = new VfModules();
1497 VfModule vfModule = new VfModule();
1498 vfModule.setVfModuleId("id123");
1499 vfModule.setVfModuleName("name123");
1500 vfModules.getVfModule().add(vfModule);
1501 vnf.setVfModules(vfModules);
1502 workflowResourceIds.setVnfId("id123");
1503 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1504 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails,
1505 workflowResourceIds);
1506 assertEquals("id123", id);
1508 GenericVnf vnf2 = new GenericVnf();
1509 VfModules vfModules2 = new VfModules();
1510 VfModule vfModule2 = new VfModule();
1511 vfModule2.setVfModuleId("id123");
1512 vfModule2.setVfModuleName("name123");
1513 vfModules2.getVfModule().add(vfModule2);
1514 vnf2.setVfModules(vfModules2);
1515 workflowResourceIds.setVnfId("id111");
1516 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1517 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails,
1518 workflowResourceIds);
1519 assertEquals("generatedId123", id2);
1522 VolumeGroup volumeGroup = new VolumeGroup();
1523 volumeGroup.setVolumeGroupId("id123");
1524 volumeGroup.setVolumeGroupName("name123");
1525 workflowResourceIds.setVnfId("id123");
1526 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1527 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1528 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
1529 workflowResourceIds);
1530 assertEquals("id123", id);
1532 workflowResourceIds.setVnfId("id444");
1533 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1534 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1535 .thenReturn(opVolumeGroup);
1536 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444", "111111")).thenReturn(Optional.empty());
1537 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails,
1538 workflowResourceIds);
1539 assertEquals("id123", id2);
1543 public void handleRuntimeExceptionTest() {
1544 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1545 execution.setVariable("testProcessKey", "testProcessKeyValue");
1547 workflowAction.handleRuntimeException(execution);
1548 } catch (BpmnError wfe) {
1549 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1555 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
1556 execution.setVariable("testProcessKey", "testProcessKeyValue");
1557 Service service = new Service();
1558 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1559 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1560 networkCust.setModelCustomizationUUID("123");
1561 networkCustomizations.add(networkCust);
1562 service.setNetworkCustomizations(networkCustomizations);
1563 NetworkCollectionResourceCustomization collectionResourceCustomization =
1564 new NetworkCollectionResourceCustomization();
1565 collectionResourceCustomization.setModelCustomizationUUID("123");
1566 CollectionResource collectionResource = new CollectionResource();
1567 collectionResource.setToscaNodeType("NetworkCollection");
1568 InstanceGroup instanceGroup = new InstanceGroup();
1569 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1570 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1571 new CollectionResourceInstanceGroupCustomization();
1572 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1573 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1574 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1575 collectionResource.setInstanceGroup(instanceGroup);
1576 collectionResourceCustomization.setCollectionResource(collectionResource);;
1577 service.setModelUUID("abc");
1578 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1579 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1580 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1581 doReturn(collectionResourceCustomization).when(catalogDbClient)
1582 .getNetworkCollectionResourceCustomizationByID("123");
1583 String bpmnRequest = new String(Files
1584 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1585 ObjectMapper mapper = new ObjectMapper();
1586 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1587 List<Resource> resourceCounter = new ArrayList<>();
1588 thrown.expect(BpmnError.class);
1589 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1590 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
1594 public void sortVfModulesByBaseFirstTest() {
1595 List<Resource> resources = new ArrayList<>();
1596 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1597 resource1.setBaseVfModule(false);
1598 resources.add(resource1);
1599 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1600 resource2.setBaseVfModule(false);
1601 resources.add(resource2);
1602 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1603 resource3.setBaseVfModule(true);
1604 resources.add(resource3);
1605 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1606 assertEquals("333", result.get(0).getResourceId());
1607 assertEquals("222", result.get(1).getResourceId());
1608 assertEquals("111", result.get(2).getResourceId());
1612 public void sortVfModulesByBaseLastTest() {
1613 List<Resource> resources = new ArrayList<>();
1614 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1615 resource1.setBaseVfModule(true);
1616 resources.add(resource1);
1617 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1618 resource2.setBaseVfModule(false);
1619 resources.add(resource2);
1620 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1621 resource3.setBaseVfModule(false);
1622 resources.add(resource3);
1623 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1624 assertEquals("333", result.get(0).getResourceId());
1625 assertEquals("222", result.get(1).getResourceId());
1626 assertEquals("111", result.get(2).getResourceId());
1630 public void findCatalogNetworkCollectionTest() {
1631 Service service = new Service();
1632 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1633 networkCustomization.setModelCustomizationUUID("123");
1634 service.getCollectionResourceCustomizations().add(networkCustomization);
1635 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1636 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1637 assertNotNull(customization);
1641 public void findCatalogNetworkCollectionEmptyTest() {
1642 Service service = new Service();
1643 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1644 networkCustomization.setModelCustomizationUUID("123");
1645 service.getCollectionResourceCustomizations().add(networkCustomization);
1646 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1647 assertNull(customization);
1651 public void findCatalogNetworkCollectionMoreThanOneTest() {
1652 Service service = new Service();
1653 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1654 networkCustomization1.setModelCustomizationUUID("123");
1655 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1656 networkCustomization2.setModelCustomizationUUID("321");
1657 service.getCollectionResourceCustomizations().add(networkCustomization1);
1658 service.getCollectionResourceCustomizations().add(networkCustomization2);
1659 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1660 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1661 workflowAction.findCatalogNetworkCollection(execution, service);
1662 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1663 execution.getVariable("WorkflowActionErrorMessage"));
1667 public void verifyLackOfNullPointerExceptionForNullResource() {
1668 ExecuteBuildingBlock result = null;
1670 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
1671 false, null, null, null, false, null, true);
1672 } catch (NullPointerException e) {
1673 fail("NullPointerException should not be thrown when 'resource' is null");
1675 assertNotNull(result);
1679 public void traverseAAIServiceTest() {
1680 List<Resource> resourceCounter = new ArrayList<>();
1681 String resourceId = "si0";
1682 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1684 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1685 serviceInstanceAAI.setServiceInstanceId(resourceId);
1687 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
1695 Configuration config = new Configuration();
1696 config.setConfigurationId("testConfigurationId2");
1697 serviceInstance.getConfigurations().add(config);
1699 Relationship relationship1 = new Relationship();
1700 relationship1.setRelatedTo("vnfc");
1701 RelationshipList relationshipList1 = new RelationshipList();
1702 relationshipList1.getRelationship().add(relationship1);
1704 Relationship relationship2 = new Relationship();
1705 relationship2.setRelatedTo("vpn-binding");
1706 RelationshipList relationshipList2 = new RelationshipList();
1707 relationshipList2.getRelationship().add(relationship2);
1709 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
1710 aaiConfiguration1.setConfigurationId("testConfigurationId");
1711 aaiConfiguration1.setRelationshipList(relationshipList1);
1713 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
1714 aaiConfiguration2.setConfigurationId("testConfigurationId2");
1715 aaiConfiguration2.setRelationshipList(relationshipList1);
1718 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
1719 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1720 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
1721 .getConfiguration("testConfigurationId");
1722 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
1723 .getConfiguration("testConfigurationId2");
1724 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
1725 assertEquals(8, resourceCounter.size());
1726 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
1727 } catch (Exception e) {
1728 fail("Unexpected exception was thrown.");
1732 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
1733 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
1734 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
1735 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
1736 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
1737 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
1738 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
1739 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
1740 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
1744 private List<OrchestrationFlow> createFlowList(String... flowNames) {
1745 List<OrchestrationFlow> result = new ArrayList<>();
1746 for (String flowName : flowNames) {
1747 OrchestrationFlow orchFlow = new OrchestrationFlow();
1748 orchFlow.setFlowName(flowName);
1749 result.add(orchFlow);
1754 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
1755 for (int i = 0; i < ebbs.size(); i++) {
1756 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);