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.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertNull;
31 import static org.junit.Assert.assertThat;
32 import static org.junit.Assert.assertTrue;
33 import static org.junit.Assert.fail;
34 import static org.mockito.ArgumentMatchers.anyObject;
35 import static org.mockito.ArgumentMatchers.anyString;
36 import static org.mockito.ArgumentMatchers.isA;
37 import static org.mockito.Mockito.doReturn;
38 import static org.mockito.Mockito.when;
39 import com.fasterxml.jackson.databind.ObjectMapper;
40 import java.io.IOException;
41 import java.net.MalformedURLException;
42 import java.nio.file.Files;
43 import java.nio.file.Paths;
44 import java.util.ArrayList;
45 import java.util.Arrays;
46 import java.util.HashSet;
47 import java.util.List;
48 import java.util.Optional;
50 import java.util.UUID;
51 import org.camunda.bpm.engine.delegate.BpmnError;
52 import org.camunda.bpm.engine.delegate.DelegateExecution;
53 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
54 import org.javatuples.Pair;
55 import org.junit.Before;
56 import org.junit.Ignore;
57 import org.junit.Rule;
58 import org.junit.Test;
59 import org.junit.rules.ExpectedException;
60 import org.mockito.InjectMocks;
61 import org.mockito.Mock;
62 import org.mockito.Spy;
63 import org.onap.aai.domain.yang.GenericVnf;
64 import org.onap.aai.domain.yang.L3Network;
65 import org.onap.aai.domain.yang.Relationship;
66 import org.onap.aai.domain.yang.RelationshipList;
67 import org.onap.aai.domain.yang.ServiceInstance;
68 import org.onap.aai.domain.yang.VfModule;
69 import org.onap.aai.domain.yang.VfModules;
70 import org.onap.aai.domain.yang.VolumeGroup;
71 import org.onap.so.bpmn.BaseTaskTest;
72 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
73 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
74 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
75 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
76 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
77 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
78 import org.onap.so.client.aai.AAIObjectType;
79 import org.onap.so.client.aai.entities.AAIResultWrapper;
80 import org.onap.so.client.aai.entities.Relationships;
81 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
82 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
83 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
84 import org.onap.so.db.catalog.beans.CollectionResource;
85 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
86 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
87 import org.onap.so.db.catalog.beans.ConfigurationResource;
88 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
89 import org.onap.so.db.catalog.beans.CvnfcCustomization;
90 import org.onap.so.db.catalog.beans.HeatEnvironment;
91 import org.onap.so.db.catalog.beans.HeatTemplate;
92 import org.onap.so.db.catalog.beans.InstanceGroup;
93 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
94 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
95 import org.onap.so.db.catalog.beans.Service;
96 import org.onap.so.db.catalog.beans.VfModuleCustomization;
97 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
98 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
99 import org.onap.so.serviceinstancebeans.RequestDetails;
100 import org.onap.so.serviceinstancebeans.RequestParameters;
101 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
102 import org.onap.so.serviceinstancebeans.SubscriberInfo;
103 import org.springframework.core.env.Environment;
105 public class WorkflowActionTest extends BaseTaskTest {
109 protected Environment environment;
111 protected WorkflowAction workflowAction;
112 private DelegateExecution execution;
117 protected WorkflowAction SPY_workflowAction;
120 public ExpectedException thrown = ExpectedException.none();
122 private String RESOURCE_PATH = "src/test/resources/__files/";
125 public void before() throws Exception {
126 execution = new DelegateExecutionFake();
127 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
128 servInstance.setServiceInstanceId("TEST");
129 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
130 workflowAction.setBbInputSetupUtils(bbSetupUtils);
131 workflowAction.setBbInputSetup(bbInputSetup);
138 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
139 String gAction = "createInstance";
140 String resource = "Network";
141 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
142 execution.setVariable("requestAction", gAction);
144 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
145 execution.setVariable("bpmnRequest", bpmnRequest);
146 execution.setVariable("aLaCarte", true);
147 execution.setVariable("apiVersion", "7");
148 execution.setVariable("requestUri", "v6/networks/123");
150 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
151 List<OrchestrationFlow> orchFlows =
152 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
153 northBoundRequest.setOrchestrationFlowList(orchFlows);
155 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
156 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
157 workflowAction.selectExecutionList(execution);
158 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
159 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
163 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
164 String gAction = "deleteInstance";
165 String resource = "Network";
166 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
167 execution.setVariable("requestAction", gAction);
169 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
170 execution.setVariable("bpmnRequest", bpmnRequest);
171 execution.setVariable("aLaCarte", true);
172 execution.setVariable("apiVersion", "7");
173 execution.setVariable("requestUri", "v6/networks/123");
175 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
176 List<OrchestrationFlow> orchFlows =
177 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
178 northBoundRequest.setOrchestrationFlowList(orchFlows);
180 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
181 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
182 workflowAction.selectExecutionList(execution);
183 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
184 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
188 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
189 String gAction = "createInstance";
190 String resource = "Service";
191 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
192 execution.setVariable("requestAction", gAction);
194 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
195 execution.setVariable("bpmnRequest", bpmnRequest);
196 execution.setVariable("aLaCarte", true);
197 execution.setVariable("apiVersion", "7");
198 execution.setVariable("requestUri", "v6/serviceInstances/123");
201 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
202 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
203 northBoundRequest.setOrchestrationFlowList(orchFlows);
205 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
206 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
207 workflowAction.selectExecutionList(execution);
208 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
209 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
213 * SERVICE MACRO TESTS
216 public void selectExecutionListServiceMacroAssignTest() throws Exception {
217 String gAction = "assignInstance";
218 String resource = "Service";
219 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
220 execution.setVariable("requestAction", gAction);
222 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
223 execution.setVariable("bpmnRequest", bpmnRequest);
224 execution.setVariable("aLaCarte", false);
225 execution.setVariable("apiVersion", "7");
226 execution.setVariable("requestUri", "v6/serviceInstances/123");
229 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
230 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
231 "AssignVolumeGroupBB", "AssignVfModuleBB");
232 northBoundRequest.setOrchestrationFlowList(orchFlows);
234 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
235 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
236 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
237 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
238 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
239 HeatTemplate volumeHeatTemplate = new HeatTemplate();
240 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
241 vfModuleCustomization.setVfModule(vfModule);
243 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
244 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
245 HeatEnvironment heatEnvironment = new HeatEnvironment();
246 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
247 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
248 HeatTemplate moduleHeatTemplate = new HeatTemplate();
249 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
250 vfModuleCustomization2.setVfModule(vfModule2);
252 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
253 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
255 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
256 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
257 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
258 .thenReturn(vfModuleCustomization);
259 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
260 .thenReturn(vfModuleCustomization2);
261 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
262 .thenReturn(vfModuleCustomization3);
263 workflowAction.selectExecutionList(execution);
264 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
265 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
266 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
270 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
271 String gAction = "assignInstance";
272 String resource = "Service";
273 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
274 execution.setVariable("requestAction", gAction);
275 String bpmnRequest = new String(
276 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
277 execution.setVariable("bpmnRequest", bpmnRequest);
278 execution.setVariable("aLaCarte", false);
279 execution.setVariable("apiVersion", "7");
280 execution.setVariable("requestUri", "v6/serviceInstances/123");
283 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
284 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
285 "AssignVolumeGroupBB", "AssignVfModuleBB");
286 northBoundRequest.setOrchestrationFlowList(orchFlows);
288 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
289 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
290 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
291 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
292 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
293 HeatTemplate volumeHeatTemplate = new HeatTemplate();
294 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
295 vfModuleCustomization.setVfModule(vfModule);
297 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
298 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
299 HeatEnvironment heatEnvironment = new HeatEnvironment();
300 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
301 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
302 HeatTemplate moduleHeatTemplate = new HeatTemplate();
303 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
304 vfModuleCustomization2.setVfModule(vfModule2);
306 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
307 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
309 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
310 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
311 false, "att-aic")).thenReturn(northBoundRequest);
312 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
313 .thenReturn(vfModuleCustomization);
314 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
315 .thenReturn(vfModuleCustomization2);
316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
317 .thenReturn(vfModuleCustomization3);
318 workflowAction.selectExecutionList(execution);
319 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
320 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
321 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
325 public void selectExecutionListServiceMacroActivateTest() throws Exception {
326 String gAction = "activateInstance";
327 String resource = "Service";
328 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
329 execution.setVariable("requestAction", gAction);
330 String bpmnRequest = new String(Files
331 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
332 execution.setVariable("bpmnRequest", bpmnRequest);
333 execution.setVariable("aLaCarte", false);
334 execution.setVariable("apiVersion", "7");
335 execution.setVariable("requestUri", "v6/serviceInstances/si0");
338 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
339 List<OrchestrationFlow> orchFlows =
340 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
341 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
342 northBoundRequest.setOrchestrationFlowList(orchFlows);
344 ServiceInstance serviceInstanceAAI = new ServiceInstance();
345 serviceInstanceAAI.setServiceInstanceId("si0");
346 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
347 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
348 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
349 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
350 vnf.setVnfId("vnf0");
353 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
354 vnf.getVfModules().add(vfModule);
355 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
356 vnf.getVfModules().add(vfModule2);
358 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
359 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
360 volumeGroup.setVolumeGroupId("volumeGroup0");
361 vnf.getVolumeGroups().add(volumeGroup);
363 serviceInstanceMSO.getVnfs().add(vnf);
365 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
366 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
367 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
368 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
369 workflowAction.selectExecutionList(execution);
370 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
371 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
372 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
373 "ActivateServiceInstanceBB");
374 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
375 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
376 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
377 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
378 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
379 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
380 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
381 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
386 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
387 String gAction = "deactivateInstance";
388 String resource = "Service";
389 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
390 execution.setVariable("requestAction", gAction);
391 String bpmnRequest = new String(Files
392 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
393 execution.setVariable("bpmnRequest", bpmnRequest);
394 execution.setVariable("aLaCarte", false);
395 execution.setVariable("apiVersion", "7");
396 execution.setVariable("requestUri", "v6/serviceInstances/123");
399 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
400 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
401 northBoundRequest.setOrchestrationFlowList(orchFlows);
403 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
404 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
405 workflowAction.selectExecutionList(execution);
406 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
407 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
411 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
412 String gAction = "createInstance";
413 String resource = "Service";
414 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
415 execution.setVariable("requestAction", gAction);
416 String bpmnRequest = new String(Files
417 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
418 execution.setVariable("bpmnRequest", bpmnRequest);
419 execution.setVariable("aLaCarte", false);
420 execution.setVariable("apiVersion", "7");
421 execution.setVariable("requestUri", "v6/serviceInstances/123");
424 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
425 northBoundRequest.setIsToplevelflow(true);
426 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
427 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
428 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
429 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
430 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
431 northBoundRequest.setOrchestrationFlowList(orchFlows);
433 Service service = new Service();
434 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
435 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
436 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
437 workflowAction.selectExecutionList(execution);
438 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
439 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
443 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
444 String gAction = "createInstance";
445 String resource = "Service";
446 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
447 execution.setVariable("requestAction", gAction);
448 String bpmnRequest = new String(Files
449 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
450 execution.setVariable("bpmnRequest", bpmnRequest);
451 execution.setVariable("aLaCarte", false);
452 execution.setVariable("apiVersion", "7");
453 execution.setVariable("requestUri", "v6/serviceInstances/123");
456 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
457 northBoundRequest.setIsToplevelflow(true);
458 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
459 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
460 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
461 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
462 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
463 northBoundRequest.setOrchestrationFlowList(orchFlows);
465 Service service = new Service();
466 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
467 networkCustomization.setModelCustomizationUUID("1234");
468 service.getNetworkCustomizations().add(networkCustomization);
469 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
470 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
471 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
472 workflowAction.selectExecutionList(execution);
473 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
474 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
475 "ActivateNetworkBB", "ActivateServiceInstanceBB");
479 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
480 String gAction = "createInstance";
481 String resource = "Service";
482 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
483 execution.setVariable("requestAction", gAction);
484 String bpmnRequest = new String(Files
485 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
486 execution.setVariable("bpmnRequest", bpmnRequest);
487 execution.setVariable("aLaCarte", false);
488 execution.setVariable("apiVersion", "7");
489 execution.setVariable("requestUri", "v6/serviceInstances/123");
492 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
493 northBoundRequest.setIsToplevelflow(true);
494 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
495 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
496 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
497 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
498 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
499 northBoundRequest.setOrchestrationFlowList(orchFlows);
501 Service service = new Service();
502 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
503 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
504 networkCust.setModelCustomizationUUID("123");
505 networkCustomizations.add(networkCust);
506 service.setNetworkCustomizations(networkCustomizations);
507 NetworkCollectionResourceCustomization collectionResourceCustomization =
508 new NetworkCollectionResourceCustomization();
509 collectionResourceCustomization.setModelCustomizationUUID("123");
511 CollectionResource collectionResource = new CollectionResource();
512 collectionResource.setToscaNodeType("NetworkCollection");
513 InstanceGroup instanceGroup = new InstanceGroup();
514 instanceGroup.setToscaNodeType("NetworkCollectionResource");
515 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
516 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
517 new CollectionNetworkResourceCustomization();
518 collectionNetworkResourceCust.setModelCustomizationUUID("123");
519 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
520 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
521 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
522 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
523 new CollectionResourceInstanceGroupCustomization();
524 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
525 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
526 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
527 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
528 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
529 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
530 collectionResource.setInstanceGroup(instanceGroup);
531 collectionResourceCustomization.setCollectionResource(collectionResource);;
532 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
533 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
534 doReturn(collectionResourceCustomization).when(catalogDbClient)
535 .getNetworkCollectionResourceCustomizationByID("123");
536 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
537 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
538 workflowAction.selectExecutionList(execution);
539 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
540 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
541 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
542 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
543 "ActivateServiceInstanceBB");
544 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
545 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
546 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
547 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
548 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
550 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
553 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
554 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
555 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
556 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
557 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
559 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
562 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
564 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
565 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
566 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
568 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
574 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
575 String gAction = "createInstance";
576 String resource = "Service";
577 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
578 execution.setVariable("requestAction", gAction);
580 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
581 execution.setVariable("bpmnRequest", bpmnRequest);
582 execution.setVariable("aLaCarte", false);
583 execution.setVariable("apiVersion", "7");
584 execution.setVariable("requestUri", "v6/serviceInstances/123");
587 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
588 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
589 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
590 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
591 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
592 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
593 northBoundRequest.setOrchestrationFlowList(orchFlows);
595 Service service = new Service();
596 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
598 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
599 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
600 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
601 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
602 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
603 HeatTemplate volumeHeatTemplate = new HeatTemplate();
604 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
605 vfModuleCustomization.setVfModule(vfModule);
607 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
608 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
609 HeatEnvironment heatEnvironment = new HeatEnvironment();
610 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
611 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
612 HeatTemplate moduleHeatTemplate = new HeatTemplate();
613 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
614 vfModuleCustomization2.setVfModule(vfModule2);
616 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
617 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
619 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
620 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
621 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
622 .thenReturn(vfModuleCustomization);
623 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
624 .thenReturn(vfModuleCustomization2);
625 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
626 .thenReturn(vfModuleCustomization3);
627 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
628 workflowAction.selectExecutionList(execution);
629 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
630 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
631 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
632 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
633 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
634 "ActivateServiceInstanceBB");
635 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
636 int randomUUIDLength = UUID.randomUUID().toString().length();
637 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
638 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
639 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
640 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
641 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
642 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
643 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
644 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
647 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
651 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
652 assertEquals(true, execution.getVariable("homing"));
656 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
657 String gAction = "deleteInstance";
658 String resource = "Service";
659 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
660 execution.setVariable("requestAction", gAction);
661 String bpmnRequest = new String(Files
662 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
663 execution.setVariable("bpmnRequest", bpmnRequest);
664 execution.setVariable("aLaCarte", false);
665 execution.setVariable("apiVersion", "7");
666 execution.setVariable("requestUri", "v6/serviceInstances/123");
669 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
670 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
671 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
672 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
673 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
674 northBoundRequest.setOrchestrationFlowList(orchFlows);
676 ServiceInstance serviceInstanceAAI = new ServiceInstance();
677 serviceInstanceAAI.setServiceInstanceId("aaisi123");
678 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
679 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
680 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
681 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
682 vnf.setVnfId("vnfId123");
684 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
685 vnf.getVfModules().add(vfModule);
686 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
687 vnf.getVfModules().add(vfModule2);
689 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
690 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
691 volumeGroup.setVolumeGroupId("vg123");
692 vnf.getVolumeGroups().add(volumeGroup);
694 serviceInstanceMSO.getVnfs().add(vnf);
696 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
697 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
698 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
699 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
700 workflowAction.selectExecutionList(execution);
701 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
702 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
703 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
704 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
705 "UnassignVnfBB", "UnassignServiceInstanceBB");
709 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
710 String gAction = "unassignInstance";
711 String resource = "Service";
712 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
713 execution.setVariable("requestAction", gAction);
714 String bpmnRequest = new String(Files
715 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
716 execution.setVariable("bpmnRequest", bpmnRequest);
717 execution.setVariable("aLaCarte", false);
718 execution.setVariable("apiVersion", "7");
719 execution.setVariable("requestUri", "v6/serviceInstances/123");
722 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
723 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
724 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
725 northBoundRequest.setOrchestrationFlowList(orchFlows);
727 ServiceInstance serviceInstanceAAI = new ServiceInstance();
728 serviceInstanceAAI.setServiceInstanceId("aaisi123");
729 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
730 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
731 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
732 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
733 vnf.setVnfId("vnfId123");
735 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
736 vnf.getVfModules().add(vfModule);
737 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
738 vnf.getVfModules().add(vfModule2);
740 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
741 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
742 volumeGroup.setVolumeGroupId("vg123");
743 vnf.getVolumeGroups().add(volumeGroup);
745 serviceInstanceMSO.getVnfs().add(vnf);
747 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
748 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
749 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
750 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
751 workflowAction.selectExecutionList(execution);
752 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
753 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
754 "UnassignVnfBB", "UnassignServiceInstanceBB");
758 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
759 String gAction = "deleteInstance";
760 String resource = "Service";
761 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
762 execution.setVariable("requestAction", gAction);
763 String bpmnRequest = new String(Files
764 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
765 execution.setVariable("bpmnRequest", bpmnRequest);
766 execution.setVariable("aLaCarte", false);
767 execution.setVariable("apiVersion", "7");
768 execution.setVariable("requestUri", "v6/serviceInstances/123");
771 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
772 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
773 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
774 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
775 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
776 northBoundRequest.setOrchestrationFlowList(orchFlows);
778 ServiceInstance serviceInstanceAAI = new ServiceInstance();
779 serviceInstanceAAI.setServiceInstanceId("aaisi123");
780 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
781 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
783 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
784 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
785 network.setNetworkId("123");
786 serviceInstanceMSO.getNetworks().add(network);
787 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
788 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
789 network2.setNetworkId("321");
790 serviceInstanceMSO.getNetworks().add(network2);
792 Collection collection = new Collection();
793 serviceInstanceMSO.setCollection(collection);
795 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
796 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
797 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
798 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
799 workflowAction.selectExecutionList(execution);
800 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
801 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
802 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
803 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
807 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
808 String gAction = "recreateInstance";
809 String resource = "Vnf";
810 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
811 execution.setVariable("requestAction", gAction);
813 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
814 execution.setVariable("bpmnRequest", bpmnRequest);
815 execution.setVariable("aLaCarte", false);
816 execution.setVariable("apiVersion", "7");
817 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
818 execution.setVariable("serviceInstanceId", "123");
819 execution.setVariable("vnfId", "1234");
821 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
822 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
823 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
824 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
825 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
826 "AAIUnsetVnfInMaintBB");
827 northBoundRequest.setOrchestrationFlowList(orchFlows);
829 ServiceInstance serviceInstanceAAI = new ServiceInstance();
830 serviceInstanceAAI.setServiceInstanceId("123");
831 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
832 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
833 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
834 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
835 vnf.setVnfId("1234");
837 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
838 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
839 vfModule.setVfModuleId("vfModule1");
840 vnf.getVfModules().add(vfModule);
841 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
842 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
843 vfModule2.setVfModuleId("vfModule2");
844 vnf.getVfModules().add(vfModule2);
846 serviceInstanceMSO.getVnfs().add(vnf);
848 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
849 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
850 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
851 false, "cloud-owner")).thenReturn(northBoundRequest);
852 workflowAction.selectExecutionList(execution);
853 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
854 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
855 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
856 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
857 "AAIUnsetVnfInMaintBB");
861 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
862 String gAction = "replaceInstance";
863 String resource = "Vnf";
864 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
865 execution.setVariable("requestAction", gAction);
867 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
868 execution.setVariable("bpmnRequest", bpmnRequest);
869 execution.setVariable("aLaCarte", false);
870 execution.setVariable("apiVersion", "7");
871 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
872 execution.setVariable("serviceInstanceId", "123");
873 execution.setVariable("vnfId", "1234");
875 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
876 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
877 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
878 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
879 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
880 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
881 "AAIUnsetVnfInMaintBB");
882 northBoundRequest.setOrchestrationFlowList(orchFlows);
884 ServiceInstance serviceInstanceAAI = new ServiceInstance();
885 serviceInstanceAAI.setServiceInstanceId("123");
886 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
887 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
888 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
889 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
890 vnf.setVnfId("1234");
891 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
892 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
893 vfModule.setVfModuleId("vfModule1");
894 vnf.getVfModules().add(vfModule);
895 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
896 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
897 vfModule2.setVfModuleId("vfModule2");
898 vnf.getVfModules().add(vfModule2);
899 serviceInstanceMSO.getVnfs().add(vnf);
900 VfModule vfModuleAAI = new VfModule();
901 vfModuleAAI.setVfModuleId("vfModule2");
902 RelationshipList relationshipList = new RelationshipList();
903 Relationship relationship = new Relationship();
904 relationshipList.getRelationship().add(relationship);
905 vfModuleAAI.setRelationshipList(relationshipList);
906 Relationships relationships = new Relationships("abc");
907 Configuration config = new Configuration();
908 config.setConfigurationId("configId");
909 Optional<Configuration> configOp = Optional.of(config);
910 Optional<Relationships> relationshipsOp = Optional.of(relationships);
912 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
913 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
914 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
915 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
916 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
917 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
918 false, "cloud-owner")).thenReturn(northBoundRequest);
919 workflowAction.selectExecutionList(execution);
920 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
921 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
922 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
923 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
924 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
925 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
926 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
931 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
932 String gAction = "createInstance";
933 String resource = "NetworkCollection";
934 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
935 execution.setVariable("requestAction", gAction);
936 String bpmnRequest = new String(
937 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
938 execution.setVariable("bpmnRequest", bpmnRequest);
939 execution.setVariable("aLaCarte", false);
940 execution.setVariable("apiVersion", "7");
941 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
944 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
945 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
946 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
947 northBoundRequest.setOrchestrationFlowList(orchFlows);
949 Service service = new Service();
950 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
951 CollectionResource collectionResource = new CollectionResource();
952 collectionResource.setToscaNodeType("Data NetworkCollection Data");
953 collectionResourceCustomization.setCollectionResource(collectionResource);
954 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
956 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
957 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
958 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
959 workflowAction.selectExecutionList(execution);
960 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
961 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
962 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
963 "ActivateNetworkCollectionBB");
968 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
969 String gAction = "deleteInstance";
970 String resource = "NetworkCollection";
971 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
972 execution.setVariable("requestAction", gAction);
973 String bpmnRequest = new String(
974 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
975 execution.setVariable("bpmnRequest", bpmnRequest);
976 execution.setVariable("aLaCarte", false);
977 execution.setVariable("apiVersion", "7");
978 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
980 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
981 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
982 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
983 northBoundRequest.setOrchestrationFlowList(orchFlows);
985 Service service = new Service();
986 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
987 CollectionResource collectionResource = new CollectionResource();
988 collectionResource.setToscaNodeType("Data NetworkCollection Data");
989 collectionResourceCustomization.setCollectionResource(collectionResource);
990 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
992 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
993 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
994 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
995 workflowAction.selectExecutionList(execution);
996 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
997 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
998 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
999 "DeleteNetworkCollectionBB");
1003 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1004 String gAction = "createInstance";
1005 String resource = "VfModule";
1006 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1007 execution.setVariable("requestAction", gAction);
1008 String bpmnRequest =
1009 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1010 execution.setVariable("bpmnRequest", bpmnRequest);
1011 execution.setVariable("aLaCarte", true);
1012 execution.setVariable("apiVersion", "7");
1013 execution.setVariable("requestUri",
1014 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1017 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1018 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1019 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1020 northBoundRequest.setOrchestrationFlowList(orchFlows);
1022 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1023 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1024 workflowAction.selectExecutionList(execution);
1025 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1026 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1030 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1031 String gAction = "createInstance";
1032 String resource = "VfModule";
1033 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1034 execution.setVariable("requestAction", gAction);
1035 String bpmnRequest =
1036 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1037 execution.setVariable("bpmnRequest", bpmnRequest);
1038 execution.setVariable("aLaCarte", true);
1039 execution.setVariable("apiVersion", "7");
1040 execution.setVariable("requestUri",
1041 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1043 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1044 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1045 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1046 northBoundRequest.setOrchestrationFlowList(orchFlows);
1048 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1049 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1050 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1051 new CvnfcConfigurationCustomization();
1052 ConfigurationResource configurationResource = new ConfigurationResource();
1053 configurationResource.setToscaNodeType("FabricConfiguration");
1054 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1055 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1056 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1057 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1058 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1059 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1060 cvnfcCustomization.setDescription("description");
1061 cvnfcCustomizations.add(cvnfcCustomization);
1063 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1064 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1065 new CvnfcConfigurationCustomization();
1066 ConfigurationResource configurationResource2 = new ConfigurationResource();
1067 configurationResource2.setToscaNodeType("FabricConfiguration");
1068 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1069 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1070 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1071 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1072 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1073 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1074 cvnfcCustomization2.setDescription("description2");
1075 cvnfcCustomizations.add(cvnfcCustomization2);
1077 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1078 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1079 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1080 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1081 workflowAction.selectExecutionList(execution);
1082 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1083 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1084 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1085 "ActivateFabricConfigurationBB");
1089 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1090 String gAction = "deleteInstance";
1091 String resource = "VfModule";
1092 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1093 execution.setVariable("requestAction", gAction);
1094 String bpmnRequest =
1095 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1096 execution.setVariable("bpmnRequest", bpmnRequest);
1097 execution.setVariable("aLaCarte", true);
1098 execution.setVariable("apiVersion", "7");
1099 execution.setVariable("requestUri",
1100 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1102 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1103 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1104 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1105 northBoundRequest.setOrchestrationFlowList(orchFlows);
1107 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1108 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1110 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1111 vnf.setVnfId("vnf0");
1112 vnf.setModelCustomizationId("modelCustomizationId");
1113 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1115 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1116 vfModule.setModelCustomizationId("modelCustomizationId");
1117 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1119 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1120 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1121 vnfc.setModelInvariantId("modelInvariantId");
1122 vnfc.setVnfcName("testVnfcName");
1124 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1127 List<org.onap.aai.domain.yang.Configuration> configurations =
1128 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1129 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1130 configuration.setConfigurationId("configurationId");
1131 configuration.setModelCustomizationId("modelCustimizationId");
1132 configuration.setConfigurationName("testConfigurationName");
1133 configurations.add(configuration);
1134 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1137 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1139 SPY_workflowAction.selectExecutionList(execution);
1140 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1141 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1142 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1146 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1147 String gAction = "deleteInstance";
1148 String resource = "VfModule";
1149 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1150 execution.setVariable("requestAction", gAction);
1151 String bpmnRequest =
1152 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1153 execution.setVariable("bpmnRequest", bpmnRequest);
1154 execution.setVariable("aLaCarte", true);
1155 execution.setVariable("apiVersion", "7");
1156 execution.setVariable("requestUri",
1157 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1159 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1160 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1161 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1162 northBoundRequest.setOrchestrationFlowList(orchFlows);
1164 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1165 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1167 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1168 vnf.setVnfId("vnf0");
1169 vnf.setModelCustomizationId("modelCustomizationId");
1170 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1172 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1173 vfModule.setModelCustomizationId("modelCustomizationId");
1174 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1176 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1177 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1178 vnfc.setModelInvariantId("modelInvariantId");
1179 vnfc.setVnfcName("testVnfcName");
1181 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1184 List<org.onap.aai.domain.yang.Configuration> configurations =
1185 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1186 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1187 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1190 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1192 SPY_workflowAction.selectExecutionList(execution);
1193 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1194 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1198 public void getRelatedResourcesInVfModuleTest() throws Exception {
1199 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1200 vnfc.setModelInvariantId("modelInvariantId");
1201 vnfc.setVnfcName("testVnfcName");
1203 String vfncPayload =
1204 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1205 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1207 String configurationPayload =
1208 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1209 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1210 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1211 configurationResultWrappers.add(configurationWrapper);
1213 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1214 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1216 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1218 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1219 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1220 assertEquals(1, configurationsList.size());
1221 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1225 * WorkflowActionBB Tests
1229 public void pluralTest() {
1230 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1231 "networks, Network", "invalidNames, invalidNames");
1232 items.forEach(item -> {
1233 String[] split = item.split(",");
1234 String type = split[0].trim();
1235 String expected = split[1].trim();
1236 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1241 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1242 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1243 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1244 BuildingBlock bb = new BuildingBlock();
1245 bb.setBpmnFlowName("AssignNetworkBB");
1247 ebb.setBuildingBlock(bb);
1248 executeFlows.add(ebb);
1249 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1250 BuildingBlock bb2 = new BuildingBlock();
1251 bb2.setBpmnFlowName("AssignNetworkBB");
1253 ebb2.setBuildingBlock(bb2);
1254 executeFlows.add(ebb2);
1255 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1256 BuildingBlock bb3 = new BuildingBlock();
1257 bb3.setBpmnFlowName("CreateNetworkBB");
1259 ebb3.setBuildingBlock(bb3);
1260 executeFlows.add(ebb3);
1261 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1262 BuildingBlock bb4 = new BuildingBlock();
1263 bb4.setBpmnFlowName("CreateNetworkBB");
1265 ebb4.setBuildingBlock(bb4);
1266 executeFlows.add(ebb4);
1267 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1268 BuildingBlock bb5 = new BuildingBlock();
1269 bb5.setBpmnFlowName("ActivateNetworkBB");
1271 ebb5.setBuildingBlock(bb5);
1272 executeFlows.add(ebb5);
1273 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1274 BuildingBlock bb6 = new BuildingBlock();
1275 bb6.setBpmnFlowName("ActivateNetworkBB");
1277 ebb6.setBuildingBlock(bb6);
1278 executeFlows.add(ebb6);
1280 List<ExecuteBuildingBlock> sorted =
1281 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1282 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1283 "CreateNetworkBB", "ActivateNetworkBB");
1287 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1288 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1289 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1290 BuildingBlock bb = new BuildingBlock();
1291 bb.setBpmnFlowName("DeactivateNetworkBB");
1293 ebb.setBuildingBlock(bb);
1294 executeFlows.add(ebb);
1295 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1296 BuildingBlock bb2 = new BuildingBlock();
1297 bb2.setBpmnFlowName("DeactivateNetworkBB");
1299 ebb2.setBuildingBlock(bb2);
1300 executeFlows.add(ebb2);
1301 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1302 BuildingBlock bb3 = new BuildingBlock();
1303 bb3.setBpmnFlowName("DeleteNetworkBB");
1305 ebb3.setBuildingBlock(bb3);
1306 executeFlows.add(ebb3);
1307 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1308 BuildingBlock bb4 = new BuildingBlock();
1309 bb4.setBpmnFlowName("DeleteNetworkBB");
1311 ebb4.setBuildingBlock(bb4);
1312 executeFlows.add(ebb4);
1313 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1314 BuildingBlock bb5 = new BuildingBlock();
1315 bb5.setBpmnFlowName("UnassignNetworkBB");
1317 ebb5.setBuildingBlock(bb5);
1318 executeFlows.add(ebb5);
1319 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1320 BuildingBlock bb6 = new BuildingBlock();
1321 bb6.setBpmnFlowName("UnassignNetworkBB");
1323 ebb6.setBuildingBlock(bb6);
1324 executeFlows.add(ebb6);
1326 List<ExecuteBuildingBlock> sorted =
1327 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1328 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1329 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1333 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1334 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1335 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1336 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1337 northBoundRequest.setOrchestrationFlowList(orchFlows);
1338 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1339 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1341 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1342 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1343 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1344 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1345 WorkflowType.VNF, false, "my-custom-cloud-owner");
1346 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1347 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1348 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1349 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1350 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1351 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1352 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1353 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1354 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1355 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1359 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1360 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1361 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1362 northBoundRequest.setOrchestrationFlowList(orchFlows);
1363 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1364 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1366 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1367 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1368 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1372 public void extractResourceIdAndTypeFromUriTest() {
1373 String uri = "/v6/serviceInstances/123";
1374 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1375 String uri3 = "/v6/serviceInstances";
1376 String uri4 = "/v6/serviceInstances/assign";
1377 String uri5 = "'/v6/serviceInstances/123/vnfs";
1378 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1379 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1380 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1381 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1382 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1383 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1384 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1385 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1386 assertEquals(expected1.getResourceId(), result.getResourceId());
1387 assertEquals(expected1.getResourceType(), result.getResourceType());
1388 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1389 assertEquals(expected2.getResourceId(), result.getResourceId());
1390 assertEquals(expected2.getResourceType(), result.getResourceType());
1391 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1392 assertEquals("Service", result.getResourceType().toString());
1393 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1394 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1395 assertEquals("Service", result.getResourceType().toString());
1396 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1397 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1398 assertEquals("Vnf", result.getResourceType().toString());
1399 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1400 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1401 assertEquals(expected3.getResourceId(), result.getResourceId());
1402 assertEquals(expected3.getResourceType(), result.getResourceType());
1403 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1404 assertEquals(expected4.getResourceId(), result.getResourceId());
1405 assertEquals(expected4.getResourceType(), result.getResourceType());
1406 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1407 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1408 assertEquals("VfModule", result.getResourceType().toString());
1413 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1414 this.expectedException.expect(IllegalArgumentException.class);
1415 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1416 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1420 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1421 this.expectedException.expect(IllegalArgumentException.class);
1422 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1423 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1427 public void populateResourceIdsFromApiHandlerTest() {
1428 execution.setVariable("serviceInstanceId", "123");
1429 execution.setVariable("vnfId", "888");
1430 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1431 assertEquals("123", x.getServiceInstanceId());
1432 assertEquals("888", x.getVnfId());
1433 assertNull(x.getVolumeGroupId());
1437 public void validateResourceIdInAAITest() throws Exception {
1439 RequestDetails reqDetails = new RequestDetails();
1440 SubscriberInfo subInfo = new SubscriberInfo();
1441 subInfo.setGlobalSubscriberId("id123");
1442 reqDetails.setSubscriberInfo(subInfo);
1443 RequestParameters reqParams = new RequestParameters();
1444 reqParams.setSubscriptionServiceType("subServiceType123");
1445 reqDetails.setRequestParameters(reqParams);
1446 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1447 ServiceInstance si = new ServiceInstance();
1448 si.setServiceInstanceId("siId123");
1449 Optional<ServiceInstance> siOp = Optional.of(si);
1450 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1451 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1452 .thenReturn(Optional.empty());
1453 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1454 reqDetails, workflowResourceIds);
1455 assertEquals("siId123", id);
1456 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1457 reqDetails, workflowResourceIds);
1458 assertEquals("generatedId123", id2);
1461 L3Network network = new L3Network();
1462 network.setNetworkId("id123");
1463 network.setNetworkName("name123");
1464 workflowResourceIds.setServiceInstanceId("siId123");
1465 Optional<L3Network> opNetwork = Optional.of(network);
1466 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1467 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1468 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails,
1469 workflowResourceIds);
1470 assertEquals("id123", id);
1471 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails,
1472 workflowResourceIds);
1473 assertEquals("generatedId123", id2);
1476 GenericVnf vnf = new GenericVnf();
1477 vnf.setVnfId("id123");
1478 vnf.setVnfName("vnfName123");
1479 Optional<GenericVnf> opVnf = Optional.of(vnf);
1480 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "name123")).thenReturn(opVnf);
1481 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1482 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails,
1483 workflowResourceIds);
1484 assertEquals("id123", id);
1485 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1486 workflowResourceIds);
1487 assertEquals("generatedId123", id2);
1490 VfModules vfModules = new VfModules();
1491 VfModule vfModule = new VfModule();
1492 vfModule.setVfModuleId("id123");
1493 vfModule.setVfModuleName("name123");
1494 vfModules.getVfModule().add(vfModule);
1495 vnf.setVfModules(vfModules);
1496 workflowResourceIds.setVnfId("id123");
1497 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1498 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails,
1499 workflowResourceIds);
1500 assertEquals("id123", id);
1502 GenericVnf vnf2 = new GenericVnf();
1503 VfModules vfModules2 = new VfModules();
1504 VfModule vfModule2 = new VfModule();
1505 vfModule2.setVfModuleId("id123");
1506 vfModule2.setVfModuleName("name123");
1507 vfModules2.getVfModule().add(vfModule2);
1508 vnf2.setVfModules(vfModules2);
1509 workflowResourceIds.setVnfId("id111");
1510 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1511 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails,
1512 workflowResourceIds);
1513 assertEquals("generatedId123", id2);
1516 VolumeGroup volumeGroup = new VolumeGroup();
1517 volumeGroup.setVolumeGroupId("id123");
1518 volumeGroup.setVolumeGroupName("name123");
1519 workflowResourceIds.setVnfId("id123");
1520 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1521 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1522 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
1523 workflowResourceIds);
1524 assertEquals("id123", id);
1526 workflowResourceIds.setVnfId("id444");
1527 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1528 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1529 .thenReturn(opVolumeGroup);
1530 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444", "111111")).thenReturn(Optional.empty());
1531 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails,
1532 workflowResourceIds);
1533 assertEquals("id123", id2);
1537 public void handleRuntimeExceptionTest() {
1538 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1539 execution.setVariable("testProcessKey", "testProcessKeyValue");
1541 workflowAction.handleRuntimeException(execution);
1542 } catch (BpmnError wfe) {
1543 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1549 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
1550 execution.setVariable("testProcessKey", "testProcessKeyValue");
1551 Service service = new Service();
1552 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1553 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1554 networkCust.setModelCustomizationUUID("123");
1555 networkCustomizations.add(networkCust);
1556 service.setNetworkCustomizations(networkCustomizations);
1557 NetworkCollectionResourceCustomization collectionResourceCustomization =
1558 new NetworkCollectionResourceCustomization();
1559 collectionResourceCustomization.setModelCustomizationUUID("123");
1560 CollectionResource collectionResource = new CollectionResource();
1561 collectionResource.setToscaNodeType("NetworkCollection");
1562 InstanceGroup instanceGroup = new InstanceGroup();
1563 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1564 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1565 new CollectionResourceInstanceGroupCustomization();
1566 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1567 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1568 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1569 collectionResource.setInstanceGroup(instanceGroup);
1570 collectionResourceCustomization.setCollectionResource(collectionResource);;
1571 service.setModelUUID("abc");
1572 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1573 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1574 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1575 doReturn(collectionResourceCustomization).when(catalogDbClient)
1576 .getNetworkCollectionResourceCustomizationByID("123");
1577 String bpmnRequest = new String(Files
1578 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1579 ObjectMapper mapper = new ObjectMapper();
1580 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1581 List<Resource> resourceCounter = new ArrayList<>();
1582 thrown.expect(BpmnError.class);
1583 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1584 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
1588 public void sortVfModulesByBaseFirstTest() {
1589 List<Resource> resources = new ArrayList<>();
1590 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1591 resource1.setBaseVfModule(false);
1592 resources.add(resource1);
1593 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1594 resource2.setBaseVfModule(false);
1595 resources.add(resource2);
1596 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1597 resource3.setBaseVfModule(true);
1598 resources.add(resource3);
1599 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1600 assertEquals("333", result.get(0).getResourceId());
1601 assertEquals("222", result.get(1).getResourceId());
1602 assertEquals("111", result.get(2).getResourceId());
1606 public void sortVfModulesByBaseLastTest() {
1607 List<Resource> resources = new ArrayList<>();
1608 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1609 resource1.setBaseVfModule(true);
1610 resources.add(resource1);
1611 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1612 resource2.setBaseVfModule(false);
1613 resources.add(resource2);
1614 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1615 resource3.setBaseVfModule(false);
1616 resources.add(resource3);
1617 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1618 assertEquals("333", result.get(0).getResourceId());
1619 assertEquals("222", result.get(1).getResourceId());
1620 assertEquals("111", result.get(2).getResourceId());
1624 public void findCatalogNetworkCollectionTest() {
1625 Service service = new Service();
1626 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1627 networkCustomization.setModelCustomizationUUID("123");
1628 service.getCollectionResourceCustomizations().add(networkCustomization);
1629 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1630 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1631 assertNotNull(customization);
1635 public void findCatalogNetworkCollectionEmptyTest() {
1636 Service service = new Service();
1637 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1638 networkCustomization.setModelCustomizationUUID("123");
1639 service.getCollectionResourceCustomizations().add(networkCustomization);
1640 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1641 assertNull(customization);
1645 public void findCatalogNetworkCollectionMoreThanOneTest() {
1646 Service service = new Service();
1647 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1648 networkCustomization1.setModelCustomizationUUID("123");
1649 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1650 networkCustomization2.setModelCustomizationUUID("321");
1651 service.getCollectionResourceCustomizations().add(networkCustomization1);
1652 service.getCollectionResourceCustomizations().add(networkCustomization2);
1653 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1654 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1655 workflowAction.findCatalogNetworkCollection(execution, service);
1656 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1657 execution.getVariable("WorkflowActionErrorMessage"));
1661 public void verifyLackOfNullPointerExceptionForNullResource() {
1662 ExecuteBuildingBlock result = null;
1664 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
1665 false, null, null, null, false, null, true);
1666 } catch (NullPointerException e) {
1667 fail("NullPointerException should not be thrown when 'resource' is null");
1669 assertNotNull(result);
1673 public void traverseAAIServiceTest() {
1674 List<Resource> resourceCounter = new ArrayList<>();
1675 String resourceId = "si0";
1676 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1678 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1679 serviceInstanceAAI.setServiceInstanceId(resourceId);
1681 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
1689 Configuration config = new Configuration();
1690 config.setConfigurationId("testConfigurationId2");
1691 serviceInstance.getConfigurations().add(config);
1693 Relationship relationship1 = new Relationship();
1694 relationship1.setRelatedTo("vnfc");
1695 RelationshipList relationshipList1 = new RelationshipList();
1696 relationshipList1.getRelationship().add(relationship1);
1698 Relationship relationship2 = new Relationship();
1699 relationship2.setRelatedTo("vpn-binding");
1700 RelationshipList relationshipList2 = new RelationshipList();
1701 relationshipList2.getRelationship().add(relationship2);
1703 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
1704 aaiConfiguration1.setConfigurationId("testConfigurationId");
1705 aaiConfiguration1.setRelationshipList(relationshipList1);
1707 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
1708 aaiConfiguration2.setConfigurationId("testConfigurationId2");
1709 aaiConfiguration2.setRelationshipList(relationshipList1);
1712 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
1713 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1714 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
1715 .getConfiguration("testConfigurationId");
1716 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
1717 .getConfiguration("testConfigurationId2");
1718 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
1719 assertEquals(8, resourceCounter.size());
1720 assertTrue(resourceCounter.get(2).isBaseVfModule());
1721 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
1722 } catch (Exception e) {
1723 fail("Unexpected exception was thrown.");
1727 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
1728 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
1729 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
1730 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
1731 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
1732 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
1733 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
1734 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
1735 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
1739 private List<OrchestrationFlow> createFlowList(String... flowNames) {
1740 List<OrchestrationFlow> result = new ArrayList<>();
1741 for (String flowName : flowNames) {
1742 OrchestrationFlow orchFlow = new OrchestrationFlow();
1743 orchFlow.setFlowName(flowName);
1744 result.add(orchFlow);
1749 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
1750 for (int i = 0; i < ebbs.size(); i++) {
1751 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);