2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import static org.hamcrest.CoreMatchers.containsString;
26 import static org.hamcrest.CoreMatchers.equalTo;
27 import static org.junit.Assert.*;
28 import static org.mockito.ArgumentMatchers.anyObject;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.Matchers.isA;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.when;
34 import com.fasterxml.jackson.databind.ObjectMapper;
35 import java.io.IOException;
36 import java.net.MalformedURLException;
37 import java.nio.file.Files;
38 import java.nio.file.Paths;
39 import java.util.ArrayList;
40 import java.util.Arrays;
41 import java.util.HashSet;
42 import java.util.List;
43 import java.util.Optional;
45 import java.util.UUID;
46 import org.camunda.bpm.engine.delegate.BpmnError;
47 import org.camunda.bpm.engine.delegate.DelegateExecution;
48 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
49 import org.junit.Before;
50 import org.junit.Ignore;
51 import org.junit.Rule;
52 import org.junit.Test;
53 import org.junit.rules.ExpectedException;
54 import org.mockito.InjectMocks;
55 import org.mockito.Mock;
56 import org.onap.aai.domain.yang.GenericVnf;
57 import org.onap.aai.domain.yang.L3Network;
58 import org.onap.aai.domain.yang.Relationship;
59 import org.onap.aai.domain.yang.RelationshipList;
60 import org.onap.aai.domain.yang.ServiceInstance;
61 import org.onap.aai.domain.yang.VfModule;
62 import org.onap.aai.domain.yang.VfModules;
63 import org.onap.aai.domain.yang.VolumeGroup;
64 import org.onap.so.bpmn.BaseTaskTest;
65 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
66 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
67 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
68 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
69 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
70 import org.onap.so.client.aai.entities.Relationships;
71 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
72 import org.onap.so.db.catalog.beans.CollectionResource;
73 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
74 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
75 import org.onap.so.db.catalog.beans.ConfigurationResource;
76 import org.onap.so.db.catalog.beans.CvnfcCustomization;
77 import org.onap.so.db.catalog.beans.HeatEnvironment;
78 import org.onap.so.db.catalog.beans.HeatTemplate;
79 import org.onap.so.db.catalog.beans.InstanceGroup;
80 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
81 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
82 import org.onap.so.db.catalog.beans.Service;
83 import org.onap.so.db.catalog.beans.VfModuleCustomization;
84 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
85 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
86 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
87 import org.onap.so.serviceinstancebeans.RequestDetails;
88 import org.onap.so.serviceinstancebeans.RequestParameters;
89 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
90 import org.onap.so.serviceinstancebeans.SubscriberInfo;
91 import org.springframework.core.env.Environment;
93 public class WorkflowActionTest extends BaseTaskTest {
97 protected Environment environment;
99 protected WorkflowAction workflowAction;
100 private DelegateExecution execution;
104 public ExpectedException thrown = ExpectedException.none();
107 public void before() throws Exception {
108 execution = new DelegateExecutionFake();
109 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
110 servInstance.setServiceInstanceId("TEST");
111 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
112 workflowAction.setBbInputSetupUtils(bbSetupUtils);
113 workflowAction.setBbInputSetup(bbInputSetup);
119 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
120 String gAction = "createInstance";
121 String resource = "Network";
122 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
123 execution.setVariable("requestAction", gAction);
124 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
125 execution.setVariable("bpmnRequest", bpmnRequest);
126 execution.setVariable("aLaCarte", true);
127 execution.setVariable("apiVersion", "7");
128 execution.setVariable("requestUri", "v6/networks/123");
130 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
131 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
132 northBoundRequest.setOrchestrationFlowList(orchFlows);
134 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
135 workflowAction.selectExecutionList(execution);
136 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
137 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
141 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
142 String gAction = "deleteInstance";
143 String resource = "Network";
144 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
145 execution.setVariable("requestAction", gAction);
146 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
147 execution.setVariable("bpmnRequest", bpmnRequest);
148 execution.setVariable("aLaCarte", true);
149 execution.setVariable("apiVersion", "7");
150 execution.setVariable("requestUri", "v6/networks/123");
152 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
153 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
154 northBoundRequest.setOrchestrationFlowList(orchFlows);
156 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
157 workflowAction.selectExecutionList(execution);
158 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
159 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
163 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
164 String gAction = "createInstance";
165 String resource = "Service";
166 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
167 execution.setVariable("requestAction", gAction);
168 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
169 execution.setVariable("bpmnRequest", bpmnRequest);
170 execution.setVariable("aLaCarte", true);
171 execution.setVariable("apiVersion", "7");
172 execution.setVariable("requestUri", "v6/serviceInstances/123");
175 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
176 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
177 northBoundRequest.setOrchestrationFlowList(orchFlows);
179 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
180 workflowAction.selectExecutionList(execution);
181 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
182 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
186 * SERVICE MACRO TESTS
189 public void selectExecutionListServiceMacroAssignTest() throws Exception{
190 String gAction = "assignInstance";
191 String resource = "Service";
192 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
193 execution.setVariable("requestAction", gAction);
194 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
195 execution.setVariable("bpmnRequest", bpmnRequest);
196 execution.setVariable("aLaCarte", false);
197 execution.setVariable("apiVersion", "7");
198 execution.setVariable("requestUri", "v6/serviceInstances/123");
201 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
202 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
203 northBoundRequest.setOrchestrationFlowList(orchFlows);
205 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
206 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
207 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
208 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
209 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
210 HeatTemplate volumeHeatTemplate = new HeatTemplate();
211 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
212 vfModuleCustomization.setVfModule(vfModule);
214 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
215 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
216 HeatEnvironment heatEnvironment = new HeatEnvironment();
217 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
218 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
219 HeatTemplate moduleHeatTemplate = new HeatTemplate();
220 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
221 vfModuleCustomization2.setVfModule(vfModule2);
223 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
224 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
226 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
227 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
228 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
229 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
230 workflowAction.selectExecutionList(execution);
231 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
232 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
236 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
237 String gAction = "assignInstance";
238 String resource = "Service";
239 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
240 execution.setVariable("requestAction", gAction);
241 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
242 execution.setVariable("bpmnRequest", bpmnRequest);
243 execution.setVariable("aLaCarte", false);
244 execution.setVariable("apiVersion", "7");
245 execution.setVariable("requestUri", "v6/serviceInstances/123");
248 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
249 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
250 northBoundRequest.setOrchestrationFlowList(orchFlows);
252 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
253 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
254 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
255 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
256 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
257 HeatTemplate volumeHeatTemplate = new HeatTemplate();
258 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
259 vfModuleCustomization.setVfModule(vfModule);
261 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
262 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
263 HeatEnvironment heatEnvironment = new HeatEnvironment();
264 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
265 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
266 HeatTemplate moduleHeatTemplate = new HeatTemplate();
267 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
268 vfModuleCustomization2.setVfModule(vfModule2);
270 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
271 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
273 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
274 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
275 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
276 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
277 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
278 workflowAction.selectExecutionList(execution);
279 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
280 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
284 public void selectExecutionListServiceMacroActivateTest() throws Exception{
285 String gAction = "activateInstance";
286 String resource = "Service";
287 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
288 execution.setVariable("requestAction", gAction);
289 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
290 execution.setVariable("bpmnRequest", bpmnRequest);
291 execution.setVariable("aLaCarte", false);
292 execution.setVariable("apiVersion", "7");
293 execution.setVariable("requestUri", "v6/serviceInstances/si0");
296 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
297 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
298 ,"ActivateVnfBB","ActivateServiceInstanceBB");
299 northBoundRequest.setOrchestrationFlowList(orchFlows);
301 ServiceInstance serviceInstanceAAI = new ServiceInstance();
302 serviceInstanceAAI.setServiceInstanceId("si0");
303 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
304 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
305 vnf.setVnfId("vnf0");
307 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
308 vfModule.setVfModuleId("vfModule0");
309 vnf.getVfModules().add(vfModule);
310 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
311 vfModule2.setVfModuleId("vfModule1");
312 vnf.getVfModules().add(vfModule2);
314 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
315 volumeGroup.setVolumeGroupId("volumeGroup0");
316 vnf.getVolumeGroups().add(volumeGroup);
318 serviceInstanceMSO.getVnfs().add(vnf);
320 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
321 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
322 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
323 workflowAction.selectExecutionList(execution);
324 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
325 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
326 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
327 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
328 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
329 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
330 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
331 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
332 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
333 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
338 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
339 String gAction = "deactivateInstance";
340 String resource = "Service";
341 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
342 execution.setVariable("requestAction", gAction);
343 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
344 execution.setVariable("bpmnRequest", bpmnRequest);
345 execution.setVariable("aLaCarte", false);
346 execution.setVariable("apiVersion", "7");
347 execution.setVariable("requestUri", "v6/serviceInstances/123");
350 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
351 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
352 northBoundRequest.setOrchestrationFlowList(orchFlows);
354 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
355 workflowAction.selectExecutionList(execution);
356 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
357 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
361 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
362 String gAction = "createInstance";
363 String resource = "Service";
364 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
365 execution.setVariable("requestAction", gAction);
366 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
367 execution.setVariable("bpmnRequest", bpmnRequest);
368 execution.setVariable("aLaCarte", false);
369 execution.setVariable("apiVersion", "7");
370 execution.setVariable("requestUri", "v6/serviceInstances/123");
373 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
374 northBoundRequest.setIsToplevelflow(true);
375 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
376 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
377 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
378 northBoundRequest.setOrchestrationFlowList(orchFlows);
380 Service service = new Service();
381 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
382 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
383 workflowAction.selectExecutionList(execution);
384 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
385 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
389 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
390 String gAction = "createInstance";
391 String resource = "Service";
392 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
393 execution.setVariable("requestAction", gAction);
394 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
395 execution.setVariable("bpmnRequest", bpmnRequest);
396 execution.setVariable("aLaCarte", false);
397 execution.setVariable("apiVersion", "7");
398 execution.setVariable("requestUri", "v6/serviceInstances/123");
401 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
402 northBoundRequest.setIsToplevelflow(true);
403 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
404 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
405 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
406 northBoundRequest.setOrchestrationFlowList(orchFlows);
408 Service service = new Service();
409 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
410 networkCustomization.setModelCustomizationUUID("1234");
411 service.getNetworkCustomizations().add(networkCustomization);
412 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
413 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
414 workflowAction.selectExecutionList(execution);
415 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
416 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
420 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
421 String gAction = "createInstance";
422 String resource = "Service";
423 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
424 execution.setVariable("requestAction", gAction);
425 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
426 execution.setVariable("bpmnRequest", bpmnRequest);
427 execution.setVariable("aLaCarte", false);
428 execution.setVariable("apiVersion", "7");
429 execution.setVariable("requestUri", "v6/serviceInstances/123");
432 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
433 northBoundRequest.setIsToplevelflow(true);
434 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
435 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
436 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
437 northBoundRequest.setOrchestrationFlowList(orchFlows);
439 Service service = new Service();
440 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
441 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
442 networkCust.setModelCustomizationUUID("123");
443 networkCustomizations.add(networkCust);
444 service.setNetworkCustomizations(networkCustomizations);
445 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
446 collectionResourceCustomization.setModelCustomizationUUID("123");
448 CollectionResource collectionResource = new CollectionResource();
449 collectionResource.setToscaNodeType("NetworkCollection");
450 InstanceGroup instanceGroup = new InstanceGroup();
451 instanceGroup.setToscaNodeType("NetworkCollectionResource");
452 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
453 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
454 collectionNetworkResourceCust.setModelCustomizationUUID("123");
455 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
456 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
457 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
458 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
459 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
460 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
461 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
462 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
463 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
464 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
465 collectionResource.setInstanceGroup(instanceGroup);
466 collectionResourceCustomization.setCollectionResource(collectionResource);;
467 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
468 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
469 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
470 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
471 workflowAction.selectExecutionList(execution);
472 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
473 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
474 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
475 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
476 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
477 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
478 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
479 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
480 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
481 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
482 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
483 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
484 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
485 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
486 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
487 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
488 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
489 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
490 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
491 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
492 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
496 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
497 String gAction = "createInstance";
498 String resource = "Service";
499 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
500 execution.setVariable("requestAction", gAction);
501 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
502 execution.setVariable("bpmnRequest", bpmnRequest);
503 execution.setVariable("aLaCarte", false);
504 execution.setVariable("apiVersion", "7");
505 execution.setVariable("requestUri", "v6/serviceInstances/123");
508 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
509 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
510 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
511 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
512 northBoundRequest.setOrchestrationFlowList(orchFlows);
514 Service service = new Service();
515 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
517 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
518 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
519 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
520 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
521 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
522 HeatTemplate volumeHeatTemplate = new HeatTemplate();
523 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
524 vfModuleCustomization.setVfModule(vfModule);
526 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
527 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
528 HeatEnvironment heatEnvironment = new HeatEnvironment();
529 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
530 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
531 HeatTemplate moduleHeatTemplate = new HeatTemplate();
532 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
533 vfModuleCustomization2.setVfModule(vfModule2);
535 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
536 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
538 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
539 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
540 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
541 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
542 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
543 workflowAction.selectExecutionList(execution);
544 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
545 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
546 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
547 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
548 int randomUUIDLength = UUID.randomUUID().toString().length();
549 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
550 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
551 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
552 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
553 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
554 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
555 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
556 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
557 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
558 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
559 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
560 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
561 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
562 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
563 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
564 assertEquals(true, execution.getVariable("homing"));
568 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
569 String gAction = "deleteInstance";
570 String resource = "Service";
571 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
572 execution.setVariable("requestAction", gAction);
573 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
574 execution.setVariable("bpmnRequest", bpmnRequest);
575 execution.setVariable("aLaCarte", false);
576 execution.setVariable("apiVersion", "7");
577 execution.setVariable("requestUri", "v6/serviceInstances/123");
580 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
581 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
582 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
583 northBoundRequest.setOrchestrationFlowList(orchFlows);
585 ServiceInstance serviceInstanceAAI = new ServiceInstance();
586 serviceInstanceAAI.setServiceInstanceId("aaisi123");
587 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
588 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
589 vnf.setVnfId("vnfId123");
591 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
592 vfModule.setVfModuleId("vfModule1");
593 vnf.getVfModules().add(vfModule);
594 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
595 vfModule2.setVfModuleId("vfModule2");
596 vnf.getVfModules().add(vfModule2);
598 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
599 volumeGroup.setVolumeGroupId("vg123");
600 vnf.getVolumeGroups().add(volumeGroup);
602 serviceInstanceMSO.getVnfs().add(vnf);
604 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
605 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
606 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
607 workflowAction.selectExecutionList(execution);
608 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
609 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
610 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
614 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
615 String gAction = "unassignInstance";
616 String resource = "Service";
617 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
618 execution.setVariable("requestAction", gAction);
619 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
620 execution.setVariable("bpmnRequest", bpmnRequest);
621 execution.setVariable("aLaCarte", false);
622 execution.setVariable("apiVersion", "7");
623 execution.setVariable("requestUri", "v6/serviceInstances/123");
626 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
627 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
628 northBoundRequest.setOrchestrationFlowList(orchFlows);
630 ServiceInstance serviceInstanceAAI = new ServiceInstance();
631 serviceInstanceAAI.setServiceInstanceId("aaisi123");
632 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
633 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
634 vnf.setVnfId("vnfId123");
636 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
637 vfModule.setVfModuleId("vfModule1");
638 vnf.getVfModules().add(vfModule);
639 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
640 vfModule2.setVfModuleId("vfModule2");
641 vnf.getVfModules().add(vfModule2);
643 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
644 volumeGroup.setVolumeGroupId("vg123");
645 vnf.getVolumeGroups().add(volumeGroup);
647 serviceInstanceMSO.getVnfs().add(vnf);
649 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
650 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
651 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
652 workflowAction.selectExecutionList(execution);
653 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
654 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
658 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
659 String gAction = "deleteInstance";
660 String resource = "Service";
661 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
662 execution.setVariable("requestAction", gAction);
663 String bpmnRequest = new String(Files.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","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
672 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
673 northBoundRequest.setOrchestrationFlowList(orchFlows);
675 ServiceInstance serviceInstanceAAI = new ServiceInstance();
676 serviceInstanceAAI.setServiceInstanceId("aaisi123");
677 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
679 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
680 network.setNetworkId("123");
681 serviceInstanceMSO.getNetworks().add(network);
682 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
683 network2.setNetworkId("321");
684 serviceInstanceMSO.getNetworks().add(network2);
686 Collection collection = new Collection();
687 serviceInstanceMSO.setCollection(collection);
689 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
690 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
691 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
692 workflowAction.selectExecutionList(execution);
693 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
694 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
695 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
699 public void selectExecutionListVnfMacroRecreateTest() throws Exception{
700 String gAction = "recreateInstance";
701 String resource = "Vnf";
702 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
703 execution.setVariable("requestAction", gAction);
704 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
705 execution.setVariable("bpmnRequest", bpmnRequest);
706 execution.setVariable("aLaCarte", false);
707 execution.setVariable("apiVersion", "7");
708 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
709 execution.setVariable("serviceInstanceId", "123");
710 execution.setVariable("vnfId", "1234");
712 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
713 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
714 ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
715 northBoundRequest.setOrchestrationFlowList(orchFlows);
717 ServiceInstance serviceInstanceAAI = new ServiceInstance();
718 serviceInstanceAAI.setServiceInstanceId("123");
719 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
720 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
721 vnf.setVnfId("1234");
723 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
724 vfModule.setVfModuleId("vfModule1");
725 vnf.getVfModules().add(vfModule);
726 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
727 vfModule2.setVfModuleId("vfModule2");
728 vnf.getVfModules().add(vfModule2);
730 serviceInstanceMSO.getVnfs().add(vnf);
732 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
733 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
734 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
735 workflowAction.selectExecutionList(execution);
736 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
737 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
738 ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
742 public void selectExecutionListVnfMacroReplaceTest() throws Exception{
743 String gAction = "replaceInstance";
744 String resource = "Vnf";
745 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
746 execution.setVariable("requestAction", gAction);
747 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
748 execution.setVariable("bpmnRequest", bpmnRequest);
749 execution.setVariable("aLaCarte", false);
750 execution.setVariable("apiVersion", "7");
751 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
752 execution.setVariable("serviceInstanceId", "123");
753 execution.setVariable("vnfId", "1234");
755 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
756 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
757 ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
758 northBoundRequest.setOrchestrationFlowList(orchFlows);
760 ServiceInstance serviceInstanceAAI = new ServiceInstance();
761 serviceInstanceAAI.setServiceInstanceId("123");
762 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
763 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
764 vnf.setVnfId("1234");
765 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
766 vfModule.setVfModuleId("vfModule1");
767 vnf.getVfModules().add(vfModule);
768 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
769 vfModule2.setVfModuleId("vfModule2");
770 vnf.getVfModules().add(vfModule2);
771 serviceInstanceMSO.getVnfs().add(vnf);
772 VfModule vfModuleAAI = new VfModule();
773 vfModuleAAI.setVfModuleId("vfModule2");
774 RelationshipList relationshipList = new RelationshipList();
775 Relationship relationship = new Relationship();
776 relationshipList.getRelationship().add(relationship);
777 vfModuleAAI.setRelationshipList(relationshipList);
778 Relationships relationships = new Relationships("abc");
779 Configuration config = new Configuration();
780 config.setConfigurationId("configId");
781 Optional<Configuration> configOp = Optional.of(config);
782 Optional<Relationships> relationshipsOp = Optional.of(relationships);
784 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
785 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
786 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
787 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
788 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
789 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
790 workflowAction.selectExecutionList(execution);
791 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
792 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
793 ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
798 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
799 String gAction = "createInstance";
800 String resource = "NetworkCollection";
801 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
802 execution.setVariable("requestAction", gAction);
803 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
804 execution.setVariable("bpmnRequest", bpmnRequest);
805 execution.setVariable("aLaCarte", false);
806 execution.setVariable("apiVersion", "7");
807 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
810 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
811 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
812 northBoundRequest.setOrchestrationFlowList(orchFlows);
814 Service service = new Service();
815 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
816 CollectionResource collectionResource = new CollectionResource();
817 collectionResource.setToscaNodeType("Data NetworkCollection Data");
818 collectionResourceCustomization.setCollectionResource(collectionResource);
819 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
821 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
822 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
823 workflowAction.selectExecutionList(execution);
824 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
825 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
830 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
831 String gAction = "deleteInstance";
832 String resource = "NetworkCollection";
833 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
834 execution.setVariable("requestAction", gAction);
835 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
836 execution.setVariable("bpmnRequest", bpmnRequest);
837 execution.setVariable("aLaCarte", false);
838 execution.setVariable("apiVersion", "7");
839 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
841 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
842 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
843 northBoundRequest.setOrchestrationFlowList(orchFlows);
845 Service service = new Service();
846 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
847 CollectionResource collectionResource = new CollectionResource();
848 collectionResource.setToscaNodeType("Data NetworkCollection Data");
849 collectionResourceCustomization.setCollectionResource(collectionResource);
850 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
852 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
853 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
854 workflowAction.selectExecutionList(execution);
855 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
856 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
857 ,"DeleteNetworkCollectionBB");
861 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception{
862 String gAction = "createInstance";
863 String resource = "VfModule";
864 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
865 execution.setVariable("requestAction", gAction);
866 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
867 execution.setVariable("bpmnRequest", bpmnRequest);
868 execution.setVariable("aLaCarte", true);
869 execution.setVariable("apiVersion", "7");
870 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
873 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
874 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
875 northBoundRequest.setOrchestrationFlowList(orchFlows);
877 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
878 workflowAction.selectExecutionList(execution);
879 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
880 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB");
884 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception{
885 String gAction = "createInstance";
886 String resource = "VfModule";
887 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
888 execution.setVariable("requestAction", gAction);
889 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
890 execution.setVariable("bpmnRequest", bpmnRequest);
891 execution.setVariable("aLaCarte", true);
892 execution.setVariable("apiVersion", "7");
893 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
895 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
896 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
897 northBoundRequest.setOrchestrationFlowList(orchFlows);
899 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
900 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
901 VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
902 ConfigurationResource configurationResource = new ConfigurationResource();
903 configurationResource.setToscaNodeType("FabricConfiguration");
904 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
905 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
906 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
907 Set<VnfVfmoduleCvnfcConfigurationCustomization> custSet = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
908 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
909 cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(custSet);
910 cvnfcCustomization.setDescription("description");
911 cvnfcCustomizations.add(cvnfcCustomization);
913 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
914 VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 = new VnfVfmoduleCvnfcConfigurationCustomization();
915 ConfigurationResource configurationResource2 = new ConfigurationResource();
916 configurationResource2.setToscaNodeType("FabricConfiguration");
917 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
918 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
919 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
920 Set<VnfVfmoduleCvnfcConfigurationCustomization> custSet2 = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
921 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
922 cvnfcCustomization2.setVnfVfmoduleCvnfcConfigurationCustomization(custSet2);
923 cvnfcCustomization2.setDescription("description2");
924 cvnfcCustomizations.add(cvnfcCustomization2);
926 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
927 when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae", "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
928 workflowAction.selectExecutionList(execution);
929 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
930 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB", "AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
934 * WorkflowActionBB Tests
938 public void pluralTest() {
939 List<String> items = Arrays.asList(
940 "serviceInstances, Service",
942 "vfModules, VfModule",
944 "invalidNames, invalidNames");
945 items.forEach(item -> {
946 String[] split = item.split(",");
947 String type = split[0].trim();
948 String expected = split[1].trim();
949 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
954 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
955 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
956 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
957 BuildingBlock bb = new BuildingBlock();
958 bb.setBpmnFlowName("AssignNetworkBB");
960 ebb.setBuildingBlock(bb);
961 executeFlows.add(ebb);
962 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
963 BuildingBlock bb2 = new BuildingBlock();
964 bb2.setBpmnFlowName("AssignNetworkBB");
966 ebb2.setBuildingBlock(bb2);
967 executeFlows.add(ebb2);
968 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
969 BuildingBlock bb3 = new BuildingBlock();
970 bb3.setBpmnFlowName("CreateNetworkBB");
972 ebb3.setBuildingBlock(bb3);
973 executeFlows.add(ebb3);
974 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
975 BuildingBlock bb4 = new BuildingBlock();
976 bb4.setBpmnFlowName("CreateNetworkBB");
978 ebb4.setBuildingBlock(bb4);
979 executeFlows.add(ebb4);
980 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
981 BuildingBlock bb5 = new BuildingBlock();
982 bb5.setBpmnFlowName("ActivateNetworkBB");
984 ebb5.setBuildingBlock(bb5);
985 executeFlows.add(ebb5);
986 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
987 BuildingBlock bb6 = new BuildingBlock();
988 bb6.setBpmnFlowName("ActivateNetworkBB");
990 ebb6.setBuildingBlock(bb6);
991 executeFlows.add(ebb6);
993 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
994 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
998 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
999 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1000 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1001 BuildingBlock bb = new BuildingBlock();
1002 bb.setBpmnFlowName("DeactivateNetworkBB");
1004 ebb.setBuildingBlock(bb);
1005 executeFlows.add(ebb);
1006 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1007 BuildingBlock bb2 = new BuildingBlock();
1008 bb2.setBpmnFlowName("DeactivateNetworkBB");
1010 ebb2.setBuildingBlock(bb2);
1011 executeFlows.add(ebb2);
1012 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1013 BuildingBlock bb3 = new BuildingBlock();
1014 bb3.setBpmnFlowName("DeleteNetworkBB");
1016 ebb3.setBuildingBlock(bb3);
1017 executeFlows.add(ebb3);
1018 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1019 BuildingBlock bb4 = new BuildingBlock();
1020 bb4.setBpmnFlowName("DeleteNetworkBB");
1022 ebb4.setBuildingBlock(bb4);
1023 executeFlows.add(ebb4);
1024 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1025 BuildingBlock bb5 = new BuildingBlock();
1026 bb5.setBpmnFlowName("UnassignNetworkBB");
1028 ebb5.setBuildingBlock(bb5);
1029 executeFlows.add(ebb5);
1030 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1031 BuildingBlock bb6 = new BuildingBlock();
1032 bb6.setBpmnFlowName("UnassignNetworkBB");
1034 ebb6.setBuildingBlock(bb6);
1035 executeFlows.add(ebb6);
1037 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1038 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
1041 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1042 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1043 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
1044 northBoundRequest.setOrchestrationFlowList(orchFlows);
1045 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
1047 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
1048 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1049 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
1050 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1051 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1052 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1053 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1054 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
1055 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
1056 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
1057 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
1058 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1059 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1063 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1064 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1065 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1066 northBoundRequest.setOrchestrationFlowList(orchFlows);
1067 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType("createInstance","Service",true,"my-custom-cloud-owner","TRANSPORT")).thenReturn(northBoundRequest);
1069 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance", WorkflowType.SERVICE, true,"my-custom-cloud-owner","TRANSPORT");
1070 assertEquals(flows.get(0).getFlowName(),"AssignServiceInstanceBB");
1074 public void extractResourceIdAndTypeFromUriTest(){
1075 String uri = "/v6/serviceInstances/123";
1076 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1077 String uri3 = "/v6/serviceInstances";
1078 String uri4 = "/v6/serviceInstances/assign";
1079 String uri5 = "'/v6/serviceInstances/123/vnfs";
1080 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1081 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1082 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1083 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1084 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1085 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1086 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1087 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1088 assertEquals(expected1.getResourceId(),result.getResourceId());
1089 assertEquals(expected1.getResourceType(),result.getResourceType());
1090 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1091 assertEquals(expected2.getResourceId(),result.getResourceId());
1092 assertEquals(expected2.getResourceType(),result.getResourceType());
1093 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1094 assertEquals("Service", result.getResourceType().toString());
1095 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1096 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1097 assertEquals("Service", result.getResourceType().toString());
1098 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1099 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1100 assertEquals("Vnf", result.getResourceType().toString());
1101 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1102 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1103 assertEquals(expected3.getResourceId(),result.getResourceId());
1104 assertEquals(expected3.getResourceType(),result.getResourceType());
1105 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1106 assertEquals(expected4.getResourceId(),result.getResourceId());
1107 assertEquals(expected4.getResourceType(),result.getResourceType());
1108 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1109 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1110 assertEquals("VfModule", result.getResourceType().toString());
1115 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1116 this.expectedException.expect(IllegalArgumentException.class);
1117 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1118 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1122 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1123 this.expectedException.expect(IllegalArgumentException.class);
1124 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1125 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1129 public void populateResourceIdsFromApiHandlerTest(){
1130 execution.setVariable("serviceInstanceId", "123");
1131 execution.setVariable("vnfId", "888");
1132 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1133 assertEquals("123",x.getServiceInstanceId());
1134 assertEquals("888",x.getVnfId());
1135 assertNull(x.getVolumeGroupId());
1139 public void validateResourceIdInAAITest() throws Exception{
1141 RequestDetails reqDetails = new RequestDetails();
1142 SubscriberInfo subInfo = new SubscriberInfo();
1143 subInfo.setGlobalSubscriberId("id123");
1144 reqDetails.setSubscriberInfo(subInfo);
1145 RequestParameters reqParams = new RequestParameters();
1146 reqParams.setSubscriptionServiceType("subServiceType123");
1147 reqDetails.setRequestParameters(reqParams );
1148 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1149 ServiceInstance si = new ServiceInstance();
1150 si.setServiceInstanceId("siId123");
1151 Optional<ServiceInstance> siOp = Optional.of(si);
1152 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1153 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1154 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1155 assertEquals("siId123",id);
1156 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1157 assertEquals("generatedId123",id2);
1160 L3Network network = new L3Network();
1161 network.setNetworkId("id123");
1162 network.setNetworkName("name123");
1163 workflowResourceIds.setServiceInstanceId("siId123");
1164 Optional<L3Network> opNetwork = Optional.of(network);
1165 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1166 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1167 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1168 assertEquals("id123",id);
1169 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1170 assertEquals("generatedId123",id2);
1173 GenericVnf vnf = new GenericVnf();
1174 vnf.setVnfId("id123");
1175 vnf.setVnfName("vnfName123");
1176 Optional<GenericVnf> opVnf = Optional.of(vnf);
1177 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1178 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1179 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1180 assertEquals("id123",id);
1181 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1182 assertEquals("generatedId123",id2);
1185 VfModules vfModules = new VfModules();
1186 VfModule vfModule = new VfModule();
1187 vfModule.setVfModuleId("id123");
1188 vfModule.setVfModuleName("name123");
1189 vfModules.getVfModule().add(vfModule);
1190 vnf.setVfModules(vfModules);
1191 workflowResourceIds.setVnfId("id123");
1192 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1193 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1194 assertEquals("id123",id);
1196 GenericVnf vnf2 = new GenericVnf();
1197 VfModules vfModules2 = new VfModules();
1198 VfModule vfModule2 = new VfModule();
1199 vfModule2.setVfModuleId("id123");
1200 vfModule2.setVfModuleName("name123");
1201 vfModules2.getVfModule().add(vfModule2);
1202 vnf2.setVfModules(vfModules2);
1203 workflowResourceIds.setVnfId("id111");
1204 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1205 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1206 assertEquals("generatedId123",id2);
1209 VolumeGroup volumeGroup = new VolumeGroup();
1210 volumeGroup.setVolumeGroupId("id123");
1211 volumeGroup.setVolumeGroupName("name123");
1212 workflowResourceIds.setVnfId("id123");
1213 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1214 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1215 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1216 assertEquals("id123",id);
1218 workflowResourceIds.setVnfId("id444");
1219 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1220 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1221 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1222 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1223 assertEquals("id123",id2);
1227 public void handleRuntimeExceptionTest(){
1228 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1229 execution.setVariable("testProcessKey", "testProcessKeyValue");
1231 workflowAction.handleRuntimeException(execution);
1232 } catch (BpmnError wfe) {
1233 assertEquals("MSOWorkflowException",wfe.getErrorCode());
1239 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1240 execution.setVariable("testProcessKey", "testProcessKeyValue");
1241 Service service = new Service();
1242 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1243 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1244 networkCust.setModelCustomizationUUID("123");
1245 networkCustomizations.add(networkCust);
1246 service.setNetworkCustomizations(networkCustomizations);
1247 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1248 collectionResourceCustomization.setModelCustomizationUUID("123");
1249 CollectionResource collectionResource = new CollectionResource();
1250 collectionResource.setToscaNodeType("NetworkCollection");
1251 InstanceGroup instanceGroup = new InstanceGroup();
1252 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1253 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1254 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1255 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1256 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1257 collectionResource.setInstanceGroup(instanceGroup);
1258 collectionResourceCustomization.setCollectionResource(collectionResource);;
1259 service.setModelUUID("abc");
1260 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1261 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1262 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1263 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1264 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1265 ObjectMapper mapper = new ObjectMapper();
1266 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1267 List<Resource> resourceCounter = new ArrayList<>();
1268 thrown.expect(BpmnError.class);
1269 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1273 public void sortVfModulesByBaseFirstTest(){
1274 List<Resource> resources = new ArrayList<>();
1275 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1276 resource1.setBaseVfModule(false);
1277 resources.add(resource1);
1278 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1279 resource2.setBaseVfModule(false);
1280 resources.add(resource2);
1281 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1282 resource3.setBaseVfModule(true);
1283 resources.add(resource3);
1284 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1285 assertEquals("333",result.get(0).getResourceId());
1286 assertEquals("222",result.get(1).getResourceId());
1287 assertEquals("111",result.get(2).getResourceId());
1291 public void sortVfModulesByBaseLastTest(){
1292 List<Resource> resources = new ArrayList<>();
1293 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1294 resource1.setBaseVfModule(true);
1295 resources.add(resource1);
1296 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1297 resource2.setBaseVfModule(false);
1298 resources.add(resource2);
1299 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1300 resource3.setBaseVfModule(false);
1301 resources.add(resource3);
1302 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1303 assertEquals("333",result.get(0).getResourceId());
1304 assertEquals("222",result.get(1).getResourceId());
1305 assertEquals("111",result.get(2).getResourceId());
1309 public void findCatalogNetworkCollectionTest() {
1310 Service service = new Service();
1311 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1312 networkCustomization.setModelCustomizationUUID("123");
1313 service.getCollectionResourceCustomizations().add(networkCustomization);
1314 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1315 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1316 assertNotNull(customization);
1320 public void findCatalogNetworkCollectionEmptyTest() {
1321 Service service = new Service();
1322 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1323 networkCustomization.setModelCustomizationUUID("123");
1324 service.getCollectionResourceCustomizations().add(networkCustomization);
1325 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1326 assertNull(customization);
1330 public void findCatalogNetworkCollectionMoreThanOneTest() {
1331 Service service = new Service();
1332 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1333 networkCustomization1.setModelCustomizationUUID("123");
1334 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1335 networkCustomization2.setModelCustomizationUUID("321");
1336 service.getCollectionResourceCustomizations().add(networkCustomization1);
1337 service.getCollectionResourceCustomizations().add(networkCustomization2);
1338 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1339 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1340 workflowAction.findCatalogNetworkCollection(execution, service);
1341 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1342 execution.getVariable("WorkflowActionErrorMessage"));
1346 public void verifyLackOfNullPointerExceptionForNullResource(){
1347 ExecuteBuildingBlock result = null;
1349 result = workflowAction
1350 .buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null, false,
1351 null, null, null, false, null, true);
1352 }catch (NullPointerException e){
1353 fail("NullPointerException should not be thrown when 'resource' is null");
1355 assertNotNull(result);
1358 private List<OrchestrationFlow> createFlowList (String... flowNames){
1359 List<OrchestrationFlow> result = new ArrayList<>();
1360 for(String flowName : flowNames){
1361 OrchestrationFlow orchFlow = new OrchestrationFlow();
1362 orchFlow.setFlowName(flowName);
1363 result.add(orchFlow);
1368 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1369 for(int i = 0; i<ebbs.size(); i++){
1370 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);