2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.workflow.tasks;
23 import static org.hamcrest.CoreMatchers.containsString;
24 import static org.hamcrest.CoreMatchers.equalTo;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.assertThat;
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 java.io.IOException;
35 import java.net.MalformedURLException;
36 import java.nio.file.Files;
37 import java.nio.file.Paths;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.HashSet;
41 import java.util.List;
42 import java.util.Optional;
43 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 import com.fasterxml.jackson.databind.ObjectMapper;
95 public class WorkflowActionTest extends BaseTaskTest {
99 protected Environment environment;
101 protected WorkflowAction workflowAction;
102 private DelegateExecution execution;
106 public ExpectedException thrown = ExpectedException.none();
109 public void before() throws Exception {
110 execution = new DelegateExecutionFake();
111 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
112 servInstance.setServiceInstanceId("TEST");
113 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
114 workflowAction.setBbInputSetupUtils(bbSetupUtils);
115 workflowAction.setBbInputSetup(bbInputSetup);
121 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
122 String gAction = "createInstance";
123 String resource = "Network";
124 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
125 execution.setVariable("requestAction", gAction);
126 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
127 execution.setVariable("bpmnRequest", bpmnRequest);
128 execution.setVariable("aLaCarte", true);
129 execution.setVariable("apiVersion", "7");
130 execution.setVariable("requestUri", "v6/networks/123");
132 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
133 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
134 northBoundRequest.setOrchestrationFlowList(orchFlows);
136 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
137 workflowAction.selectExecutionList(execution);
138 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
139 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
143 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
144 String gAction = "deleteInstance";
145 String resource = "Network";
146 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
147 execution.setVariable("requestAction", gAction);
148 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
149 execution.setVariable("bpmnRequest", bpmnRequest);
150 execution.setVariable("aLaCarte", true);
151 execution.setVariable("apiVersion", "7");
152 execution.setVariable("requestUri", "v6/networks/123");
154 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
155 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
156 northBoundRequest.setOrchestrationFlowList(orchFlows);
158 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
159 workflowAction.selectExecutionList(execution);
160 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
161 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
165 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
166 String gAction = "createInstance";
167 String resource = "Service";
168 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
169 execution.setVariable("requestAction", gAction);
170 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
171 execution.setVariable("bpmnRequest", bpmnRequest);
172 execution.setVariable("aLaCarte", true);
173 execution.setVariable("apiVersion", "7");
174 execution.setVariable("requestUri", "v6/serviceInstances/123");
177 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
178 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
179 northBoundRequest.setOrchestrationFlowList(orchFlows);
181 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
182 workflowAction.selectExecutionList(execution);
183 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
184 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
188 * SERVICE MACRO TESTS
191 public void selectExecutionListServiceMacroAssignTest() throws Exception{
192 String gAction = "assignInstance";
193 String resource = "Service";
194 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
195 execution.setVariable("requestAction", gAction);
196 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
197 execution.setVariable("bpmnRequest", bpmnRequest);
198 execution.setVariable("aLaCarte", false);
199 execution.setVariable("apiVersion", "7");
200 execution.setVariable("requestUri", "v6/serviceInstances/123");
203 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
204 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
205 northBoundRequest.setOrchestrationFlowList(orchFlows);
207 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
208 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
209 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
210 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
211 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
212 HeatTemplate volumeHeatTemplate = new HeatTemplate();
213 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
214 vfModuleCustomization.setVfModule(vfModule);
216 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
217 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
218 HeatEnvironment heatEnvironment = new HeatEnvironment();
219 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
220 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
221 HeatTemplate moduleHeatTemplate = new HeatTemplate();
222 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
223 vfModuleCustomization2.setVfModule(vfModule2);
225 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
226 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
228 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
229 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
230 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
231 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
232 workflowAction.selectExecutionList(execution);
233 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
234 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
238 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
239 String gAction = "assignInstance";
240 String resource = "Service";
241 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
242 execution.setVariable("requestAction", gAction);
243 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
244 execution.setVariable("bpmnRequest", bpmnRequest);
245 execution.setVariable("aLaCarte", false);
246 execution.setVariable("apiVersion", "7");
247 execution.setVariable("requestUri", "v6/serviceInstances/123");
250 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
251 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
252 northBoundRequest.setOrchestrationFlowList(orchFlows);
254 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
255 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
256 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
257 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
258 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
259 HeatTemplate volumeHeatTemplate = new HeatTemplate();
260 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
261 vfModuleCustomization.setVfModule(vfModule);
263 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
264 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
265 HeatEnvironment heatEnvironment = new HeatEnvironment();
266 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
267 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
268 HeatTemplate moduleHeatTemplate = new HeatTemplate();
269 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
270 vfModuleCustomization2.setVfModule(vfModule2);
272 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
273 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
275 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
276 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
277 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
278 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
279 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
280 workflowAction.selectExecutionList(execution);
281 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
282 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
286 public void selectExecutionListServiceMacroActivateTest() throws Exception{
287 String gAction = "activateInstance";
288 String resource = "Service";
289 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
290 execution.setVariable("requestAction", gAction);
291 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
292 execution.setVariable("bpmnRequest", bpmnRequest);
293 execution.setVariable("aLaCarte", false);
294 execution.setVariable("apiVersion", "7");
295 execution.setVariable("requestUri", "v6/serviceInstances/si0");
298 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
299 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
300 ,"ActivateVnfBB","ActivateServiceInstanceBB");
301 northBoundRequest.setOrchestrationFlowList(orchFlows);
303 ServiceInstance serviceInstanceAAI = new ServiceInstance();
304 serviceInstanceAAI.setServiceInstanceId("si0");
305 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
306 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
307 vnf.setVnfId("vnf0");
309 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
310 vfModule.setVfModuleId("vfModule0");
311 vnf.getVfModules().add(vfModule);
312 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
313 vfModule2.setVfModuleId("vfModule1");
314 vnf.getVfModules().add(vfModule2);
316 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
317 volumeGroup.setVolumeGroupId("volumeGroup0");
318 vnf.getVolumeGroups().add(volumeGroup);
320 serviceInstanceMSO.getVnfs().add(vnf);
322 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
323 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
324 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
325 workflowAction.selectExecutionList(execution);
326 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
327 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
328 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
329 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
330 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
331 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
332 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
333 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
334 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
335 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
340 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
341 String gAction = "deactivateInstance";
342 String resource = "Service";
343 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
344 execution.setVariable("requestAction", gAction);
345 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
346 execution.setVariable("bpmnRequest", bpmnRequest);
347 execution.setVariable("aLaCarte", false);
348 execution.setVariable("apiVersion", "7");
349 execution.setVariable("requestUri", "v6/serviceInstances/123");
352 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
353 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
354 northBoundRequest.setOrchestrationFlowList(orchFlows);
356 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
357 workflowAction.selectExecutionList(execution);
358 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
359 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
363 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
364 String gAction = "createInstance";
365 String resource = "Service";
366 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
367 execution.setVariable("requestAction", gAction);
368 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
369 execution.setVariable("bpmnRequest", bpmnRequest);
370 execution.setVariable("aLaCarte", false);
371 execution.setVariable("apiVersion", "7");
372 execution.setVariable("requestUri", "v6/serviceInstances/123");
375 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
376 northBoundRequest.setIsToplevelflow(true);
377 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
378 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
379 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
380 northBoundRequest.setOrchestrationFlowList(orchFlows);
382 Service service = new Service();
383 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
384 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
385 workflowAction.selectExecutionList(execution);
386 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
387 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
391 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
392 String gAction = "createInstance";
393 String resource = "Service";
394 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
395 execution.setVariable("requestAction", gAction);
396 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
397 execution.setVariable("bpmnRequest", bpmnRequest);
398 execution.setVariable("aLaCarte", false);
399 execution.setVariable("apiVersion", "7");
400 execution.setVariable("requestUri", "v6/serviceInstances/123");
403 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
404 northBoundRequest.setIsToplevelflow(true);
405 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
406 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
407 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
408 northBoundRequest.setOrchestrationFlowList(orchFlows);
410 Service service = new Service();
411 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
412 networkCustomization.setModelCustomizationUUID("1234");
413 service.getNetworkCustomizations().add(networkCustomization);
414 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
415 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
416 workflowAction.selectExecutionList(execution);
417 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
418 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
422 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
423 String gAction = "createInstance";
424 String resource = "Service";
425 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
426 execution.setVariable("requestAction", gAction);
427 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
428 execution.setVariable("bpmnRequest", bpmnRequest);
429 execution.setVariable("aLaCarte", false);
430 execution.setVariable("apiVersion", "7");
431 execution.setVariable("requestUri", "v6/serviceInstances/123");
434 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
435 northBoundRequest.setIsToplevelflow(true);
436 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
437 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
438 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
439 northBoundRequest.setOrchestrationFlowList(orchFlows);
441 Service service = new Service();
442 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
443 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
444 networkCust.setModelCustomizationUUID("123");
445 networkCustomizations.add(networkCust);
446 service.setNetworkCustomizations(networkCustomizations);
447 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
448 collectionResourceCustomization.setModelCustomizationUUID("123");
450 CollectionResource collectionResource = new CollectionResource();
451 collectionResource.setToscaNodeType("NetworkCollection");
452 InstanceGroup instanceGroup = new InstanceGroup();
453 instanceGroup.setToscaNodeType("NetworkCollectionResource");
454 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
455 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
456 collectionNetworkResourceCust.setModelCustomizationUUID("123");
457 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
458 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
459 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
460 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
461 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
462 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
463 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
464 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
465 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
466 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
467 collectionResource.setInstanceGroup(instanceGroup);
468 collectionResourceCustomization.setCollectionResource(collectionResource);;
469 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
470 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
471 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
472 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
473 workflowAction.selectExecutionList(execution);
474 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
475 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
476 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
477 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
478 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
479 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
480 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
481 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
482 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
483 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
484 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
485 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
486 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
487 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
488 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
489 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
490 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
491 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
492 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
493 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
494 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
498 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
499 String gAction = "createInstance";
500 String resource = "Service";
501 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
502 execution.setVariable("requestAction", gAction);
503 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
504 execution.setVariable("bpmnRequest", bpmnRequest);
505 execution.setVariable("aLaCarte", false);
506 execution.setVariable("apiVersion", "7");
507 execution.setVariable("requestUri", "v6/serviceInstances/123");
510 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
511 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
512 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
513 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
514 northBoundRequest.setOrchestrationFlowList(orchFlows);
516 Service service = new Service();
517 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
519 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
520 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
521 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
522 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
523 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
524 HeatTemplate volumeHeatTemplate = new HeatTemplate();
525 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
526 vfModuleCustomization.setVfModule(vfModule);
528 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
529 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
530 HeatEnvironment heatEnvironment = new HeatEnvironment();
531 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
532 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
533 HeatTemplate moduleHeatTemplate = new HeatTemplate();
534 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
535 vfModuleCustomization2.setVfModule(vfModule2);
537 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
538 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
540 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
541 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
542 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
543 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
544 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
545 workflowAction.selectExecutionList(execution);
546 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
547 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
548 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
549 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
550 int randomUUIDLength = UUID.randomUUID().toString().length();
551 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
552 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
553 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
554 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
555 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
556 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
557 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
558 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
559 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
560 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
561 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
562 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
563 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
564 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
565 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
566 assertEquals(true, execution.getVariable("homing"));
570 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
571 String gAction = "deleteInstance";
572 String resource = "Service";
573 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
574 execution.setVariable("requestAction", gAction);
575 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
576 execution.setVariable("bpmnRequest", bpmnRequest);
577 execution.setVariable("aLaCarte", false);
578 execution.setVariable("apiVersion", "7");
579 execution.setVariable("requestUri", "v6/serviceInstances/123");
582 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
583 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
584 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
585 northBoundRequest.setOrchestrationFlowList(orchFlows);
587 ServiceInstance serviceInstanceAAI = new ServiceInstance();
588 serviceInstanceAAI.setServiceInstanceId("aaisi123");
589 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
590 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
591 vnf.setVnfId("vnfId123");
593 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
594 vfModule.setVfModuleId("vfModule1");
595 vnf.getVfModules().add(vfModule);
596 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
597 vfModule2.setVfModuleId("vfModule2");
598 vnf.getVfModules().add(vfModule2);
600 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
601 volumeGroup.setVolumeGroupId("vg123");
602 vnf.getVolumeGroups().add(volumeGroup);
604 serviceInstanceMSO.getVnfs().add(vnf);
606 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
607 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
608 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
609 workflowAction.selectExecutionList(execution);
610 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
611 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
612 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
616 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
617 String gAction = "unassignInstance";
618 String resource = "Service";
619 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
620 execution.setVariable("requestAction", gAction);
621 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
622 execution.setVariable("bpmnRequest", bpmnRequest);
623 execution.setVariable("aLaCarte", false);
624 execution.setVariable("apiVersion", "7");
625 execution.setVariable("requestUri", "v6/serviceInstances/123");
628 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
629 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
630 northBoundRequest.setOrchestrationFlowList(orchFlows);
632 ServiceInstance serviceInstanceAAI = new ServiceInstance();
633 serviceInstanceAAI.setServiceInstanceId("aaisi123");
634 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
635 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
636 vnf.setVnfId("vnfId123");
638 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
639 vfModule.setVfModuleId("vfModule1");
640 vnf.getVfModules().add(vfModule);
641 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
642 vfModule2.setVfModuleId("vfModule2");
643 vnf.getVfModules().add(vfModule2);
645 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
646 volumeGroup.setVolumeGroupId("vg123");
647 vnf.getVolumeGroups().add(volumeGroup);
649 serviceInstanceMSO.getVnfs().add(vnf);
651 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
652 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
653 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
654 workflowAction.selectExecutionList(execution);
655 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
656 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
660 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
661 String gAction = "deleteInstance";
662 String resource = "Service";
663 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
664 execution.setVariable("requestAction", gAction);
665 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
666 execution.setVariable("bpmnRequest", bpmnRequest);
667 execution.setVariable("aLaCarte", false);
668 execution.setVariable("apiVersion", "7");
669 execution.setVariable("requestUri", "v6/serviceInstances/123");
672 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
673 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
674 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","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 = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
681 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
682 network.setNetworkId("123");
683 serviceInstanceMSO.getNetworks().add(network);
684 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
685 network2.setNetworkId("321");
686 serviceInstanceMSO.getNetworks().add(network2);
688 Collection collection = new Collection();
689 serviceInstanceMSO.setCollection(collection);
691 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
692 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
693 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
694 workflowAction.selectExecutionList(execution);
695 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
696 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
697 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
701 public void selectExecutionListVnfMacroRecreateTest() throws Exception{
702 String gAction = "recreateInstance";
703 String resource = "Vnf";
704 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
705 execution.setVariable("requestAction", gAction);
706 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
707 execution.setVariable("bpmnRequest", bpmnRequest);
708 execution.setVariable("aLaCarte", false);
709 execution.setVariable("apiVersion", "7");
710 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
711 execution.setVariable("serviceInstanceId", "123");
712 execution.setVariable("vnfId", "1234");
714 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
715 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
716 ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
717 northBoundRequest.setOrchestrationFlowList(orchFlows);
719 ServiceInstance serviceInstanceAAI = new ServiceInstance();
720 serviceInstanceAAI.setServiceInstanceId("123");
721 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
722 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
723 vnf.setVnfId("1234");
725 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
726 vfModule.setVfModuleId("vfModule1");
727 vnf.getVfModules().add(vfModule);
728 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
729 vfModule2.setVfModuleId("vfModule2");
730 vnf.getVfModules().add(vfModule2);
732 serviceInstanceMSO.getVnfs().add(vnf);
734 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
735 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
736 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
737 workflowAction.selectExecutionList(execution);
738 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
739 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
740 ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
744 public void selectExecutionListVnfMacroReplaceTest() throws Exception{
745 String gAction = "replaceInstance";
746 String resource = "Vnf";
747 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
748 execution.setVariable("requestAction", gAction);
749 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
750 execution.setVariable("bpmnRequest", bpmnRequest);
751 execution.setVariable("aLaCarte", false);
752 execution.setVariable("apiVersion", "7");
753 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
754 execution.setVariable("serviceInstanceId", "123");
755 execution.setVariable("vnfId", "1234");
757 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
758 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
759 ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
760 northBoundRequest.setOrchestrationFlowList(orchFlows);
762 ServiceInstance serviceInstanceAAI = new ServiceInstance();
763 serviceInstanceAAI.setServiceInstanceId("123");
764 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
765 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
766 vnf.setVnfId("1234");
767 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
768 vfModule.setVfModuleId("vfModule1");
769 vnf.getVfModules().add(vfModule);
770 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
771 vfModule2.setVfModuleId("vfModule2");
772 vnf.getVfModules().add(vfModule2);
773 serviceInstanceMSO.getVnfs().add(vnf);
774 VfModule vfModuleAAI = new VfModule();
775 vfModuleAAI.setVfModuleId("vfModule2");
776 RelationshipList relationshipList = new RelationshipList();
777 Relationship relationship = new Relationship();
778 relationshipList.getRelationship().add(relationship);
779 vfModuleAAI.setRelationshipList(relationshipList);
780 Relationships relationships = new Relationships("abc");
781 Configuration config = new Configuration();
782 config.setConfigurationId("configId");
783 Optional<Configuration> configOp = Optional.of(config);
784 Optional<Relationships> relationshipsOp = Optional.of(relationships);
786 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
787 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
788 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
789 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
790 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
791 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
792 workflowAction.selectExecutionList(execution);
793 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
794 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
795 ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
800 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
801 String gAction = "createInstance";
802 String resource = "NetworkCollection";
803 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
804 execution.setVariable("requestAction", gAction);
805 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
806 execution.setVariable("bpmnRequest", bpmnRequest);
807 execution.setVariable("aLaCarte", false);
808 execution.setVariable("apiVersion", "7");
809 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
812 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
813 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
814 northBoundRequest.setOrchestrationFlowList(orchFlows);
816 Service service = new Service();
817 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
818 CollectionResource collectionResource = new CollectionResource();
819 collectionResource.setToscaNodeType("Data NetworkCollection Data");
820 collectionResourceCustomization.setCollectionResource(collectionResource);
821 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
823 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
824 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
825 workflowAction.selectExecutionList(execution);
826 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
827 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
832 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
833 String gAction = "deleteInstance";
834 String resource = "NetworkCollection";
835 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
836 execution.setVariable("requestAction", gAction);
837 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
838 execution.setVariable("bpmnRequest", bpmnRequest);
839 execution.setVariable("aLaCarte", false);
840 execution.setVariable("apiVersion", "7");
841 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
843 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
844 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
845 northBoundRequest.setOrchestrationFlowList(orchFlows);
847 Service service = new Service();
848 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
849 CollectionResource collectionResource = new CollectionResource();
850 collectionResource.setToscaNodeType("Data NetworkCollection Data");
851 collectionResourceCustomization.setCollectionResource(collectionResource);
852 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
854 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
855 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
856 workflowAction.selectExecutionList(execution);
857 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
858 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
859 ,"DeleteNetworkCollectionBB");
863 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception{
864 String gAction = "createInstance";
865 String resource = "VfModule";
866 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
867 execution.setVariable("requestAction", gAction);
868 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
869 execution.setVariable("bpmnRequest", bpmnRequest);
870 execution.setVariable("aLaCarte", true);
871 execution.setVariable("apiVersion", "7");
872 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
875 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
876 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
877 northBoundRequest.setOrchestrationFlowList(orchFlows);
879 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
880 workflowAction.selectExecutionList(execution);
881 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
882 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB");
886 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception{
887 String gAction = "createInstance";
888 String resource = "VfModule";
889 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
890 execution.setVariable("requestAction", gAction);
891 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
892 execution.setVariable("bpmnRequest", bpmnRequest);
893 execution.setVariable("aLaCarte", true);
894 execution.setVariable("apiVersion", "7");
895 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
897 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
898 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
899 northBoundRequest.setOrchestrationFlowList(orchFlows);
901 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
902 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
903 VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
904 ConfigurationResource configurationResource = new ConfigurationResource();
905 configurationResource.setToscaNodeType("FabricConfiguration");
906 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
907 Set<VnfVfmoduleCvnfcConfigurationCustomization> custSet = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
908 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
909 cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(custSet);
910 cvnfcCustomizations.add(cvnfcCustomization);
912 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
913 when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae", "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
914 workflowAction.selectExecutionList(execution);
915 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
916 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
920 * WorkflowActionBB Tests
924 public void pluralTest() {
925 List<String> items = Arrays.asList(
926 "serviceInstances, Service",
928 "vfModules, VfModule",
930 "invalidNames, invalidNames");
931 items.forEach(item -> {
932 String[] split = item.split(",");
933 String type = split[0].trim();
934 String expected = split[1].trim();
935 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
940 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
941 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
942 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
943 BuildingBlock bb = new BuildingBlock();
944 bb.setBpmnFlowName("AssignNetworkBB");
946 ebb.setBuildingBlock(bb);
947 executeFlows.add(ebb);
948 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
949 BuildingBlock bb2 = new BuildingBlock();
950 bb2.setBpmnFlowName("AssignNetworkBB");
952 ebb2.setBuildingBlock(bb2);
953 executeFlows.add(ebb2);
954 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
955 BuildingBlock bb3 = new BuildingBlock();
956 bb3.setBpmnFlowName("CreateNetworkBB");
958 ebb3.setBuildingBlock(bb3);
959 executeFlows.add(ebb3);
960 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
961 BuildingBlock bb4 = new BuildingBlock();
962 bb4.setBpmnFlowName("CreateNetworkBB");
964 ebb4.setBuildingBlock(bb4);
965 executeFlows.add(ebb4);
966 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
967 BuildingBlock bb5 = new BuildingBlock();
968 bb5.setBpmnFlowName("ActivateNetworkBB");
970 ebb5.setBuildingBlock(bb5);
971 executeFlows.add(ebb5);
972 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
973 BuildingBlock bb6 = new BuildingBlock();
974 bb6.setBpmnFlowName("ActivateNetworkBB");
976 ebb6.setBuildingBlock(bb6);
977 executeFlows.add(ebb6);
979 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
980 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
984 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
985 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
986 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
987 BuildingBlock bb = new BuildingBlock();
988 bb.setBpmnFlowName("DeactivateNetworkBB");
990 ebb.setBuildingBlock(bb);
991 executeFlows.add(ebb);
992 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
993 BuildingBlock bb2 = new BuildingBlock();
994 bb2.setBpmnFlowName("DeactivateNetworkBB");
996 ebb2.setBuildingBlock(bb2);
997 executeFlows.add(ebb2);
998 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
999 BuildingBlock bb3 = new BuildingBlock();
1000 bb3.setBpmnFlowName("DeleteNetworkBB");
1002 ebb3.setBuildingBlock(bb3);
1003 executeFlows.add(ebb3);
1004 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1005 BuildingBlock bb4 = new BuildingBlock();
1006 bb4.setBpmnFlowName("DeleteNetworkBB");
1008 ebb4.setBuildingBlock(bb4);
1009 executeFlows.add(ebb4);
1010 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1011 BuildingBlock bb5 = new BuildingBlock();
1012 bb5.setBpmnFlowName("UnassignNetworkBB");
1014 ebb5.setBuildingBlock(bb5);
1015 executeFlows.add(ebb5);
1016 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1017 BuildingBlock bb6 = new BuildingBlock();
1018 bb6.setBpmnFlowName("UnassignNetworkBB");
1020 ebb6.setBuildingBlock(bb6);
1021 executeFlows.add(ebb6);
1023 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1024 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
1027 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1028 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1029 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
1030 northBoundRequest.setOrchestrationFlowList(orchFlows);
1031 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
1033 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
1034 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1035 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
1036 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1037 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1038 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1039 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1040 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
1041 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
1042 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
1043 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
1044 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1045 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1049 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1050 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1051 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1052 northBoundRequest.setOrchestrationFlowList(orchFlows);
1053 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType("createInstance","Service",true,"my-custom-cloud-owner","TRANSPORT")).thenReturn(northBoundRequest);
1055 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance", WorkflowType.SERVICE, true,"my-custom-cloud-owner","TRANSPORT");
1056 assertEquals(flows.get(0).getFlowName(),"AssignServiceInstanceBB");
1060 public void extractResourceIdAndTypeFromUriTest(){
1061 String uri = "/v6/serviceInstances/123";
1062 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1063 String uri3 = "/v6/serviceInstances";
1064 String uri4 = "/v6/serviceInstances/assign";
1065 String uri5 = "'/v6/serviceInstances/123/vnfs";
1066 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1067 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1068 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1069 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1070 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1071 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1072 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1073 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1074 assertEquals(expected1.getResourceId(),result.getResourceId());
1075 assertEquals(expected1.getResourceType(),result.getResourceType());
1076 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1077 assertEquals(expected2.getResourceId(),result.getResourceId());
1078 assertEquals(expected2.getResourceType(),result.getResourceType());
1079 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1080 assertEquals("Service", result.getResourceType().toString());
1081 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1082 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1083 assertEquals("Service", result.getResourceType().toString());
1084 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1085 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1086 assertEquals("Vnf", result.getResourceType().toString());
1087 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1088 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1089 assertEquals(expected3.getResourceId(),result.getResourceId());
1090 assertEquals(expected3.getResourceType(),result.getResourceType());
1091 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1092 assertEquals(expected4.getResourceId(),result.getResourceId());
1093 assertEquals(expected4.getResourceType(),result.getResourceType());
1094 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1095 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1096 assertEquals("VfModule", result.getResourceType().toString());
1101 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1102 this.expectedException.expect(IllegalArgumentException.class);
1103 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1104 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1108 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1109 this.expectedException.expect(IllegalArgumentException.class);
1110 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1111 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1115 public void populateResourceIdsFromApiHandlerTest(){
1116 execution.setVariable("serviceInstanceId", "123");
1117 execution.setVariable("vnfId", "888");
1118 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1119 assertEquals("123",x.getServiceInstanceId());
1120 assertEquals("888",x.getVnfId());
1121 assertNull(x.getVolumeGroupId());
1125 public void validateResourceIdInAAITest() throws Exception{
1127 RequestDetails reqDetails = new RequestDetails();
1128 SubscriberInfo subInfo = new SubscriberInfo();
1129 subInfo.setGlobalSubscriberId("id123");
1130 reqDetails.setSubscriberInfo(subInfo);
1131 RequestParameters reqParams = new RequestParameters();
1132 reqParams.setSubscriptionServiceType("subServiceType123");
1133 reqDetails.setRequestParameters(reqParams );
1134 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1135 ServiceInstance si = new ServiceInstance();
1136 si.setServiceInstanceId("siId123");
1137 Optional<ServiceInstance> siOp = Optional.of(si);
1138 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1139 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1140 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1141 assertEquals("siId123",id);
1142 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1143 assertEquals("generatedId123",id2);
1146 L3Network network = new L3Network();
1147 network.setNetworkId("id123");
1148 network.setNetworkName("name123");
1149 workflowResourceIds.setServiceInstanceId("siId123");
1150 Optional<L3Network> opNetwork = Optional.of(network);
1151 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1152 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1153 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1154 assertEquals("id123",id);
1155 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1156 assertEquals("generatedId123",id2);
1159 GenericVnf vnf = new GenericVnf();
1160 vnf.setVnfId("id123");
1161 vnf.setVnfName("vnfName123");
1162 Optional<GenericVnf> opVnf = Optional.of(vnf);
1163 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1164 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1165 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1166 assertEquals("id123",id);
1167 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1168 assertEquals("generatedId123",id2);
1171 VfModules vfModules = new VfModules();
1172 VfModule vfModule = new VfModule();
1173 vfModule.setVfModuleId("id123");
1174 vfModule.setVfModuleName("name123");
1175 vfModules.getVfModule().add(vfModule);
1176 vnf.setVfModules(vfModules);
1177 workflowResourceIds.setVnfId("id123");
1178 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1179 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1180 assertEquals("id123",id);
1182 GenericVnf vnf2 = new GenericVnf();
1183 VfModules vfModules2 = new VfModules();
1184 VfModule vfModule2 = new VfModule();
1185 vfModule2.setVfModuleId("id123");
1186 vfModule2.setVfModuleName("name123");
1187 vfModules2.getVfModule().add(vfModule2);
1188 vnf2.setVfModules(vfModules2);
1189 workflowResourceIds.setVnfId("id111");
1190 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1191 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1192 assertEquals("generatedId123",id2);
1195 VolumeGroup volumeGroup = new VolumeGroup();
1196 volumeGroup.setVolumeGroupId("id123");
1197 volumeGroup.setVolumeGroupName("name123");
1198 workflowResourceIds.setVnfId("id123");
1199 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1200 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1201 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1202 assertEquals("id123",id);
1204 workflowResourceIds.setVnfId("id444");
1205 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1206 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1207 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1208 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1209 assertEquals("id123",id2);
1213 public void handleRuntimeExceptionTest(){
1214 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1215 execution.setVariable("testProcessKey", "testProcessKeyValue");
1217 workflowAction.handleRuntimeException(execution);
1218 } catch (BpmnError wfe) {
1219 assertEquals("MSOWorkflowException",wfe.getErrorCode());
1225 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1226 execution.setVariable("testProcessKey", "testProcessKeyValue");
1227 Service service = new Service();
1228 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1229 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1230 networkCust.setModelCustomizationUUID("123");
1231 networkCustomizations.add(networkCust);
1232 service.setNetworkCustomizations(networkCustomizations);
1233 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1234 collectionResourceCustomization.setModelCustomizationUUID("123");
1235 CollectionResource collectionResource = new CollectionResource();
1236 collectionResource.setToscaNodeType("NetworkCollection");
1237 InstanceGroup instanceGroup = new InstanceGroup();
1238 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1239 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1240 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1241 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1242 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1243 collectionResource.setInstanceGroup(instanceGroup);
1244 collectionResourceCustomization.setCollectionResource(collectionResource);;
1245 service.setModelUUID("abc");
1246 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1247 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1248 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1249 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1250 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1251 ObjectMapper mapper = new ObjectMapper();
1252 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1253 List<Resource> resourceCounter = new ArrayList<>();
1254 thrown.expect(BpmnError.class);
1255 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1259 public void sortVfModulesByBaseFirstTest(){
1260 List<Resource> resources = new ArrayList<>();
1261 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1262 resource1.setBaseVfModule(false);
1263 resources.add(resource1);
1264 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1265 resource2.setBaseVfModule(false);
1266 resources.add(resource2);
1267 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1268 resource3.setBaseVfModule(true);
1269 resources.add(resource3);
1270 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1271 assertEquals("333",result.get(0).getResourceId());
1272 assertEquals("222",result.get(1).getResourceId());
1273 assertEquals("111",result.get(2).getResourceId());
1277 public void sortVfModulesByBaseLastTest(){
1278 List<Resource> resources = new ArrayList<>();
1279 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1280 resource1.setBaseVfModule(true);
1281 resources.add(resource1);
1282 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1283 resource2.setBaseVfModule(false);
1284 resources.add(resource2);
1285 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1286 resource3.setBaseVfModule(false);
1287 resources.add(resource3);
1288 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1289 assertEquals("333",result.get(0).getResourceId());
1290 assertEquals("222",result.get(1).getResourceId());
1291 assertEquals("111",result.get(2).getResourceId());
1294 private List<OrchestrationFlow> createFlowList (String... flowNames){
1295 List<OrchestrationFlow> result = new ArrayList<>();
1296 for(String flowName : flowNames){
1297 OrchestrationFlow orchFlow = new OrchestrationFlow();
1298 orchFlow.setFlowName(flowName);
1299 result.add(orchFlow);
1304 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1305 for(int i = 0; i<ebbs.size(); i++){
1306 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);