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.assertEquals;
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.assertNull;
30 import static org.junit.Assert.assertThat;
31 import static org.mockito.ArgumentMatchers.anyObject;
32 import static org.mockito.ArgumentMatchers.anyString;
33 import static org.mockito.Matchers.isA;
34 import static org.mockito.Mockito.doReturn;
35 import static org.mockito.Mockito.when;
37 import com.fasterxml.jackson.databind.ObjectMapper;
38 import java.io.IOException;
39 import java.net.MalformedURLException;
40 import java.nio.file.Files;
41 import java.nio.file.Paths;
42 import java.util.ArrayList;
43 import java.util.Arrays;
44 import java.util.HashSet;
45 import java.util.List;
46 import java.util.Optional;
48 import java.util.UUID;
49 import org.camunda.bpm.engine.delegate.BpmnError;
50 import org.camunda.bpm.engine.delegate.DelegateExecution;
51 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
52 import org.junit.Before;
53 import org.junit.Ignore;
54 import org.junit.Rule;
55 import org.junit.Test;
56 import org.junit.rules.ExpectedException;
57 import org.mockito.InjectMocks;
58 import org.mockito.Mock;
59 import org.onap.aai.domain.yang.GenericVnf;
60 import org.onap.aai.domain.yang.L3Network;
61 import org.onap.aai.domain.yang.Relationship;
62 import org.onap.aai.domain.yang.RelationshipList;
63 import org.onap.aai.domain.yang.ServiceInstance;
64 import org.onap.aai.domain.yang.VfModule;
65 import org.onap.aai.domain.yang.VfModules;
66 import org.onap.aai.domain.yang.VolumeGroup;
67 import org.onap.so.bpmn.BaseTaskTest;
68 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
69 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
70 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
71 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
72 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
73 import org.onap.so.client.aai.entities.Relationships;
74 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
75 import org.onap.so.db.catalog.beans.CollectionResource;
76 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
77 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
78 import org.onap.so.db.catalog.beans.ConfigurationResource;
79 import org.onap.so.db.catalog.beans.CvnfcCustomization;
80 import org.onap.so.db.catalog.beans.HeatEnvironment;
81 import org.onap.so.db.catalog.beans.HeatTemplate;
82 import org.onap.so.db.catalog.beans.InstanceGroup;
83 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
84 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
85 import org.onap.so.db.catalog.beans.Service;
86 import org.onap.so.db.catalog.beans.VfModuleCustomization;
87 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
88 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
89 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
90 import org.onap.so.serviceinstancebeans.RequestDetails;
91 import org.onap.so.serviceinstancebeans.RequestParameters;
92 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
93 import org.onap.so.serviceinstancebeans.SubscriberInfo;
94 import org.springframework.core.env.Environment;
96 public class WorkflowActionTest extends BaseTaskTest {
100 protected Environment environment;
102 protected WorkflowAction workflowAction;
103 private DelegateExecution execution;
107 public ExpectedException thrown = ExpectedException.none();
110 public void before() throws Exception {
111 execution = new DelegateExecutionFake();
112 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
113 servInstance.setServiceInstanceId("TEST");
114 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
115 workflowAction.setBbInputSetupUtils(bbSetupUtils);
116 workflowAction.setBbInputSetup(bbInputSetup);
122 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
123 String gAction = "createInstance";
124 String resource = "Network";
125 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
126 execution.setVariable("requestAction", gAction);
127 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
128 execution.setVariable("bpmnRequest", bpmnRequest);
129 execution.setVariable("aLaCarte", true);
130 execution.setVariable("apiVersion", "7");
131 execution.setVariable("requestUri", "v6/networks/123");
133 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
134 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
135 northBoundRequest.setOrchestrationFlowList(orchFlows);
137 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
138 workflowAction.selectExecutionList(execution);
139 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
140 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
144 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
145 String gAction = "deleteInstance";
146 String resource = "Network";
147 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
148 execution.setVariable("requestAction", gAction);
149 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
150 execution.setVariable("bpmnRequest", bpmnRequest);
151 execution.setVariable("aLaCarte", true);
152 execution.setVariable("apiVersion", "7");
153 execution.setVariable("requestUri", "v6/networks/123");
155 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
156 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
157 northBoundRequest.setOrchestrationFlowList(orchFlows);
159 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
160 workflowAction.selectExecutionList(execution);
161 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
162 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
166 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
167 String gAction = "createInstance";
168 String resource = "Service";
169 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
170 execution.setVariable("requestAction", gAction);
171 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
172 execution.setVariable("bpmnRequest", bpmnRequest);
173 execution.setVariable("aLaCarte", true);
174 execution.setVariable("apiVersion", "7");
175 execution.setVariable("requestUri", "v6/serviceInstances/123");
178 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
179 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
180 northBoundRequest.setOrchestrationFlowList(orchFlows);
182 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
183 workflowAction.selectExecutionList(execution);
184 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
185 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
189 * SERVICE MACRO TESTS
192 public void selectExecutionListServiceMacroAssignTest() throws Exception{
193 String gAction = "assignInstance";
194 String resource = "Service";
195 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
196 execution.setVariable("requestAction", gAction);
197 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
198 execution.setVariable("bpmnRequest", bpmnRequest);
199 execution.setVariable("aLaCarte", false);
200 execution.setVariable("apiVersion", "7");
201 execution.setVariable("requestUri", "v6/serviceInstances/123");
204 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
205 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
206 northBoundRequest.setOrchestrationFlowList(orchFlows);
208 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
209 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
210 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
211 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
212 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
213 HeatTemplate volumeHeatTemplate = new HeatTemplate();
214 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
215 vfModuleCustomization.setVfModule(vfModule);
217 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
218 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
219 HeatEnvironment heatEnvironment = new HeatEnvironment();
220 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
221 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
222 HeatTemplate moduleHeatTemplate = new HeatTemplate();
223 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
224 vfModuleCustomization2.setVfModule(vfModule2);
226 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
227 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
229 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
230 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
231 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
232 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
233 workflowAction.selectExecutionList(execution);
234 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
235 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
239 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
240 String gAction = "assignInstance";
241 String resource = "Service";
242 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
243 execution.setVariable("requestAction", gAction);
244 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
245 execution.setVariable("bpmnRequest", bpmnRequest);
246 execution.setVariable("aLaCarte", false);
247 execution.setVariable("apiVersion", "7");
248 execution.setVariable("requestUri", "v6/serviceInstances/123");
251 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
252 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
253 northBoundRequest.setOrchestrationFlowList(orchFlows);
255 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
256 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
257 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
258 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
259 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
260 HeatTemplate volumeHeatTemplate = new HeatTemplate();
261 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
262 vfModuleCustomization.setVfModule(vfModule);
264 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
265 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
266 HeatEnvironment heatEnvironment = new HeatEnvironment();
267 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
268 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
269 HeatTemplate moduleHeatTemplate = new HeatTemplate();
270 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
271 vfModuleCustomization2.setVfModule(vfModule2);
273 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
274 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
276 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
277 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
278 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
279 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
280 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
281 workflowAction.selectExecutionList(execution);
282 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
283 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
287 public void selectExecutionListServiceMacroActivateTest() throws Exception{
288 String gAction = "activateInstance";
289 String resource = "Service";
290 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
291 execution.setVariable("requestAction", gAction);
292 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
293 execution.setVariable("bpmnRequest", bpmnRequest);
294 execution.setVariable("aLaCarte", false);
295 execution.setVariable("apiVersion", "7");
296 execution.setVariable("requestUri", "v6/serviceInstances/si0");
299 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
300 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
301 ,"ActivateVnfBB","ActivateServiceInstanceBB");
302 northBoundRequest.setOrchestrationFlowList(orchFlows);
304 ServiceInstance serviceInstanceAAI = new ServiceInstance();
305 serviceInstanceAAI.setServiceInstanceId("si0");
306 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
307 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
308 vnf.setVnfId("vnf0");
310 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
311 vfModule.setVfModuleId("vfModule0");
312 vnf.getVfModules().add(vfModule);
313 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
314 vfModule2.setVfModuleId("vfModule1");
315 vnf.getVfModules().add(vfModule2);
317 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
318 volumeGroup.setVolumeGroupId("volumeGroup0");
319 vnf.getVolumeGroups().add(volumeGroup);
321 serviceInstanceMSO.getVnfs().add(vnf);
323 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
324 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
325 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
326 workflowAction.selectExecutionList(execution);
327 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
328 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
329 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
330 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
331 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
332 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
333 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
334 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
335 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
336 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
341 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
342 String gAction = "deactivateInstance";
343 String resource = "Service";
344 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
345 execution.setVariable("requestAction", gAction);
346 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
347 execution.setVariable("bpmnRequest", bpmnRequest);
348 execution.setVariable("aLaCarte", false);
349 execution.setVariable("apiVersion", "7");
350 execution.setVariable("requestUri", "v6/serviceInstances/123");
353 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
354 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
355 northBoundRequest.setOrchestrationFlowList(orchFlows);
357 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
358 workflowAction.selectExecutionList(execution);
359 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
360 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
364 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
365 String gAction = "createInstance";
366 String resource = "Service";
367 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
368 execution.setVariable("requestAction", gAction);
369 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
370 execution.setVariable("bpmnRequest", bpmnRequest);
371 execution.setVariable("aLaCarte", false);
372 execution.setVariable("apiVersion", "7");
373 execution.setVariable("requestUri", "v6/serviceInstances/123");
376 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
377 northBoundRequest.setIsToplevelflow(true);
378 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
379 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
380 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
381 northBoundRequest.setOrchestrationFlowList(orchFlows);
383 Service service = new Service();
384 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
385 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
386 workflowAction.selectExecutionList(execution);
387 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
388 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
392 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
393 String gAction = "createInstance";
394 String resource = "Service";
395 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
396 execution.setVariable("requestAction", gAction);
397 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
398 execution.setVariable("bpmnRequest", bpmnRequest);
399 execution.setVariable("aLaCarte", false);
400 execution.setVariable("apiVersion", "7");
401 execution.setVariable("requestUri", "v6/serviceInstances/123");
404 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
405 northBoundRequest.setIsToplevelflow(true);
406 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
407 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
408 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
409 northBoundRequest.setOrchestrationFlowList(orchFlows);
411 Service service = new Service();
412 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
413 networkCustomization.setModelCustomizationUUID("1234");
414 service.getNetworkCustomizations().add(networkCustomization);
415 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
416 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
417 workflowAction.selectExecutionList(execution);
418 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
419 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
423 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
424 String gAction = "createInstance";
425 String resource = "Service";
426 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
427 execution.setVariable("requestAction", gAction);
428 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
429 execution.setVariable("bpmnRequest", bpmnRequest);
430 execution.setVariable("aLaCarte", false);
431 execution.setVariable("apiVersion", "7");
432 execution.setVariable("requestUri", "v6/serviceInstances/123");
435 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
436 northBoundRequest.setIsToplevelflow(true);
437 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
438 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
439 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
440 northBoundRequest.setOrchestrationFlowList(orchFlows);
442 Service service = new Service();
443 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
444 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
445 networkCust.setModelCustomizationUUID("123");
446 networkCustomizations.add(networkCust);
447 service.setNetworkCustomizations(networkCustomizations);
448 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
449 collectionResourceCustomization.setModelCustomizationUUID("123");
451 CollectionResource collectionResource = new CollectionResource();
452 collectionResource.setToscaNodeType("NetworkCollection");
453 InstanceGroup instanceGroup = new InstanceGroup();
454 instanceGroup.setToscaNodeType("NetworkCollectionResource");
455 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
456 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
457 collectionNetworkResourceCust.setModelCustomizationUUID("123");
458 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
459 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
460 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
461 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
462 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
463 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
464 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
465 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
466 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
467 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
468 collectionResource.setInstanceGroup(instanceGroup);
469 collectionResourceCustomization.setCollectionResource(collectionResource);;
470 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
471 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
472 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
473 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
474 workflowAction.selectExecutionList(execution);
475 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
476 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
477 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
478 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
479 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
480 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
481 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
482 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
483 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
484 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
485 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
486 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
487 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
488 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
489 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
490 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
491 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
492 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
493 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
494 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
495 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
499 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
500 String gAction = "createInstance";
501 String resource = "Service";
502 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
503 execution.setVariable("requestAction", gAction);
504 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
505 execution.setVariable("bpmnRequest", bpmnRequest);
506 execution.setVariable("aLaCarte", false);
507 execution.setVariable("apiVersion", "7");
508 execution.setVariable("requestUri", "v6/serviceInstances/123");
511 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
512 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
513 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
514 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
515 northBoundRequest.setOrchestrationFlowList(orchFlows);
517 Service service = new Service();
518 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
520 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
521 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
522 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
523 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
524 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
525 HeatTemplate volumeHeatTemplate = new HeatTemplate();
526 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
527 vfModuleCustomization.setVfModule(vfModule);
529 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
530 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
531 HeatEnvironment heatEnvironment = new HeatEnvironment();
532 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
533 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
534 HeatTemplate moduleHeatTemplate = new HeatTemplate();
535 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
536 vfModuleCustomization2.setVfModule(vfModule2);
538 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
539 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
541 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
542 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
543 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
544 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
545 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
546 workflowAction.selectExecutionList(execution);
547 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
548 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
549 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
550 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
551 int randomUUIDLength = UUID.randomUUID().toString().length();
552 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
553 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
554 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
555 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
556 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
557 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
558 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
559 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
560 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
561 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
562 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
563 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
564 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
565 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
566 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
567 assertEquals(true, execution.getVariable("homing"));
571 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
572 String gAction = "deleteInstance";
573 String resource = "Service";
574 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
575 execution.setVariable("requestAction", gAction);
576 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
577 execution.setVariable("bpmnRequest", bpmnRequest);
578 execution.setVariable("aLaCarte", false);
579 execution.setVariable("apiVersion", "7");
580 execution.setVariable("requestUri", "v6/serviceInstances/123");
583 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
584 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
585 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
586 northBoundRequest.setOrchestrationFlowList(orchFlows);
588 ServiceInstance serviceInstanceAAI = new ServiceInstance();
589 serviceInstanceAAI.setServiceInstanceId("aaisi123");
590 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
591 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
592 vnf.setVnfId("vnfId123");
594 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
595 vfModule.setVfModuleId("vfModule1");
596 vnf.getVfModules().add(vfModule);
597 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
598 vfModule2.setVfModuleId("vfModule2");
599 vnf.getVfModules().add(vfModule2);
601 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
602 volumeGroup.setVolumeGroupId("vg123");
603 vnf.getVolumeGroups().add(volumeGroup);
605 serviceInstanceMSO.getVnfs().add(vnf);
607 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
608 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
609 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
610 workflowAction.selectExecutionList(execution);
611 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
612 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
613 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
617 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
618 String gAction = "unassignInstance";
619 String resource = "Service";
620 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
621 execution.setVariable("requestAction", gAction);
622 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
623 execution.setVariable("bpmnRequest", bpmnRequest);
624 execution.setVariable("aLaCarte", false);
625 execution.setVariable("apiVersion", "7");
626 execution.setVariable("requestUri", "v6/serviceInstances/123");
629 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
630 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
631 northBoundRequest.setOrchestrationFlowList(orchFlows);
633 ServiceInstance serviceInstanceAAI = new ServiceInstance();
634 serviceInstanceAAI.setServiceInstanceId("aaisi123");
635 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
636 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
637 vnf.setVnfId("vnfId123");
639 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
640 vfModule.setVfModuleId("vfModule1");
641 vnf.getVfModules().add(vfModule);
642 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
643 vfModule2.setVfModuleId("vfModule2");
644 vnf.getVfModules().add(vfModule2);
646 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
647 volumeGroup.setVolumeGroupId("vg123");
648 vnf.getVolumeGroups().add(volumeGroup);
650 serviceInstanceMSO.getVnfs().add(vnf);
652 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
653 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
654 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
655 workflowAction.selectExecutionList(execution);
656 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
657 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
661 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
662 String gAction = "deleteInstance";
663 String resource = "Service";
664 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
665 execution.setVariable("requestAction", gAction);
666 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
667 execution.setVariable("bpmnRequest", bpmnRequest);
668 execution.setVariable("aLaCarte", false);
669 execution.setVariable("apiVersion", "7");
670 execution.setVariable("requestUri", "v6/serviceInstances/123");
673 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
674 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
675 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
676 northBoundRequest.setOrchestrationFlowList(orchFlows);
678 ServiceInstance serviceInstanceAAI = new ServiceInstance();
679 serviceInstanceAAI.setServiceInstanceId("aaisi123");
680 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
682 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
683 network.setNetworkId("123");
684 serviceInstanceMSO.getNetworks().add(network);
685 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
686 network2.setNetworkId("321");
687 serviceInstanceMSO.getNetworks().add(network2);
689 Collection collection = new Collection();
690 serviceInstanceMSO.setCollection(collection);
692 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
693 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
694 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
695 workflowAction.selectExecutionList(execution);
696 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
697 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
698 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
702 public void selectExecutionListVnfMacroRecreateTest() throws Exception{
703 String gAction = "recreateInstance";
704 String resource = "Vnf";
705 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
706 execution.setVariable("requestAction", gAction);
707 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
708 execution.setVariable("bpmnRequest", bpmnRequest);
709 execution.setVariable("aLaCarte", false);
710 execution.setVariable("apiVersion", "7");
711 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
712 execution.setVariable("serviceInstanceId", "123");
713 execution.setVariable("vnfId", "1234");
715 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
716 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
717 ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
718 northBoundRequest.setOrchestrationFlowList(orchFlows);
720 ServiceInstance serviceInstanceAAI = new ServiceInstance();
721 serviceInstanceAAI.setServiceInstanceId("123");
722 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
723 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
724 vnf.setVnfId("1234");
726 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
727 vfModule.setVfModuleId("vfModule1");
728 vnf.getVfModules().add(vfModule);
729 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
730 vfModule2.setVfModuleId("vfModule2");
731 vnf.getVfModules().add(vfModule2);
733 serviceInstanceMSO.getVnfs().add(vnf);
735 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
736 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
737 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
738 workflowAction.selectExecutionList(execution);
739 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
740 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
741 ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
745 public void selectExecutionListVnfMacroReplaceTest() throws Exception{
746 String gAction = "replaceInstance";
747 String resource = "Vnf";
748 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
749 execution.setVariable("requestAction", gAction);
750 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
751 execution.setVariable("bpmnRequest", bpmnRequest);
752 execution.setVariable("aLaCarte", false);
753 execution.setVariable("apiVersion", "7");
754 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
755 execution.setVariable("serviceInstanceId", "123");
756 execution.setVariable("vnfId", "1234");
758 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
759 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
760 ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
761 northBoundRequest.setOrchestrationFlowList(orchFlows);
763 ServiceInstance serviceInstanceAAI = new ServiceInstance();
764 serviceInstanceAAI.setServiceInstanceId("123");
765 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
766 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
767 vnf.setVnfId("1234");
768 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
769 vfModule.setVfModuleId("vfModule1");
770 vnf.getVfModules().add(vfModule);
771 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
772 vfModule2.setVfModuleId("vfModule2");
773 vnf.getVfModules().add(vfModule2);
774 serviceInstanceMSO.getVnfs().add(vnf);
775 VfModule vfModuleAAI = new VfModule();
776 vfModuleAAI.setVfModuleId("vfModule2");
777 RelationshipList relationshipList = new RelationshipList();
778 Relationship relationship = new Relationship();
779 relationshipList.getRelationship().add(relationship);
780 vfModuleAAI.setRelationshipList(relationshipList);
781 Relationships relationships = new Relationships("abc");
782 Configuration config = new Configuration();
783 config.setConfigurationId("configId");
784 Optional<Configuration> configOp = Optional.of(config);
785 Optional<Relationships> relationshipsOp = Optional.of(relationships);
787 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
788 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
789 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
790 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
791 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
792 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
793 workflowAction.selectExecutionList(execution);
794 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
795 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
796 ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
801 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
802 String gAction = "createInstance";
803 String resource = "NetworkCollection";
804 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
805 execution.setVariable("requestAction", gAction);
806 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
807 execution.setVariable("bpmnRequest", bpmnRequest);
808 execution.setVariable("aLaCarte", false);
809 execution.setVariable("apiVersion", "7");
810 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
813 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
814 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
815 northBoundRequest.setOrchestrationFlowList(orchFlows);
817 Service service = new Service();
818 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
819 CollectionResource collectionResource = new CollectionResource();
820 collectionResource.setToscaNodeType("Data NetworkCollection Data");
821 collectionResourceCustomization.setCollectionResource(collectionResource);
822 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
824 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
825 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
826 workflowAction.selectExecutionList(execution);
827 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
828 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
833 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
834 String gAction = "deleteInstance";
835 String resource = "NetworkCollection";
836 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
837 execution.setVariable("requestAction", gAction);
838 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
839 execution.setVariable("bpmnRequest", bpmnRequest);
840 execution.setVariable("aLaCarte", false);
841 execution.setVariable("apiVersion", "7");
842 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
844 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
845 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
846 northBoundRequest.setOrchestrationFlowList(orchFlows);
848 Service service = new Service();
849 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
850 CollectionResource collectionResource = new CollectionResource();
851 collectionResource.setToscaNodeType("Data NetworkCollection Data");
852 collectionResourceCustomization.setCollectionResource(collectionResource);
853 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
855 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
856 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
857 workflowAction.selectExecutionList(execution);
858 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
859 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
860 ,"DeleteNetworkCollectionBB");
864 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception{
865 String gAction = "createInstance";
866 String resource = "VfModule";
867 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
868 execution.setVariable("requestAction", gAction);
869 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
870 execution.setVariable("bpmnRequest", bpmnRequest);
871 execution.setVariable("aLaCarte", true);
872 execution.setVariable("apiVersion", "7");
873 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
876 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
877 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
878 northBoundRequest.setOrchestrationFlowList(orchFlows);
880 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
881 workflowAction.selectExecutionList(execution);
882 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
883 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB");
887 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception{
888 String gAction = "createInstance";
889 String resource = "VfModule";
890 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
891 execution.setVariable("requestAction", gAction);
892 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
893 execution.setVariable("bpmnRequest", bpmnRequest);
894 execution.setVariable("aLaCarte", true);
895 execution.setVariable("apiVersion", "7");
896 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
898 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
899 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
900 northBoundRequest.setOrchestrationFlowList(orchFlows);
902 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
903 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
904 VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
905 ConfigurationResource configurationResource = new ConfigurationResource();
906 configurationResource.setToscaNodeType("FabricConfiguration");
907 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
908 Set<VnfVfmoduleCvnfcConfigurationCustomization> custSet = new HashSet<VnfVfmoduleCvnfcConfigurationCustomization>();
909 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
910 cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(custSet);
911 cvnfcCustomizations.add(cvnfcCustomization);
913 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
914 when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae", "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
915 workflowAction.selectExecutionList(execution);
916 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
917 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
921 * WorkflowActionBB Tests
925 public void pluralTest() {
926 List<String> items = Arrays.asList(
927 "serviceInstances, Service",
929 "vfModules, VfModule",
931 "invalidNames, invalidNames");
932 items.forEach(item -> {
933 String[] split = item.split(",");
934 String type = split[0].trim();
935 String expected = split[1].trim();
936 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
941 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
942 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
943 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
944 BuildingBlock bb = new BuildingBlock();
945 bb.setBpmnFlowName("AssignNetworkBB");
947 ebb.setBuildingBlock(bb);
948 executeFlows.add(ebb);
949 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
950 BuildingBlock bb2 = new BuildingBlock();
951 bb2.setBpmnFlowName("AssignNetworkBB");
953 ebb2.setBuildingBlock(bb2);
954 executeFlows.add(ebb2);
955 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
956 BuildingBlock bb3 = new BuildingBlock();
957 bb3.setBpmnFlowName("CreateNetworkBB");
959 ebb3.setBuildingBlock(bb3);
960 executeFlows.add(ebb3);
961 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
962 BuildingBlock bb4 = new BuildingBlock();
963 bb4.setBpmnFlowName("CreateNetworkBB");
965 ebb4.setBuildingBlock(bb4);
966 executeFlows.add(ebb4);
967 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
968 BuildingBlock bb5 = new BuildingBlock();
969 bb5.setBpmnFlowName("ActivateNetworkBB");
971 ebb5.setBuildingBlock(bb5);
972 executeFlows.add(ebb5);
973 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
974 BuildingBlock bb6 = new BuildingBlock();
975 bb6.setBpmnFlowName("ActivateNetworkBB");
977 ebb6.setBuildingBlock(bb6);
978 executeFlows.add(ebb6);
980 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
981 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
985 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
986 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
987 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
988 BuildingBlock bb = new BuildingBlock();
989 bb.setBpmnFlowName("DeactivateNetworkBB");
991 ebb.setBuildingBlock(bb);
992 executeFlows.add(ebb);
993 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
994 BuildingBlock bb2 = new BuildingBlock();
995 bb2.setBpmnFlowName("DeactivateNetworkBB");
997 ebb2.setBuildingBlock(bb2);
998 executeFlows.add(ebb2);
999 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1000 BuildingBlock bb3 = new BuildingBlock();
1001 bb3.setBpmnFlowName("DeleteNetworkBB");
1003 ebb3.setBuildingBlock(bb3);
1004 executeFlows.add(ebb3);
1005 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1006 BuildingBlock bb4 = new BuildingBlock();
1007 bb4.setBpmnFlowName("DeleteNetworkBB");
1009 ebb4.setBuildingBlock(bb4);
1010 executeFlows.add(ebb4);
1011 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1012 BuildingBlock bb5 = new BuildingBlock();
1013 bb5.setBpmnFlowName("UnassignNetworkBB");
1015 ebb5.setBuildingBlock(bb5);
1016 executeFlows.add(ebb5);
1017 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1018 BuildingBlock bb6 = new BuildingBlock();
1019 bb6.setBpmnFlowName("UnassignNetworkBB");
1021 ebb6.setBuildingBlock(bb6);
1022 executeFlows.add(ebb6);
1024 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1025 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
1028 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1029 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1030 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
1031 northBoundRequest.setOrchestrationFlowList(orchFlows);
1032 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
1034 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
1035 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1036 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
1037 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1038 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1039 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1040 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1041 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
1042 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
1043 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
1044 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
1045 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1046 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1050 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1051 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1052 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1053 northBoundRequest.setOrchestrationFlowList(orchFlows);
1054 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType("createInstance","Service",true,"my-custom-cloud-owner","TRANSPORT")).thenReturn(northBoundRequest);
1056 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance", WorkflowType.SERVICE, true,"my-custom-cloud-owner","TRANSPORT");
1057 assertEquals(flows.get(0).getFlowName(),"AssignServiceInstanceBB");
1061 public void extractResourceIdAndTypeFromUriTest(){
1062 String uri = "/v6/serviceInstances/123";
1063 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1064 String uri3 = "/v6/serviceInstances";
1065 String uri4 = "/v6/serviceInstances/assign";
1066 String uri5 = "'/v6/serviceInstances/123/vnfs";
1067 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1068 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1069 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1070 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1071 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1072 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1073 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1074 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1075 assertEquals(expected1.getResourceId(),result.getResourceId());
1076 assertEquals(expected1.getResourceType(),result.getResourceType());
1077 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1078 assertEquals(expected2.getResourceId(),result.getResourceId());
1079 assertEquals(expected2.getResourceType(),result.getResourceType());
1080 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1081 assertEquals("Service", result.getResourceType().toString());
1082 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1083 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1084 assertEquals("Service", result.getResourceType().toString());
1085 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1086 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1087 assertEquals("Vnf", result.getResourceType().toString());
1088 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1089 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1090 assertEquals(expected3.getResourceId(),result.getResourceId());
1091 assertEquals(expected3.getResourceType(),result.getResourceType());
1092 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1093 assertEquals(expected4.getResourceId(),result.getResourceId());
1094 assertEquals(expected4.getResourceType(),result.getResourceType());
1095 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1096 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1097 assertEquals("VfModule", result.getResourceType().toString());
1102 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1103 this.expectedException.expect(IllegalArgumentException.class);
1104 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1105 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1109 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1110 this.expectedException.expect(IllegalArgumentException.class);
1111 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1112 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1116 public void populateResourceIdsFromApiHandlerTest(){
1117 execution.setVariable("serviceInstanceId", "123");
1118 execution.setVariable("vnfId", "888");
1119 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1120 assertEquals("123",x.getServiceInstanceId());
1121 assertEquals("888",x.getVnfId());
1122 assertNull(x.getVolumeGroupId());
1126 public void validateResourceIdInAAITest() throws Exception{
1128 RequestDetails reqDetails = new RequestDetails();
1129 SubscriberInfo subInfo = new SubscriberInfo();
1130 subInfo.setGlobalSubscriberId("id123");
1131 reqDetails.setSubscriberInfo(subInfo);
1132 RequestParameters reqParams = new RequestParameters();
1133 reqParams.setSubscriptionServiceType("subServiceType123");
1134 reqDetails.setRequestParameters(reqParams );
1135 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1136 ServiceInstance si = new ServiceInstance();
1137 si.setServiceInstanceId("siId123");
1138 Optional<ServiceInstance> siOp = Optional.of(si);
1139 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1140 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1141 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1142 assertEquals("siId123",id);
1143 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1144 assertEquals("generatedId123",id2);
1147 L3Network network = new L3Network();
1148 network.setNetworkId("id123");
1149 network.setNetworkName("name123");
1150 workflowResourceIds.setServiceInstanceId("siId123");
1151 Optional<L3Network> opNetwork = Optional.of(network);
1152 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1153 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1154 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1155 assertEquals("id123",id);
1156 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1157 assertEquals("generatedId123",id2);
1160 GenericVnf vnf = new GenericVnf();
1161 vnf.setVnfId("id123");
1162 vnf.setVnfName("vnfName123");
1163 Optional<GenericVnf> opVnf = Optional.of(vnf);
1164 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1165 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1166 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1167 assertEquals("id123",id);
1168 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1169 assertEquals("generatedId123",id2);
1172 VfModules vfModules = new VfModules();
1173 VfModule vfModule = new VfModule();
1174 vfModule.setVfModuleId("id123");
1175 vfModule.setVfModuleName("name123");
1176 vfModules.getVfModule().add(vfModule);
1177 vnf.setVfModules(vfModules);
1178 workflowResourceIds.setVnfId("id123");
1179 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1180 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1181 assertEquals("id123",id);
1183 GenericVnf vnf2 = new GenericVnf();
1184 VfModules vfModules2 = new VfModules();
1185 VfModule vfModule2 = new VfModule();
1186 vfModule2.setVfModuleId("id123");
1187 vfModule2.setVfModuleName("name123");
1188 vfModules2.getVfModule().add(vfModule2);
1189 vnf2.setVfModules(vfModules2);
1190 workflowResourceIds.setVnfId("id111");
1191 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1192 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1193 assertEquals("generatedId123",id2);
1196 VolumeGroup volumeGroup = new VolumeGroup();
1197 volumeGroup.setVolumeGroupId("id123");
1198 volumeGroup.setVolumeGroupName("name123");
1199 workflowResourceIds.setVnfId("id123");
1200 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1201 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1202 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1203 assertEquals("id123",id);
1205 workflowResourceIds.setVnfId("id444");
1206 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1207 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1208 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1209 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1210 assertEquals("id123",id2);
1214 public void handleRuntimeExceptionTest(){
1215 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1216 execution.setVariable("testProcessKey", "testProcessKeyValue");
1218 workflowAction.handleRuntimeException(execution);
1219 } catch (BpmnError wfe) {
1220 assertEquals("MSOWorkflowException",wfe.getErrorCode());
1226 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1227 execution.setVariable("testProcessKey", "testProcessKeyValue");
1228 Service service = new Service();
1229 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1230 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1231 networkCust.setModelCustomizationUUID("123");
1232 networkCustomizations.add(networkCust);
1233 service.setNetworkCustomizations(networkCustomizations);
1234 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1235 collectionResourceCustomization.setModelCustomizationUUID("123");
1236 CollectionResource collectionResource = new CollectionResource();
1237 collectionResource.setToscaNodeType("NetworkCollection");
1238 InstanceGroup instanceGroup = new InstanceGroup();
1239 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1240 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1241 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1242 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1243 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1244 collectionResource.setInstanceGroup(instanceGroup);
1245 collectionResourceCustomization.setCollectionResource(collectionResource);;
1246 service.setModelUUID("abc");
1247 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1248 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1249 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1250 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1251 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1252 ObjectMapper mapper = new ObjectMapper();
1253 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1254 List<Resource> resourceCounter = new ArrayList<>();
1255 thrown.expect(BpmnError.class);
1256 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1260 public void sortVfModulesByBaseFirstTest(){
1261 List<Resource> resources = new ArrayList<>();
1262 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1263 resource1.setBaseVfModule(false);
1264 resources.add(resource1);
1265 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1266 resource2.setBaseVfModule(false);
1267 resources.add(resource2);
1268 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1269 resource3.setBaseVfModule(true);
1270 resources.add(resource3);
1271 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1272 assertEquals("333",result.get(0).getResourceId());
1273 assertEquals("222",result.get(1).getResourceId());
1274 assertEquals("111",result.get(2).getResourceId());
1278 public void sortVfModulesByBaseLastTest(){
1279 List<Resource> resources = new ArrayList<>();
1280 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1281 resource1.setBaseVfModule(true);
1282 resources.add(resource1);
1283 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1284 resource2.setBaseVfModule(false);
1285 resources.add(resource2);
1286 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1287 resource3.setBaseVfModule(false);
1288 resources.add(resource3);
1289 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1290 assertEquals("333",result.get(0).getResourceId());
1291 assertEquals("222",result.get(1).getResourceId());
1292 assertEquals("111",result.get(2).getResourceId());
1296 public void findCatalogNetworkCollectionTest() {
1297 Service service = new Service();
1298 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1299 networkCustomization.setModelCustomizationUUID("123");
1300 service.getCollectionResourceCustomizations().add(networkCustomization);
1301 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1302 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1303 assertNotNull(customization);
1307 public void findCatalogNetworkCollectionEmptyTest() {
1308 Service service = new Service();
1309 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1310 networkCustomization.setModelCustomizationUUID("123");
1311 service.getCollectionResourceCustomizations().add(networkCustomization);
1312 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1313 assertNull(customization);
1317 public void findCatalogNetworkCollectionMoreThanOneTest() {
1318 Service service = new Service();
1319 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1320 networkCustomization1.setModelCustomizationUUID("123");
1321 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1322 networkCustomization2.setModelCustomizationUUID("321");
1323 service.getCollectionResourceCustomizations().add(networkCustomization1);
1324 service.getCollectionResourceCustomizations().add(networkCustomization2);
1325 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1326 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1327 workflowAction.findCatalogNetworkCollection(execution, service);
1328 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1329 execution.getVariable("WorkflowActionErrorMessage"));
1332 private List<OrchestrationFlow> createFlowList (String... flowNames){
1333 List<OrchestrationFlow> result = new ArrayList<>();
1334 for(String flowName : flowNames){
1335 OrchestrationFlow orchFlow = new OrchestrationFlow();
1336 orchFlow.setFlowName(flowName);
1337 result.add(orchFlow);
1342 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1343 for(int i = 0; i<ebbs.size(); i++){
1344 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);