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.fail;
33 import static org.mockito.ArgumentMatchers.anyObject;
34 import static org.mockito.ArgumentMatchers.anyString;
35 import static org.mockito.ArgumentMatchers.isA;
36 import static org.mockito.Mockito.doReturn;
37 import static org.mockito.Mockito.when;
38 import com.fasterxml.jackson.databind.ObjectMapper;
39 import java.io.IOException;
40 import java.net.MalformedURLException;
41 import java.nio.file.Files;
42 import java.nio.file.Paths;
43 import java.util.ArrayList;
44 import java.util.Arrays;
45 import java.util.HashSet;
46 import java.util.List;
47 import java.util.Optional;
49 import java.util.UUID;
50 import org.camunda.bpm.engine.delegate.BpmnError;
51 import org.camunda.bpm.engine.delegate.DelegateExecution;
52 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
53 import org.javatuples.Pair;
54 import org.junit.Before;
55 import org.junit.Ignore;
56 import org.junit.Rule;
57 import org.junit.Test;
58 import org.junit.rules.ExpectedException;
59 import org.mockito.InjectMocks;
60 import org.mockito.Mock;
61 import org.mockito.Spy;
62 import org.onap.aai.domain.yang.GenericVnf;
63 import org.onap.aai.domain.yang.L3Network;
64 import org.onap.aai.domain.yang.Relationship;
65 import org.onap.aai.domain.yang.RelationshipList;
66 import org.onap.aai.domain.yang.ServiceInstance;
67 import org.onap.aai.domain.yang.VfModule;
68 import org.onap.aai.domain.yang.VfModules;
69 import org.onap.aai.domain.yang.VolumeGroup;
70 import org.onap.so.bpmn.BaseTaskTest;
71 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
72 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
73 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
74 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
75 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
76 import org.onap.so.client.aai.AAIObjectType;
77 import org.onap.so.client.aai.entities.AAIResultWrapper;
78 import org.onap.so.client.aai.entities.Relationships;
79 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
80 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
81 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
82 import org.onap.so.db.catalog.beans.CollectionResource;
83 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
84 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
85 import org.onap.so.db.catalog.beans.ConfigurationResource;
86 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
87 import org.onap.so.db.catalog.beans.CvnfcCustomization;
88 import org.onap.so.db.catalog.beans.HeatEnvironment;
89 import org.onap.so.db.catalog.beans.HeatTemplate;
90 import org.onap.so.db.catalog.beans.InstanceGroup;
91 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
92 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
93 import org.onap.so.db.catalog.beans.Service;
94 import org.onap.so.db.catalog.beans.VfModuleCustomization;
95 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
96 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
97 import org.onap.so.serviceinstancebeans.RequestDetails;
98 import org.onap.so.serviceinstancebeans.RequestParameters;
99 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
100 import org.onap.so.serviceinstancebeans.SubscriberInfo;
101 import org.springframework.core.env.Environment;
103 public class WorkflowActionTest extends BaseTaskTest {
107 protected Environment environment;
109 protected WorkflowAction workflowAction;
110 private DelegateExecution execution;
115 protected WorkflowAction SPY_workflowAction;
118 public ExpectedException thrown = ExpectedException.none();
120 private String RESOURCE_PATH = "src/test/resources/__files/";
123 public void before() throws Exception {
124 execution = new DelegateExecutionFake();
125 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
126 servInstance.setServiceInstanceId("TEST");
127 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
128 workflowAction.setBbInputSetupUtils(bbSetupUtils);
129 workflowAction.setBbInputSetup(bbInputSetup);
136 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
137 String gAction = "createInstance";
138 String resource = "Network";
139 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
140 execution.setVariable("requestAction", gAction);
142 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
143 execution.setVariable("bpmnRequest", bpmnRequest);
144 execution.setVariable("aLaCarte", true);
145 execution.setVariable("apiVersion", "7");
146 execution.setVariable("requestUri", "v6/networks/123");
148 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
149 List<OrchestrationFlow> orchFlows =
150 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
151 northBoundRequest.setOrchestrationFlowList(orchFlows);
153 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
154 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
155 workflowAction.selectExecutionList(execution);
156 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
157 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
161 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
162 String gAction = "deleteInstance";
163 String resource = "Network";
164 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
165 execution.setVariable("requestAction", gAction);
167 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
168 execution.setVariable("bpmnRequest", bpmnRequest);
169 execution.setVariable("aLaCarte", true);
170 execution.setVariable("apiVersion", "7");
171 execution.setVariable("requestUri", "v6/networks/123");
173 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
174 List<OrchestrationFlow> orchFlows =
175 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
176 northBoundRequest.setOrchestrationFlowList(orchFlows);
178 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
179 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
180 workflowAction.selectExecutionList(execution);
181 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
182 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
186 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
187 String gAction = "createInstance";
188 String resource = "Service";
189 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
190 execution.setVariable("requestAction", gAction);
192 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
193 execution.setVariable("bpmnRequest", bpmnRequest);
194 execution.setVariable("aLaCarte", true);
195 execution.setVariable("apiVersion", "7");
196 execution.setVariable("requestUri", "v6/serviceInstances/123");
199 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
200 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
201 northBoundRequest.setOrchestrationFlowList(orchFlows);
203 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
204 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
205 workflowAction.selectExecutionList(execution);
206 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
207 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
211 * SERVICE MACRO TESTS
214 public void selectExecutionListServiceMacroAssignTest() throws Exception {
215 String gAction = "assignInstance";
216 String resource = "Service";
217 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
218 execution.setVariable("requestAction", gAction);
220 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
221 execution.setVariable("bpmnRequest", bpmnRequest);
222 execution.setVariable("aLaCarte", false);
223 execution.setVariable("apiVersion", "7");
224 execution.setVariable("requestUri", "v6/serviceInstances/123");
227 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
228 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
229 "AssignVolumeGroupBB", "AssignVfModuleBB");
230 northBoundRequest.setOrchestrationFlowList(orchFlows);
232 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
233 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
234 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
235 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
236 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
237 HeatTemplate volumeHeatTemplate = new HeatTemplate();
238 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
239 vfModuleCustomization.setVfModule(vfModule);
241 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
242 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
243 HeatEnvironment heatEnvironment = new HeatEnvironment();
244 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
245 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
246 HeatTemplate moduleHeatTemplate = new HeatTemplate();
247 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
248 vfModuleCustomization2.setVfModule(vfModule2);
250 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
251 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
253 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
254 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
255 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
256 .thenReturn(vfModuleCustomization);
257 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
258 .thenReturn(vfModuleCustomization2);
259 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
260 .thenReturn(vfModuleCustomization3);
261 workflowAction.selectExecutionList(execution);
262 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
263 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
264 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
268 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
269 String gAction = "assignInstance";
270 String resource = "Service";
271 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
272 execution.setVariable("requestAction", gAction);
273 String bpmnRequest = new String(
274 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
275 execution.setVariable("bpmnRequest", bpmnRequest);
276 execution.setVariable("aLaCarte", false);
277 execution.setVariable("apiVersion", "7");
278 execution.setVariable("requestUri", "v6/serviceInstances/123");
281 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
282 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
283 "AssignVolumeGroupBB", "AssignVfModuleBB");
284 northBoundRequest.setOrchestrationFlowList(orchFlows);
286 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
287 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
288 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
289 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
290 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
291 HeatTemplate volumeHeatTemplate = new HeatTemplate();
292 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
293 vfModuleCustomization.setVfModule(vfModule);
295 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
296 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
297 HeatEnvironment heatEnvironment = new HeatEnvironment();
298 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
299 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
300 HeatTemplate moduleHeatTemplate = new HeatTemplate();
301 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
302 vfModuleCustomization2.setVfModule(vfModule2);
304 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
305 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
307 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
308 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
309 false, "att-aic")).thenReturn(northBoundRequest);
310 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
311 .thenReturn(vfModuleCustomization);
312 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
313 .thenReturn(vfModuleCustomization2);
314 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
315 .thenReturn(vfModuleCustomization3);
316 workflowAction.selectExecutionList(execution);
317 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
318 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
319 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
323 public void selectExecutionListServiceMacroActivateTest() throws Exception {
324 String gAction = "activateInstance";
325 String resource = "Service";
326 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
327 execution.setVariable("requestAction", gAction);
328 String bpmnRequest = new String(Files
329 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
330 execution.setVariable("bpmnRequest", bpmnRequest);
331 execution.setVariable("aLaCarte", false);
332 execution.setVariable("apiVersion", "7");
333 execution.setVariable("requestUri", "v6/serviceInstances/si0");
336 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
337 List<OrchestrationFlow> orchFlows =
338 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
339 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
340 northBoundRequest.setOrchestrationFlowList(orchFlows);
342 ServiceInstance serviceInstanceAAI = new ServiceInstance();
343 serviceInstanceAAI.setServiceInstanceId("si0");
344 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
345 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
346 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
347 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
348 vnf.setVnfId("vnf0");
350 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
351 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
352 vfModule.setVfModuleId("vfModule0");
353 vnf.getVfModules().add(vfModule);
354 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
355 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
356 vfModule2.setVfModuleId("vfModule1");
357 vnf.getVfModules().add(vfModule2);
359 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
360 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
361 volumeGroup.setVolumeGroupId("volumeGroup0");
362 vnf.getVolumeGroups().add(volumeGroup);
364 serviceInstanceMSO.getVnfs().add(vnf);
366 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
367 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
368 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
369 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
370 workflowAction.selectExecutionList(execution);
371 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
372 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
373 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
374 "ActivateServiceInstanceBB");
375 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
376 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
377 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
378 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
379 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
380 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
381 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
382 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
387 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
388 String gAction = "deactivateInstance";
389 String resource = "Service";
390 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
391 execution.setVariable("requestAction", gAction);
392 String bpmnRequest = new String(Files
393 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
394 execution.setVariable("bpmnRequest", bpmnRequest);
395 execution.setVariable("aLaCarte", false);
396 execution.setVariable("apiVersion", "7");
397 execution.setVariable("requestUri", "v6/serviceInstances/123");
400 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
401 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
402 northBoundRequest.setOrchestrationFlowList(orchFlows);
404 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
405 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
406 workflowAction.selectExecutionList(execution);
407 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
408 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
412 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
413 String gAction = "createInstance";
414 String resource = "Service";
415 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
416 execution.setVariable("requestAction", gAction);
417 String bpmnRequest = new String(Files
418 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
419 execution.setVariable("bpmnRequest", bpmnRequest);
420 execution.setVariable("aLaCarte", false);
421 execution.setVariable("apiVersion", "7");
422 execution.setVariable("requestUri", "v6/serviceInstances/123");
425 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
426 northBoundRequest.setIsToplevelflow(true);
427 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
428 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
429 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
430 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
431 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
432 northBoundRequest.setOrchestrationFlowList(orchFlows);
434 Service service = new Service();
435 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
436 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
437 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
438 workflowAction.selectExecutionList(execution);
439 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
440 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
444 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
445 String gAction = "createInstance";
446 String resource = "Service";
447 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
448 execution.setVariable("requestAction", gAction);
449 String bpmnRequest = new String(Files
450 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
451 execution.setVariable("bpmnRequest", bpmnRequest);
452 execution.setVariable("aLaCarte", false);
453 execution.setVariable("apiVersion", "7");
454 execution.setVariable("requestUri", "v6/serviceInstances/123");
457 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
458 northBoundRequest.setIsToplevelflow(true);
459 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
460 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
461 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
462 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
463 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
464 northBoundRequest.setOrchestrationFlowList(orchFlows);
466 Service service = new Service();
467 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
468 networkCustomization.setModelCustomizationUUID("1234");
469 service.getNetworkCustomizations().add(networkCustomization);
470 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
471 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
472 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
473 workflowAction.selectExecutionList(execution);
474 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
475 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
476 "ActivateNetworkBB", "ActivateServiceInstanceBB");
480 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
481 String gAction = "createInstance";
482 String resource = "Service";
483 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
484 execution.setVariable("requestAction", gAction);
485 String bpmnRequest = new String(Files
486 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
487 execution.setVariable("bpmnRequest", bpmnRequest);
488 execution.setVariable("aLaCarte", false);
489 execution.setVariable("apiVersion", "7");
490 execution.setVariable("requestUri", "v6/serviceInstances/123");
493 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
494 northBoundRequest.setIsToplevelflow(true);
495 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
496 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
497 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
498 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
499 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
500 northBoundRequest.setOrchestrationFlowList(orchFlows);
502 Service service = new Service();
503 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
504 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
505 networkCust.setModelCustomizationUUID("123");
506 networkCustomizations.add(networkCust);
507 service.setNetworkCustomizations(networkCustomizations);
508 NetworkCollectionResourceCustomization collectionResourceCustomization =
509 new NetworkCollectionResourceCustomization();
510 collectionResourceCustomization.setModelCustomizationUUID("123");
512 CollectionResource collectionResource = new CollectionResource();
513 collectionResource.setToscaNodeType("NetworkCollection");
514 InstanceGroup instanceGroup = new InstanceGroup();
515 instanceGroup.setToscaNodeType("NetworkCollectionResource");
516 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
517 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
518 new CollectionNetworkResourceCustomization();
519 collectionNetworkResourceCust.setModelCustomizationUUID("123");
520 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
521 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
522 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
523 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
524 new CollectionResourceInstanceGroupCustomization();
525 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
526 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
527 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
528 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
529 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
530 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
531 collectionResource.setInstanceGroup(instanceGroup);
532 collectionResourceCustomization.setCollectionResource(collectionResource);;
533 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
534 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
535 doReturn(collectionResourceCustomization).when(catalogDbClient)
536 .getNetworkCollectionResourceCustomizationByID("123");
537 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
538 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
539 workflowAction.selectExecutionList(execution);
540 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
541 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
542 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
543 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
544 "ActivateServiceInstanceBB");
545 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
546 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
547 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
548 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
549 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
551 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
554 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
555 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
556 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
557 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
558 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
560 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
563 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
564 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
565 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
566 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
567 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
569 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
575 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
576 String gAction = "createInstance";
577 String resource = "Service";
578 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
579 execution.setVariable("requestAction", gAction);
581 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
582 execution.setVariable("bpmnRequest", bpmnRequest);
583 execution.setVariable("aLaCarte", false);
584 execution.setVariable("apiVersion", "7");
585 execution.setVariable("requestUri", "v6/serviceInstances/123");
588 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
589 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
590 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
591 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
592 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
593 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
594 northBoundRequest.setOrchestrationFlowList(orchFlows);
596 Service service = new Service();
597 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
599 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
600 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
601 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
602 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
603 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
604 HeatTemplate volumeHeatTemplate = new HeatTemplate();
605 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
606 vfModuleCustomization.setVfModule(vfModule);
608 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
609 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
610 HeatEnvironment heatEnvironment = new HeatEnvironment();
611 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
612 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
613 HeatTemplate moduleHeatTemplate = new HeatTemplate();
614 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
615 vfModuleCustomization2.setVfModule(vfModule2);
617 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
618 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
620 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
621 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
622 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
623 .thenReturn(vfModuleCustomization);
624 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
625 .thenReturn(vfModuleCustomization2);
626 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
627 .thenReturn(vfModuleCustomization3);
628 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
629 workflowAction.selectExecutionList(execution);
630 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
631 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
632 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
633 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
634 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
635 "ActivateServiceInstanceBB");
636 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
637 int randomUUIDLength = UUID.randomUUID().toString().length();
638 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
639 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
640 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
641 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
642 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
644 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
645 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
647 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
652 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
653 assertEquals(true, execution.getVariable("homing"));
657 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
658 String gAction = "deleteInstance";
659 String resource = "Service";
660 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
661 execution.setVariable("requestAction", gAction);
662 String bpmnRequest = new String(Files
663 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
664 execution.setVariable("bpmnRequest", bpmnRequest);
665 execution.setVariable("aLaCarte", false);
666 execution.setVariable("apiVersion", "7");
667 execution.setVariable("requestUri", "v6/serviceInstances/123");
670 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
671 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
672 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
673 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
674 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
675 northBoundRequest.setOrchestrationFlowList(orchFlows);
677 ServiceInstance serviceInstanceAAI = new ServiceInstance();
678 serviceInstanceAAI.setServiceInstanceId("aaisi123");
679 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
680 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
681 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
682 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
683 vnf.setVnfId("vnfId123");
685 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
686 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
687 vfModule.setVfModuleId("vfModule1");
688 vnf.getVfModules().add(vfModule);
689 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
690 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
691 vfModule2.setVfModuleId("vfModule2");
692 vnf.getVfModules().add(vfModule2);
694 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
695 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
696 volumeGroup.setVolumeGroupId("vg123");
697 vnf.getVolumeGroups().add(volumeGroup);
699 serviceInstanceMSO.getVnfs().add(vnf);
701 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
702 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
703 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
704 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
705 workflowAction.selectExecutionList(execution);
706 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
707 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
708 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
709 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
710 "UnassignVnfBB", "UnassignServiceInstanceBB");
714 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
715 String gAction = "unassignInstance";
716 String resource = "Service";
717 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
718 execution.setVariable("requestAction", gAction);
719 String bpmnRequest = new String(Files
720 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
721 execution.setVariable("bpmnRequest", bpmnRequest);
722 execution.setVariable("aLaCarte", false);
723 execution.setVariable("apiVersion", "7");
724 execution.setVariable("requestUri", "v6/serviceInstances/123");
727 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
728 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
729 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
730 northBoundRequest.setOrchestrationFlowList(orchFlows);
732 ServiceInstance serviceInstanceAAI = new ServiceInstance();
733 serviceInstanceAAI.setServiceInstanceId("aaisi123");
734 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
735 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
736 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
737 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
738 vnf.setVnfId("vnfId123");
740 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
741 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
742 vfModule.setVfModuleId("vfModule1");
743 vnf.getVfModules().add(vfModule);
744 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
745 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
746 vfModule2.setVfModuleId("vfModule2");
747 vnf.getVfModules().add(vfModule2);
749 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
750 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
751 volumeGroup.setVolumeGroupId("vg123");
752 vnf.getVolumeGroups().add(volumeGroup);
754 serviceInstanceMSO.getVnfs().add(vnf);
756 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
757 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
758 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
759 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
760 workflowAction.selectExecutionList(execution);
761 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
762 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
763 "UnassignVnfBB", "UnassignServiceInstanceBB");
767 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
768 String gAction = "deleteInstance";
769 String resource = "Service";
770 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
771 execution.setVariable("requestAction", gAction);
772 String bpmnRequest = new String(Files
773 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
774 execution.setVariable("bpmnRequest", bpmnRequest);
775 execution.setVariable("aLaCarte", false);
776 execution.setVariable("apiVersion", "7");
777 execution.setVariable("requestUri", "v6/serviceInstances/123");
780 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
781 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
782 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
783 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
784 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
785 northBoundRequest.setOrchestrationFlowList(orchFlows);
787 ServiceInstance serviceInstanceAAI = new ServiceInstance();
788 serviceInstanceAAI.setServiceInstanceId("aaisi123");
789 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
790 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
792 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
793 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
794 network.setNetworkId("123");
795 serviceInstanceMSO.getNetworks().add(network);
796 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
797 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
798 network2.setNetworkId("321");
799 serviceInstanceMSO.getNetworks().add(network2);
801 Collection collection = new Collection();
802 serviceInstanceMSO.setCollection(collection);
804 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
805 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
806 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
807 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
808 workflowAction.selectExecutionList(execution);
809 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
810 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
811 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
812 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
816 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
817 String gAction = "recreateInstance";
818 String resource = "Vnf";
819 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
820 execution.setVariable("requestAction", gAction);
822 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
823 execution.setVariable("bpmnRequest", bpmnRequest);
824 execution.setVariable("aLaCarte", false);
825 execution.setVariable("apiVersion", "7");
826 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
827 execution.setVariable("serviceInstanceId", "123");
828 execution.setVariable("vnfId", "1234");
830 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
831 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
832 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
833 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
834 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
835 "AAIUnsetVnfInMaintBB");
836 northBoundRequest.setOrchestrationFlowList(orchFlows);
838 ServiceInstance serviceInstanceAAI = new ServiceInstance();
839 serviceInstanceAAI.setServiceInstanceId("123");
840 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
841 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
842 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
843 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
844 vnf.setVnfId("1234");
846 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
847 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
848 vfModule.setVfModuleId("vfModule1");
849 vnf.getVfModules().add(vfModule);
850 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
851 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
852 vfModule2.setVfModuleId("vfModule2");
853 vnf.getVfModules().add(vfModule2);
855 serviceInstanceMSO.getVnfs().add(vnf);
857 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
858 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
859 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
860 false, "cloud-owner")).thenReturn(northBoundRequest);
861 workflowAction.selectExecutionList(execution);
862 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
863 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
864 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
865 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
866 "AAIUnsetVnfInMaintBB");
870 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
871 String gAction = "replaceInstance";
872 String resource = "Vnf";
873 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
874 execution.setVariable("requestAction", gAction);
876 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
877 execution.setVariable("bpmnRequest", bpmnRequest);
878 execution.setVariable("aLaCarte", false);
879 execution.setVariable("apiVersion", "7");
880 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
881 execution.setVariable("serviceInstanceId", "123");
882 execution.setVariable("vnfId", "1234");
884 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
885 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
886 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
887 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
888 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
889 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
890 "AAIUnsetVnfInMaintBB");
891 northBoundRequest.setOrchestrationFlowList(orchFlows);
893 ServiceInstance serviceInstanceAAI = new ServiceInstance();
894 serviceInstanceAAI.setServiceInstanceId("123");
895 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
896 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
897 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
898 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
899 vnf.setVnfId("1234");
900 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
901 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
902 vfModule.setVfModuleId("vfModule1");
903 vnf.getVfModules().add(vfModule);
904 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
905 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
906 vfModule2.setVfModuleId("vfModule2");
907 vnf.getVfModules().add(vfModule2);
908 serviceInstanceMSO.getVnfs().add(vnf);
909 VfModule vfModuleAAI = new VfModule();
910 vfModuleAAI.setVfModuleId("vfModule2");
911 RelationshipList relationshipList = new RelationshipList();
912 Relationship relationship = new Relationship();
913 relationshipList.getRelationship().add(relationship);
914 vfModuleAAI.setRelationshipList(relationshipList);
915 Relationships relationships = new Relationships("abc");
916 Configuration config = new Configuration();
917 config.setConfigurationId("configId");
918 Optional<Configuration> configOp = Optional.of(config);
919 Optional<Relationships> relationshipsOp = Optional.of(relationships);
921 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
922 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
923 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
924 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
925 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
926 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
927 false, "cloud-owner")).thenReturn(northBoundRequest);
928 workflowAction.selectExecutionList(execution);
929 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
930 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
931 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
932 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
933 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
934 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
935 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
940 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
941 String gAction = "createInstance";
942 String resource = "NetworkCollection";
943 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
944 execution.setVariable("requestAction", gAction);
945 String bpmnRequest = new String(
946 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
947 execution.setVariable("bpmnRequest", bpmnRequest);
948 execution.setVariable("aLaCarte", false);
949 execution.setVariable("apiVersion", "7");
950 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
953 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
954 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
955 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
956 northBoundRequest.setOrchestrationFlowList(orchFlows);
958 Service service = new Service();
959 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
960 CollectionResource collectionResource = new CollectionResource();
961 collectionResource.setToscaNodeType("Data NetworkCollection Data");
962 collectionResourceCustomization.setCollectionResource(collectionResource);
963 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
965 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
966 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
967 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
968 workflowAction.selectExecutionList(execution);
969 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
970 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
971 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
972 "ActivateNetworkCollectionBB");
977 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
978 String gAction = "deleteInstance";
979 String resource = "NetworkCollection";
980 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
981 execution.setVariable("requestAction", gAction);
982 String bpmnRequest = new String(
983 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
984 execution.setVariable("bpmnRequest", bpmnRequest);
985 execution.setVariable("aLaCarte", false);
986 execution.setVariable("apiVersion", "7");
987 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
989 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
990 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
991 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
992 northBoundRequest.setOrchestrationFlowList(orchFlows);
994 Service service = new Service();
995 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
996 CollectionResource collectionResource = new CollectionResource();
997 collectionResource.setToscaNodeType("Data NetworkCollection Data");
998 collectionResourceCustomization.setCollectionResource(collectionResource);
999 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1001 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1002 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1003 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1004 workflowAction.selectExecutionList(execution);
1005 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1006 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1007 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1008 "DeleteNetworkCollectionBB");
1012 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1013 String gAction = "createInstance";
1014 String resource = "VfModule";
1015 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1016 execution.setVariable("requestAction", gAction);
1017 String bpmnRequest =
1018 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1019 execution.setVariable("bpmnRequest", bpmnRequest);
1020 execution.setVariable("aLaCarte", true);
1021 execution.setVariable("apiVersion", "7");
1022 execution.setVariable("requestUri",
1023 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1026 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1027 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1028 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1029 northBoundRequest.setOrchestrationFlowList(orchFlows);
1031 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1032 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1033 workflowAction.selectExecutionList(execution);
1034 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1035 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1039 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1040 String gAction = "createInstance";
1041 String resource = "VfModule";
1042 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1043 execution.setVariable("requestAction", gAction);
1044 String bpmnRequest =
1045 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1046 execution.setVariable("bpmnRequest", bpmnRequest);
1047 execution.setVariable("aLaCarte", true);
1048 execution.setVariable("apiVersion", "7");
1049 execution.setVariable("requestUri",
1050 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1052 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1053 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1054 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1055 northBoundRequest.setOrchestrationFlowList(orchFlows);
1057 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1058 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1059 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1060 new CvnfcConfigurationCustomization();
1061 ConfigurationResource configurationResource = new ConfigurationResource();
1062 configurationResource.setToscaNodeType("FabricConfiguration");
1063 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1064 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1065 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1066 Set<CvnfcConfigurationCustomization> custSet = new HashSet<CvnfcConfigurationCustomization>();
1067 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1068 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1069 cvnfcCustomization.setDescription("description");
1070 cvnfcCustomizations.add(cvnfcCustomization);
1072 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1073 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1074 new CvnfcConfigurationCustomization();
1075 ConfigurationResource configurationResource2 = new ConfigurationResource();
1076 configurationResource2.setToscaNodeType("FabricConfiguration");
1077 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1078 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1079 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1080 Set<CvnfcConfigurationCustomization> custSet2 = new HashSet<CvnfcConfigurationCustomization>();
1081 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1082 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1083 cvnfcCustomization2.setDescription("description2");
1084 cvnfcCustomizations.add(cvnfcCustomization2);
1086 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1087 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1088 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1089 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1090 workflowAction.selectExecutionList(execution);
1091 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1092 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1093 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1094 "ActivateFabricConfigurationBB");
1098 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1099 String gAction = "deleteInstance";
1100 String resource = "VfModule";
1101 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1102 execution.setVariable("requestAction", gAction);
1103 String bpmnRequest =
1104 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1105 execution.setVariable("bpmnRequest", bpmnRequest);
1106 execution.setVariable("aLaCarte", true);
1107 execution.setVariable("apiVersion", "7");
1108 execution.setVariable("requestUri",
1109 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1111 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1112 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1113 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1114 northBoundRequest.setOrchestrationFlowList(orchFlows);
1116 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1117 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1119 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1120 vnf.setVnfId("vnf0");
1121 vnf.setModelCustomizationId("modelCustomizationId");
1122 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1124 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1125 vfModule.setModelCustomizationId("modelCustomizationId");
1126 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1128 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1129 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1130 vnfc.setModelInvariantId("modelInvariantId");
1131 vnfc.setVnfcName("testVnfcName");
1133 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1136 List<org.onap.aai.domain.yang.Configuration> configurations =
1137 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1138 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1139 configuration.setConfigurationId("configurationId");
1140 configuration.setModelCustomizationId("modelCustimizationId");
1141 configuration.setConfigurationName("testConfigurationName");
1142 configurations.add(configuration);
1143 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1146 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1148 SPY_workflowAction.selectExecutionList(execution);
1149 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1150 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1151 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1155 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1156 String gAction = "deleteInstance";
1157 String resource = "VfModule";
1158 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1159 execution.setVariable("requestAction", gAction);
1160 String bpmnRequest =
1161 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1162 execution.setVariable("bpmnRequest", bpmnRequest);
1163 execution.setVariable("aLaCarte", true);
1164 execution.setVariable("apiVersion", "7");
1165 execution.setVariable("requestUri",
1166 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1168 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1169 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1170 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1171 northBoundRequest.setOrchestrationFlowList(orchFlows);
1173 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1174 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1176 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1177 vnf.setVnfId("vnf0");
1178 vnf.setModelCustomizationId("modelCustomizationId");
1179 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1181 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1182 vfModule.setModelCustomizationId("modelCustomizationId");
1183 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1185 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1186 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1187 vnfc.setModelInvariantId("modelInvariantId");
1188 vnfc.setVnfcName("testVnfcName");
1190 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1193 List<org.onap.aai.domain.yang.Configuration> configurations =
1194 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1195 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1196 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1199 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1201 SPY_workflowAction.selectExecutionList(execution);
1202 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1203 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1207 public void getRelatedResourcesInVfModuleTest() throws Exception {
1208 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1209 vnfc.setModelInvariantId("modelInvariantId");
1210 vnfc.setVnfcName("testVnfcName");
1212 String vfncPayload =
1213 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1214 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1216 String configurationPayload =
1217 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1218 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1219 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1220 configurationResultWrappers.add(configurationWrapper);
1222 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1223 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1225 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1227 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1228 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1229 assertEquals(1, configurationsList.size());
1230 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1234 * WorkflowActionBB Tests
1238 public void pluralTest() {
1239 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1240 "networks, Network", "invalidNames, invalidNames");
1241 items.forEach(item -> {
1242 String[] split = item.split(",");
1243 String type = split[0].trim();
1244 String expected = split[1].trim();
1245 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1250 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1251 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1252 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1253 BuildingBlock bb = new BuildingBlock();
1254 bb.setBpmnFlowName("AssignNetworkBB");
1256 ebb.setBuildingBlock(bb);
1257 executeFlows.add(ebb);
1258 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1259 BuildingBlock bb2 = new BuildingBlock();
1260 bb2.setBpmnFlowName("AssignNetworkBB");
1262 ebb2.setBuildingBlock(bb2);
1263 executeFlows.add(ebb2);
1264 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1265 BuildingBlock bb3 = new BuildingBlock();
1266 bb3.setBpmnFlowName("CreateNetworkBB");
1268 ebb3.setBuildingBlock(bb3);
1269 executeFlows.add(ebb3);
1270 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1271 BuildingBlock bb4 = new BuildingBlock();
1272 bb4.setBpmnFlowName("CreateNetworkBB");
1274 ebb4.setBuildingBlock(bb4);
1275 executeFlows.add(ebb4);
1276 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1277 BuildingBlock bb5 = new BuildingBlock();
1278 bb5.setBpmnFlowName("ActivateNetworkBB");
1280 ebb5.setBuildingBlock(bb5);
1281 executeFlows.add(ebb5);
1282 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1283 BuildingBlock bb6 = new BuildingBlock();
1284 bb6.setBpmnFlowName("ActivateNetworkBB");
1286 ebb6.setBuildingBlock(bb6);
1287 executeFlows.add(ebb6);
1289 List<ExecuteBuildingBlock> sorted =
1290 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1291 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1292 "CreateNetworkBB", "ActivateNetworkBB");
1296 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1297 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1298 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1299 BuildingBlock bb = new BuildingBlock();
1300 bb.setBpmnFlowName("DeactivateNetworkBB");
1302 ebb.setBuildingBlock(bb);
1303 executeFlows.add(ebb);
1304 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1305 BuildingBlock bb2 = new BuildingBlock();
1306 bb2.setBpmnFlowName("DeactivateNetworkBB");
1308 ebb2.setBuildingBlock(bb2);
1309 executeFlows.add(ebb2);
1310 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1311 BuildingBlock bb3 = new BuildingBlock();
1312 bb3.setBpmnFlowName("DeleteNetworkBB");
1314 ebb3.setBuildingBlock(bb3);
1315 executeFlows.add(ebb3);
1316 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1317 BuildingBlock bb4 = new BuildingBlock();
1318 bb4.setBpmnFlowName("DeleteNetworkBB");
1320 ebb4.setBuildingBlock(bb4);
1321 executeFlows.add(ebb4);
1322 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1323 BuildingBlock bb5 = new BuildingBlock();
1324 bb5.setBpmnFlowName("UnassignNetworkBB");
1326 ebb5.setBuildingBlock(bb5);
1327 executeFlows.add(ebb5);
1328 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1329 BuildingBlock bb6 = new BuildingBlock();
1330 bb6.setBpmnFlowName("UnassignNetworkBB");
1332 ebb6.setBuildingBlock(bb6);
1333 executeFlows.add(ebb6);
1335 List<ExecuteBuildingBlock> sorted =
1336 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1337 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1338 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1342 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1343 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1344 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1345 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1346 northBoundRequest.setOrchestrationFlowList(orchFlows);
1347 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1348 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1350 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1351 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1352 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1353 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1354 WorkflowType.VNF, false, "my-custom-cloud-owner");
1355 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1356 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1357 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1358 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1359 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1360 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1361 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1362 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1363 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1364 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1368 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1369 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1370 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1371 northBoundRequest.setOrchestrationFlowList(orchFlows);
1372 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1373 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1375 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1376 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1377 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1381 public void extractResourceIdAndTypeFromUriTest() {
1382 String uri = "/v6/serviceInstances/123";
1383 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1384 String uri3 = "/v6/serviceInstances";
1385 String uri4 = "/v6/serviceInstances/assign";
1386 String uri5 = "'/v6/serviceInstances/123/vnfs";
1387 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1388 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1389 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1390 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1391 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1392 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1393 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1394 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1395 assertEquals(expected1.getResourceId(), result.getResourceId());
1396 assertEquals(expected1.getResourceType(), result.getResourceType());
1397 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1398 assertEquals(expected2.getResourceId(), result.getResourceId());
1399 assertEquals(expected2.getResourceType(), result.getResourceType());
1400 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1401 assertEquals("Service", result.getResourceType().toString());
1402 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1403 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1404 assertEquals("Service", result.getResourceType().toString());
1405 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1406 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1407 assertEquals("Vnf", result.getResourceType().toString());
1408 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1409 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1410 assertEquals(expected3.getResourceId(), result.getResourceId());
1411 assertEquals(expected3.getResourceType(), result.getResourceType());
1412 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1413 assertEquals(expected4.getResourceId(), result.getResourceId());
1414 assertEquals(expected4.getResourceType(), result.getResourceType());
1415 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1416 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1417 assertEquals("VfModule", result.getResourceType().toString());
1422 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1423 this.expectedException.expect(IllegalArgumentException.class);
1424 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1425 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1429 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1430 this.expectedException.expect(IllegalArgumentException.class);
1431 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1432 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1436 public void populateResourceIdsFromApiHandlerTest() {
1437 execution.setVariable("serviceInstanceId", "123");
1438 execution.setVariable("vnfId", "888");
1439 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1440 assertEquals("123", x.getServiceInstanceId());
1441 assertEquals("888", x.getVnfId());
1442 assertNull(x.getVolumeGroupId());
1446 public void validateResourceIdInAAITest() throws Exception {
1448 RequestDetails reqDetails = new RequestDetails();
1449 SubscriberInfo subInfo = new SubscriberInfo();
1450 subInfo.setGlobalSubscriberId("id123");
1451 reqDetails.setSubscriberInfo(subInfo);
1452 RequestParameters reqParams = new RequestParameters();
1453 reqParams.setSubscriptionServiceType("subServiceType123");
1454 reqDetails.setRequestParameters(reqParams);
1455 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1456 ServiceInstance si = new ServiceInstance();
1457 si.setServiceInstanceId("siId123");
1458 Optional<ServiceInstance> siOp = Optional.of(si);
1459 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1460 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1461 .thenReturn(Optional.empty());
1462 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1463 reqDetails, workflowResourceIds);
1464 assertEquals("siId123", id);
1465 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1466 reqDetails, workflowResourceIds);
1467 assertEquals("generatedId123", id2);
1470 L3Network network = new L3Network();
1471 network.setNetworkId("id123");
1472 network.setNetworkName("name123");
1473 workflowResourceIds.setServiceInstanceId("siId123");
1474 Optional<L3Network> opNetwork = Optional.of(network);
1475 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1476 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1477 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails,
1478 workflowResourceIds);
1479 assertEquals("id123", id);
1480 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails,
1481 workflowResourceIds);
1482 assertEquals("generatedId123", id2);
1485 GenericVnf vnf = new GenericVnf();
1486 vnf.setVnfId("id123");
1487 vnf.setVnfName("vnfName123");
1488 Optional<GenericVnf> opVnf = Optional.of(vnf);
1489 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "name123")).thenReturn(opVnf);
1490 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1491 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails,
1492 workflowResourceIds);
1493 assertEquals("id123", id);
1494 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1495 workflowResourceIds);
1496 assertEquals("generatedId123", id2);
1499 VfModules vfModules = new VfModules();
1500 VfModule vfModule = new VfModule();
1501 vfModule.setVfModuleId("id123");
1502 vfModule.setVfModuleName("name123");
1503 vfModules.getVfModule().add(vfModule);
1504 vnf.setVfModules(vfModules);
1505 workflowResourceIds.setVnfId("id123");
1506 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1507 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails,
1508 workflowResourceIds);
1509 assertEquals("id123", id);
1511 GenericVnf vnf2 = new GenericVnf();
1512 VfModules vfModules2 = new VfModules();
1513 VfModule vfModule2 = new VfModule();
1514 vfModule2.setVfModuleId("id123");
1515 vfModule2.setVfModuleName("name123");
1516 vfModules2.getVfModule().add(vfModule2);
1517 vnf2.setVfModules(vfModules2);
1518 workflowResourceIds.setVnfId("id111");
1519 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1520 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails,
1521 workflowResourceIds);
1522 assertEquals("generatedId123", id2);
1525 VolumeGroup volumeGroup = new VolumeGroup();
1526 volumeGroup.setVolumeGroupId("id123");
1527 volumeGroup.setVolumeGroupName("name123");
1528 workflowResourceIds.setVnfId("id123");
1529 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1530 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1531 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
1532 workflowResourceIds);
1533 assertEquals("id123", id);
1535 workflowResourceIds.setVnfId("id444");
1536 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1537 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1538 .thenReturn(opVolumeGroup);
1539 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444", "111111")).thenReturn(Optional.empty());
1540 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails,
1541 workflowResourceIds);
1542 assertEquals("id123", id2);
1546 public void handleRuntimeExceptionTest() {
1547 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1548 execution.setVariable("testProcessKey", "testProcessKeyValue");
1550 workflowAction.handleRuntimeException(execution);
1551 } catch (BpmnError wfe) {
1552 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1558 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
1559 execution.setVariable("testProcessKey", "testProcessKeyValue");
1560 Service service = new Service();
1561 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1562 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1563 networkCust.setModelCustomizationUUID("123");
1564 networkCustomizations.add(networkCust);
1565 service.setNetworkCustomizations(networkCustomizations);
1566 NetworkCollectionResourceCustomization collectionResourceCustomization =
1567 new NetworkCollectionResourceCustomization();
1568 collectionResourceCustomization.setModelCustomizationUUID("123");
1569 CollectionResource collectionResource = new CollectionResource();
1570 collectionResource.setToscaNodeType("NetworkCollection");
1571 InstanceGroup instanceGroup = new InstanceGroup();
1572 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1573 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1574 new CollectionResourceInstanceGroupCustomization();
1575 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1576 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1577 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1578 collectionResource.setInstanceGroup(instanceGroup);
1579 collectionResourceCustomization.setCollectionResource(collectionResource);;
1580 service.setModelUUID("abc");
1581 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1582 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1583 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1584 doReturn(collectionResourceCustomization).when(catalogDbClient)
1585 .getNetworkCollectionResourceCustomizationByID("123");
1586 String bpmnRequest = new String(Files
1587 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1588 ObjectMapper mapper = new ObjectMapper();
1589 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1590 List<Resource> resourceCounter = new ArrayList<>();
1591 thrown.expect(BpmnError.class);
1592 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1593 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
1597 public void sortVfModulesByBaseFirstTest() {
1598 List<Resource> resources = new ArrayList<>();
1599 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1600 resource1.setBaseVfModule(false);
1601 resources.add(resource1);
1602 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1603 resource2.setBaseVfModule(false);
1604 resources.add(resource2);
1605 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1606 resource3.setBaseVfModule(true);
1607 resources.add(resource3);
1608 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1609 assertEquals("333", result.get(0).getResourceId());
1610 assertEquals("222", result.get(1).getResourceId());
1611 assertEquals("111", result.get(2).getResourceId());
1615 public void sortVfModulesByBaseLastTest() {
1616 List<Resource> resources = new ArrayList<>();
1617 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1618 resource1.setBaseVfModule(true);
1619 resources.add(resource1);
1620 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1621 resource2.setBaseVfModule(false);
1622 resources.add(resource2);
1623 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1624 resource3.setBaseVfModule(false);
1625 resources.add(resource3);
1626 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1627 assertEquals("333", result.get(0).getResourceId());
1628 assertEquals("222", result.get(1).getResourceId());
1629 assertEquals("111", result.get(2).getResourceId());
1633 public void findCatalogNetworkCollectionTest() {
1634 Service service = new Service();
1635 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1636 networkCustomization.setModelCustomizationUUID("123");
1637 service.getCollectionResourceCustomizations().add(networkCustomization);
1638 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1639 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1640 assertNotNull(customization);
1644 public void findCatalogNetworkCollectionEmptyTest() {
1645 Service service = new Service();
1646 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1647 networkCustomization.setModelCustomizationUUID("123");
1648 service.getCollectionResourceCustomizations().add(networkCustomization);
1649 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1650 assertNull(customization);
1654 public void findCatalogNetworkCollectionMoreThanOneTest() {
1655 Service service = new Service();
1656 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1657 networkCustomization1.setModelCustomizationUUID("123");
1658 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1659 networkCustomization2.setModelCustomizationUUID("321");
1660 service.getCollectionResourceCustomizations().add(networkCustomization1);
1661 service.getCollectionResourceCustomizations().add(networkCustomization2);
1662 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1663 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1664 workflowAction.findCatalogNetworkCollection(execution, service);
1665 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1666 execution.getVariable("WorkflowActionErrorMessage"));
1670 public void verifyLackOfNullPointerExceptionForNullResource() {
1671 ExecuteBuildingBlock result = null;
1673 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
1674 false, null, null, null, false, null, true);
1675 } catch (NullPointerException e) {
1676 fail("NullPointerException should not be thrown when 'resource' is null");
1678 assertNotNull(result);
1682 public void traverseAAIServiceTest() {
1683 List<Resource> resourceCounter = new ArrayList<>();
1684 String resourceId = "si0";
1685 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1687 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1688 serviceInstanceAAI.setServiceInstanceId(resourceId);
1690 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
1698 Configuration config = new Configuration();
1699 config.setConfigurationId("testConfigurationId2");
1700 serviceInstance.getConfigurations().add(config);
1702 Relationship relationship1 = new Relationship();
1703 relationship1.setRelatedTo("vnfc");
1704 RelationshipList relationshipList1 = new RelationshipList();
1705 relationshipList1.getRelationship().add(relationship1);
1707 Relationship relationship2 = new Relationship();
1708 relationship2.setRelatedTo("vpn-binding");
1709 RelationshipList relationshipList2 = new RelationshipList();
1710 relationshipList2.getRelationship().add(relationship2);
1712 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
1713 aaiConfiguration1.setConfigurationId("testConfigurationId");
1714 aaiConfiguration1.setRelationshipList(relationshipList1);
1716 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
1717 aaiConfiguration2.setConfigurationId("testConfigurationId2");
1718 aaiConfiguration2.setRelationshipList(relationshipList1);
1721 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
1722 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1723 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
1724 .getConfiguration("testConfigurationId");
1725 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
1726 .getConfiguration("testConfigurationId2");
1727 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
1728 assertEquals(8, resourceCounter.size());
1729 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
1730 } catch (Exception e) {
1731 fail("Unexpected exception was thrown.");
1735 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
1736 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
1737 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
1738 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
1739 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
1740 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
1741 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
1742 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
1743 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
1747 private List<OrchestrationFlow> createFlowList(String... flowNames) {
1748 List<OrchestrationFlow> result = new ArrayList<>();
1749 for (String flowName : flowNames) {
1750 OrchestrationFlow orchFlow = new OrchestrationFlow();
1751 orchFlow.setFlowName(flowName);
1752 result.add(orchFlow);
1757 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
1758 for (int i = 0; i < ebbs.size(); i++) {
1759 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);