2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import static org.hamcrest.CoreMatchers.containsString;
26 import static org.hamcrest.CoreMatchers.equalTo;
27 import static org.junit.Assert.*;
28 import static org.mockito.ArgumentMatchers.anyObject;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.Matchers.isA;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.when;
34 import com.fasterxml.jackson.databind.ObjectMapper;
35 import java.io.IOException;
36 import java.net.MalformedURLException;
37 import java.nio.file.Files;
38 import java.nio.file.Paths;
39 import java.util.ArrayList;
40 import java.util.Arrays;
41 import java.util.HashSet;
42 import java.util.List;
43 import java.util.Optional;
45 import java.util.UUID;
46 import org.camunda.bpm.engine.delegate.BpmnError;
47 import org.camunda.bpm.engine.delegate.DelegateExecution;
48 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
49 import org.junit.Before;
50 import org.junit.Ignore;
51 import org.junit.Rule;
52 import org.junit.Test;
53 import org.junit.rules.ExpectedException;
54 import org.mockito.InjectMocks;
55 import org.mockito.Mock;
56 import org.mockito.Spy;
57 import org.onap.aai.domain.yang.GenericVnf;
58 import org.onap.aai.domain.yang.L3Network;
59 import org.onap.aai.domain.yang.Relationship;
60 import org.onap.aai.domain.yang.RelationshipList;
61 import org.onap.aai.domain.yang.ServiceInstance;
62 import org.onap.aai.domain.yang.VfModule;
63 import org.onap.aai.domain.yang.VfModules;
64 import org.onap.aai.domain.yang.Vnfc;
65 import org.onap.aai.domain.yang.VolumeGroup;
66 import org.onap.so.bpmn.BaseTaskTest;
67 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
68 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
69 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
70 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
71 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
72 import org.onap.so.client.aai.AAIObjectType;
73 import org.onap.so.client.aai.entities.AAIResultWrapper;
74 import org.onap.so.client.aai.entities.Relationships;
75 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
76 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
77 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
78 import org.onap.so.db.catalog.beans.CollectionResource;
79 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
80 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
81 import org.onap.so.db.catalog.beans.ConfigurationResource;
82 import org.onap.so.db.catalog.beans.CvnfcCustomization;
83 import org.onap.so.db.catalog.beans.HeatEnvironment;
84 import org.onap.so.db.catalog.beans.HeatTemplate;
85 import org.onap.so.db.catalog.beans.InstanceGroup;
86 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
87 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
88 import org.onap.so.db.catalog.beans.Service;
89 import org.onap.so.db.catalog.beans.VfModuleCustomization;
90 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
91 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
92 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
93 import org.onap.so.serviceinstancebeans.RequestDetails;
94 import org.onap.so.serviceinstancebeans.RequestParameters;
95 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
96 import org.onap.so.serviceinstancebeans.SubscriberInfo;
97 import org.springframework.core.env.Environment;
99 public class WorkflowActionTest extends BaseTaskTest {
103 protected Environment environment;
105 protected WorkflowAction workflowAction;
106 private DelegateExecution execution;
111 protected WorkflowAction SPY_workflowAction;
114 public ExpectedException thrown = ExpectedException.none();
116 private String RESOURCE_PATH = "src/test/resources/__files/";
119 public void before() throws Exception {
120 execution = new DelegateExecutionFake();
121 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
122 servInstance.setServiceInstanceId("TEST");
123 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
124 workflowAction.setBbInputSetupUtils(bbSetupUtils);
125 workflowAction.setBbInputSetup(bbInputSetup);
131 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
132 String gAction = "createInstance";
133 String resource = "Network";
134 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
135 execution.setVariable("requestAction", gAction);
136 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
137 execution.setVariable("bpmnRequest", bpmnRequest);
138 execution.setVariable("aLaCarte", true);
139 execution.setVariable("apiVersion", "7");
140 execution.setVariable("requestUri", "v6/networks/123");
142 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
143 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
144 northBoundRequest.setOrchestrationFlowList(orchFlows);
146 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
147 workflowAction.selectExecutionList(execution);
148 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
149 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
153 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
154 String gAction = "deleteInstance";
155 String resource = "Network";
156 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
157 execution.setVariable("requestAction", gAction);
158 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
159 execution.setVariable("bpmnRequest", bpmnRequest);
160 execution.setVariable("aLaCarte", true);
161 execution.setVariable("apiVersion", "7");
162 execution.setVariable("requestUri", "v6/networks/123");
164 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
165 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
166 northBoundRequest.setOrchestrationFlowList(orchFlows);
168 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
169 workflowAction.selectExecutionList(execution);
170 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
171 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
175 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
176 String gAction = "createInstance";
177 String resource = "Service";
178 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
179 execution.setVariable("requestAction", gAction);
180 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
181 execution.setVariable("bpmnRequest", bpmnRequest);
182 execution.setVariable("aLaCarte", true);
183 execution.setVariable("apiVersion", "7");
184 execution.setVariable("requestUri", "v6/serviceInstances/123");
187 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
188 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
189 northBoundRequest.setOrchestrationFlowList(orchFlows);
191 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
192 workflowAction.selectExecutionList(execution);
193 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
194 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
198 * SERVICE MACRO TESTS
201 public void selectExecutionListServiceMacroAssignTest() throws Exception{
202 String gAction = "assignInstance";
203 String resource = "Service";
204 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
205 execution.setVariable("requestAction", gAction);
206 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
207 execution.setVariable("bpmnRequest", bpmnRequest);
208 execution.setVariable("aLaCarte", false);
209 execution.setVariable("apiVersion", "7");
210 execution.setVariable("requestUri", "v6/serviceInstances/123");
213 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
214 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
215 northBoundRequest.setOrchestrationFlowList(orchFlows);
217 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
218 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
219 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
220 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
221 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
222 HeatTemplate volumeHeatTemplate = new HeatTemplate();
223 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
224 vfModuleCustomization.setVfModule(vfModule);
226 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
227 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
228 HeatEnvironment heatEnvironment = new HeatEnvironment();
229 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
230 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
231 HeatTemplate moduleHeatTemplate = new HeatTemplate();
232 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
233 vfModuleCustomization2.setVfModule(vfModule2);
235 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
236 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
238 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
239 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
240 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
241 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
242 workflowAction.selectExecutionList(execution);
243 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
244 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
248 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
249 String gAction = "assignInstance";
250 String resource = "Service";
251 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
252 execution.setVariable("requestAction", gAction);
253 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
254 execution.setVariable("bpmnRequest", bpmnRequest);
255 execution.setVariable("aLaCarte", false);
256 execution.setVariable("apiVersion", "7");
257 execution.setVariable("requestUri", "v6/serviceInstances/123");
260 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
261 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
262 northBoundRequest.setOrchestrationFlowList(orchFlows);
264 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
265 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
266 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
267 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
268 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
269 HeatTemplate volumeHeatTemplate = new HeatTemplate();
270 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
271 vfModuleCustomization.setVfModule(vfModule);
273 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
274 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
275 HeatEnvironment heatEnvironment = new HeatEnvironment();
276 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
277 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
278 HeatTemplate moduleHeatTemplate = new HeatTemplate();
279 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
280 vfModuleCustomization2.setVfModule(vfModule2);
282 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
283 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
285 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
286 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
287 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
288 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
289 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
290 workflowAction.selectExecutionList(execution);
291 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
292 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
296 public void selectExecutionListServiceMacroActivateTest() throws Exception{
297 String gAction = "activateInstance";
298 String resource = "Service";
299 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
300 execution.setVariable("requestAction", gAction);
301 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
302 execution.setVariable("bpmnRequest", bpmnRequest);
303 execution.setVariable("aLaCarte", false);
304 execution.setVariable("apiVersion", "7");
305 execution.setVariable("requestUri", "v6/serviceInstances/si0");
308 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
309 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
310 ,"ActivateVnfBB","ActivateServiceInstanceBB");
311 northBoundRequest.setOrchestrationFlowList(orchFlows);
313 ServiceInstance serviceInstanceAAI = new ServiceInstance();
314 serviceInstanceAAI.setServiceInstanceId("si0");
315 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
316 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
317 vnf.setVnfId("vnf0");
319 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
320 vfModule.setVfModuleId("vfModule0");
321 vnf.getVfModules().add(vfModule);
322 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
323 vfModule2.setVfModuleId("vfModule1");
324 vnf.getVfModules().add(vfModule2);
326 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
327 volumeGroup.setVolumeGroupId("volumeGroup0");
328 vnf.getVolumeGroups().add(volumeGroup);
330 serviceInstanceMSO.getVnfs().add(vnf);
332 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
333 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
334 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
335 workflowAction.selectExecutionList(execution);
336 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
337 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
338 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
339 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
340 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
341 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
342 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
343 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
344 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
345 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
350 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
351 String gAction = "deactivateInstance";
352 String resource = "Service";
353 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
354 execution.setVariable("requestAction", gAction);
355 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
356 execution.setVariable("bpmnRequest", bpmnRequest);
357 execution.setVariable("aLaCarte", false);
358 execution.setVariable("apiVersion", "7");
359 execution.setVariable("requestUri", "v6/serviceInstances/123");
362 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
363 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
364 northBoundRequest.setOrchestrationFlowList(orchFlows);
366 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
367 workflowAction.selectExecutionList(execution);
368 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
369 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
373 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
374 String gAction = "createInstance";
375 String resource = "Service";
376 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
377 execution.setVariable("requestAction", gAction);
378 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
379 execution.setVariable("bpmnRequest", bpmnRequest);
380 execution.setVariable("aLaCarte", false);
381 execution.setVariable("apiVersion", "7");
382 execution.setVariable("requestUri", "v6/serviceInstances/123");
385 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
386 northBoundRequest.setIsToplevelflow(true);
387 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
388 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
389 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
390 northBoundRequest.setOrchestrationFlowList(orchFlows);
392 Service service = new Service();
393 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
394 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
395 workflowAction.selectExecutionList(execution);
396 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
397 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
401 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
402 String gAction = "createInstance";
403 String resource = "Service";
404 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
405 execution.setVariable("requestAction", gAction);
406 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
407 execution.setVariable("bpmnRequest", bpmnRequest);
408 execution.setVariable("aLaCarte", false);
409 execution.setVariable("apiVersion", "7");
410 execution.setVariable("requestUri", "v6/serviceInstances/123");
413 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
414 northBoundRequest.setIsToplevelflow(true);
415 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
416 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
417 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
418 northBoundRequest.setOrchestrationFlowList(orchFlows);
420 Service service = new Service();
421 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
422 networkCustomization.setModelCustomizationUUID("1234");
423 service.getNetworkCustomizations().add(networkCustomization);
424 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
425 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
426 workflowAction.selectExecutionList(execution);
427 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
428 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
432 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
433 String gAction = "createInstance";
434 String resource = "Service";
435 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
436 execution.setVariable("requestAction", gAction);
437 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
438 execution.setVariable("bpmnRequest", bpmnRequest);
439 execution.setVariable("aLaCarte", false);
440 execution.setVariable("apiVersion", "7");
441 execution.setVariable("requestUri", "v6/serviceInstances/123");
444 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
445 northBoundRequest.setIsToplevelflow(true);
446 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
447 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
448 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
449 northBoundRequest.setOrchestrationFlowList(orchFlows);
451 Service service = new Service();
452 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
453 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
454 networkCust.setModelCustomizationUUID("123");
455 networkCustomizations.add(networkCust);
456 service.setNetworkCustomizations(networkCustomizations);
457 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
458 collectionResourceCustomization.setModelCustomizationUUID("123");
460 CollectionResource collectionResource = new CollectionResource();
461 collectionResource.setToscaNodeType("NetworkCollection");
462 InstanceGroup instanceGroup = new InstanceGroup();
463 instanceGroup.setToscaNodeType("NetworkCollectionResource");
464 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
465 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
466 collectionNetworkResourceCust.setModelCustomizationUUID("123");
467 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
468 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
469 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
470 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
471 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
472 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
473 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
474 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
475 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
476 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
477 collectionResource.setInstanceGroup(instanceGroup);
478 collectionResourceCustomization.setCollectionResource(collectionResource);;
479 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
480 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
481 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
482 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
483 workflowAction.selectExecutionList(execution);
484 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
485 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
486 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
487 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
488 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
489 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
490 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
491 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
492 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
493 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
494 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
495 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
496 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
497 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
498 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
499 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
500 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
501 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
502 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
503 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
504 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
508 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
509 String gAction = "createInstance";
510 String resource = "Service";
511 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
512 execution.setVariable("requestAction", gAction);
513 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
514 execution.setVariable("bpmnRequest", bpmnRequest);
515 execution.setVariable("aLaCarte", false);
516 execution.setVariable("apiVersion", "7");
517 execution.setVariable("requestUri", "v6/serviceInstances/123");
520 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
521 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
522 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
523 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
524 northBoundRequest.setOrchestrationFlowList(orchFlows);
526 Service service = new Service();
527 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
529 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
530 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
531 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
532 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
533 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
534 HeatTemplate volumeHeatTemplate = new HeatTemplate();
535 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
536 vfModuleCustomization.setVfModule(vfModule);
538 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
539 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
540 HeatEnvironment heatEnvironment = new HeatEnvironment();
541 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
542 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
543 HeatTemplate moduleHeatTemplate = new HeatTemplate();
544 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
545 vfModuleCustomization2.setVfModule(vfModule2);
547 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
548 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
550 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
551 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
552 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
553 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
554 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
555 workflowAction.selectExecutionList(execution);
556 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
557 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
558 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
559 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
560 int randomUUIDLength = UUID.randomUUID().toString().length();
561 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
562 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
563 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
564 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
565 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
566 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
567 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
568 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
569 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
570 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
571 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
572 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
573 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
574 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
575 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
576 assertEquals(true, execution.getVariable("homing"));
580 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
581 String gAction = "deleteInstance";
582 String resource = "Service";
583 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
584 execution.setVariable("requestAction", gAction);
585 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
586 execution.setVariable("bpmnRequest", bpmnRequest);
587 execution.setVariable("aLaCarte", false);
588 execution.setVariable("apiVersion", "7");
589 execution.setVariable("requestUri", "v6/serviceInstances/123");
592 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
593 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
594 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
595 northBoundRequest.setOrchestrationFlowList(orchFlows);
597 ServiceInstance serviceInstanceAAI = new ServiceInstance();
598 serviceInstanceAAI.setServiceInstanceId("aaisi123");
599 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
600 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
601 vnf.setVnfId("vnfId123");
603 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
604 vfModule.setVfModuleId("vfModule1");
605 vnf.getVfModules().add(vfModule);
606 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
607 vfModule2.setVfModuleId("vfModule2");
608 vnf.getVfModules().add(vfModule2);
610 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
611 volumeGroup.setVolumeGroupId("vg123");
612 vnf.getVolumeGroups().add(volumeGroup);
614 serviceInstanceMSO.getVnfs().add(vnf);
616 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
617 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
618 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
619 workflowAction.selectExecutionList(execution);
620 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
621 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
622 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
626 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
627 String gAction = "unassignInstance";
628 String resource = "Service";
629 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
630 execution.setVariable("requestAction", gAction);
631 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
632 execution.setVariable("bpmnRequest", bpmnRequest);
633 execution.setVariable("aLaCarte", false);
634 execution.setVariable("apiVersion", "7");
635 execution.setVariable("requestUri", "v6/serviceInstances/123");
638 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
639 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
640 northBoundRequest.setOrchestrationFlowList(orchFlows);
642 ServiceInstance serviceInstanceAAI = new ServiceInstance();
643 serviceInstanceAAI.setServiceInstanceId("aaisi123");
644 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
645 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
646 vnf.setVnfId("vnfId123");
648 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
649 vfModule.setVfModuleId("vfModule1");
650 vnf.getVfModules().add(vfModule);
651 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
652 vfModule2.setVfModuleId("vfModule2");
653 vnf.getVfModules().add(vfModule2);
655 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
656 volumeGroup.setVolumeGroupId("vg123");
657 vnf.getVolumeGroups().add(volumeGroup);
659 serviceInstanceMSO.getVnfs().add(vnf);
661 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
662 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
663 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
664 workflowAction.selectExecutionList(execution);
665 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
666 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
670 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
671 String gAction = "deleteInstance";
672 String resource = "Service";
673 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
674 execution.setVariable("requestAction", gAction);
675 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
676 execution.setVariable("bpmnRequest", bpmnRequest);
677 execution.setVariable("aLaCarte", false);
678 execution.setVariable("apiVersion", "7");
679 execution.setVariable("requestUri", "v6/serviceInstances/123");
682 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
683 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
684 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
685 northBoundRequest.setOrchestrationFlowList(orchFlows);
687 ServiceInstance serviceInstanceAAI = new ServiceInstance();
688 serviceInstanceAAI.setServiceInstanceId("aaisi123");
689 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
691 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
692 network.setNetworkId("123");
693 serviceInstanceMSO.getNetworks().add(network);
694 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
695 network2.setNetworkId("321");
696 serviceInstanceMSO.getNetworks().add(network2);
698 Collection collection = new Collection();
699 serviceInstanceMSO.setCollection(collection);
701 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
702 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
703 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
704 workflowAction.selectExecutionList(execution);
705 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
706 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
707 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
711 public void selectExecutionListVnfMacroRecreateTest() throws Exception{
712 String gAction = "recreateInstance";
713 String resource = "Vnf";
714 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
715 execution.setVariable("requestAction", gAction);
716 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
717 execution.setVariable("bpmnRequest", bpmnRequest);
718 execution.setVariable("aLaCarte", false);
719 execution.setVariable("apiVersion", "7");
720 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
721 execution.setVariable("serviceInstanceId", "123");
722 execution.setVariable("vnfId", "1234");
724 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
725 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
726 ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
727 northBoundRequest.setOrchestrationFlowList(orchFlows);
729 ServiceInstance serviceInstanceAAI = new ServiceInstance();
730 serviceInstanceAAI.setServiceInstanceId("123");
731 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
732 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
733 vnf.setVnfId("1234");
735 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
736 vfModule.setVfModuleId("vfModule1");
737 vnf.getVfModules().add(vfModule);
738 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
739 vfModule2.setVfModuleId("vfModule2");
740 vnf.getVfModules().add(vfModule2);
742 serviceInstanceMSO.getVnfs().add(vnf);
744 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
745 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
746 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
747 workflowAction.selectExecutionList(execution);
748 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
749 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
750 ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
754 public void selectExecutionListVnfMacroReplaceTest() throws Exception{
755 String gAction = "replaceInstance";
756 String resource = "Vnf";
757 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
758 execution.setVariable("requestAction", gAction);
759 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
760 execution.setVariable("bpmnRequest", bpmnRequest);
761 execution.setVariable("aLaCarte", false);
762 execution.setVariable("apiVersion", "7");
763 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
764 execution.setVariable("serviceInstanceId", "123");
765 execution.setVariable("vnfId", "1234");
767 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
768 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
769 ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
770 northBoundRequest.setOrchestrationFlowList(orchFlows);
772 ServiceInstance serviceInstanceAAI = new ServiceInstance();
773 serviceInstanceAAI.setServiceInstanceId("123");
774 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
775 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
776 vnf.setVnfId("1234");
777 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
778 vfModule.setVfModuleId("vfModule1");
779 vnf.getVfModules().add(vfModule);
780 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
781 vfModule2.setVfModuleId("vfModule2");
782 vnf.getVfModules().add(vfModule2);
783 serviceInstanceMSO.getVnfs().add(vnf);
784 VfModule vfModuleAAI = new VfModule();
785 vfModuleAAI.setVfModuleId("vfModule2");
786 RelationshipList relationshipList = new RelationshipList();
787 Relationship relationship = new Relationship();
788 relationshipList.getRelationship().add(relationship);
789 vfModuleAAI.setRelationshipList(relationshipList);
790 Relationships relationships = new Relationships("abc");
791 Configuration config = new Configuration();
792 config.setConfigurationId("configId");
793 Optional<Configuration> configOp = Optional.of(config);
794 Optional<Relationships> relationshipsOp = Optional.of(relationships);
796 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
797 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
798 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
799 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
800 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
801 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
802 workflowAction.selectExecutionList(execution);
803 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
804 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
805 ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
810 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
811 String gAction = "createInstance";
812 String resource = "NetworkCollection";
813 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
814 execution.setVariable("requestAction", gAction);
815 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
816 execution.setVariable("bpmnRequest", bpmnRequest);
817 execution.setVariable("aLaCarte", false);
818 execution.setVariable("apiVersion", "7");
819 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
822 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
823 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
824 northBoundRequest.setOrchestrationFlowList(orchFlows);
826 Service service = new Service();
827 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
828 CollectionResource collectionResource = new CollectionResource();
829 collectionResource.setToscaNodeType("Data NetworkCollection Data");
830 collectionResourceCustomization.setCollectionResource(collectionResource);
831 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
833 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
834 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
835 workflowAction.selectExecutionList(execution);
836 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
837 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
842 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
843 String gAction = "deleteInstance";
844 String resource = "NetworkCollection";
845 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
846 execution.setVariable("requestAction", gAction);
847 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
848 execution.setVariable("bpmnRequest", bpmnRequest);
849 execution.setVariable("aLaCarte", false);
850 execution.setVariable("apiVersion", "7");
851 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
853 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
854 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
855 northBoundRequest.setOrchestrationFlowList(orchFlows);
857 Service service = new Service();
858 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
859 CollectionResource collectionResource = new CollectionResource();
860 collectionResource.setToscaNodeType("Data NetworkCollection Data");
861 collectionResourceCustomization.setCollectionResource(collectionResource);
862 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
864 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
865 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
866 workflowAction.selectExecutionList(execution);
867 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
868 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
869 ,"DeleteNetworkCollectionBB");
873 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception{
874 String gAction = "createInstance";
875 String resource = "VfModule";
876 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
877 execution.setVariable("requestAction", gAction);
878 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
879 execution.setVariable("bpmnRequest", bpmnRequest);
880 execution.setVariable("aLaCarte", true);
881 execution.setVariable("apiVersion", "7");
882 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
885 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
886 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
887 northBoundRequest.setOrchestrationFlowList(orchFlows);
889 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
890 workflowAction.selectExecutionList(execution);
891 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
892 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB");
896 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception{
897 String gAction = "createInstance";
898 String resource = "VfModule";
899 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
900 execution.setVariable("requestAction", gAction);
901 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
902 execution.setVariable("bpmnRequest", bpmnRequest);
903 execution.setVariable("aLaCarte", true);
904 execution.setVariable("apiVersion", "7");
905 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
907 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
908 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
909 northBoundRequest.setOrchestrationFlowList(orchFlows);
911 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
912 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
913 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization = new CvnfcConfigurationCustomization();
914 ConfigurationResource configurationResource = new ConfigurationResource();
915 configurationResource.setToscaNodeType("FabricConfiguration");
916 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
917 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
918 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
919 Set<CvnfcConfigurationCustomization> custSet = new HashSet<CvnfcConfigurationCustomization>();
920 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
921 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
922 cvnfcCustomization.setDescription("description");
923 cvnfcCustomizations.add(cvnfcCustomization);
925 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
926 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 = new CvnfcConfigurationCustomization();
927 ConfigurationResource configurationResource2 = new ConfigurationResource();
928 configurationResource2.setToscaNodeType("FabricConfiguration");
929 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
930 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
931 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
932 Set<CvnfcConfigurationCustomization> custSet2 = new HashSet<CvnfcConfigurationCustomization>();
933 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
934 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
935 cvnfcCustomization2.setDescription("description2");
936 cvnfcCustomizations.add(cvnfcCustomization2);
938 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
939 //when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae", "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
940 workflowAction.selectExecutionList(execution);
941 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
942 assertEqualsBulkFlowName(ebbs,"AssignVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB", "AssignFabricConfigurationBB","ActivateFabricConfigurationBB");
946 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception{
947 String gAction = "deleteInstance";
948 String resource = "VfModule";
949 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
950 execution.setVariable("requestAction", gAction);
951 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
952 execution.setVariable("bpmnRequest", bpmnRequest);
953 execution.setVariable("aLaCarte", true);
954 execution.setVariable("apiVersion", "7");
955 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
957 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
958 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","UnassignVfModuleBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB");
959 northBoundRequest.setOrchestrationFlowList(orchFlows);
961 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
963 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
964 vnf.setVnfId("vnf0");
965 vnf.setModelCustomizationId("modelCustomizationId");
966 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
968 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
969 vfModule.setModelCustomizationId("modelCustomizationId");
970 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
972 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
973 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
974 vnfc.setModelInvariantId("modelInvariantId");
975 vnfc.setVnfcName("testVnfcName");
977 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(), anyObject());
979 List<org.onap.aai.domain.yang.Configuration> configurations = new ArrayList<org.onap.aai.domain.yang.Configuration>();
980 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
981 configuration.setConfigurationId("configurationId");
982 configuration.setModelCustomizationId("modelCustimizationId");
983 configuration.setConfigurationName("testConfigurationName");
984 configurations.add(configuration);
985 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(), anyObject());
987 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
989 SPY_workflowAction.selectExecutionList(execution);
990 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
991 assertEqualsBulkFlowName(ebbs,"DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB","UnassignVfModuleBB");
995 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception{
996 String gAction = "deleteInstance";
997 String resource = "VfModule";
998 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
999 execution.setVariable("requestAction", gAction);
1000 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1001 execution.setVariable("bpmnRequest", bpmnRequest);
1002 execution.setVariable("aLaCarte", true);
1003 execution.setVariable("apiVersion", "7");
1004 execution.setVariable("requestUri", "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1006 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1007 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","UnassignVfModuleBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB");
1008 northBoundRequest.setOrchestrationFlowList(orchFlows);
1010 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
1012 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1013 vnf.setVnfId("vnf0");
1014 vnf.setModelCustomizationId("modelCustomizationId");
1015 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1017 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1018 vfModule.setModelCustomizationId("modelCustomizationId");
1019 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1021 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1022 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1023 vnfc.setModelInvariantId("modelInvariantId");
1024 vnfc.setVnfcName("testVnfcName");
1026 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(), anyObject());
1028 List<org.onap.aai.domain.yang.Configuration> configurations = new ArrayList<org.onap.aai.domain.yang.Configuration>();
1029 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1030 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(), anyObject());
1032 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1034 SPY_workflowAction.selectExecutionList(execution);
1035 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1036 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeleteVfModuleBB","UnassignVfModuleBB");
1040 public void getRelatedResourcesInVfModuleTest() throws Exception{
1041 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1042 vnfc.setModelInvariantId("modelInvariantId");
1043 vnfc.setVnfcName("testVnfcName");
1045 String vfncPayload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1046 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1048 String configurationPayload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1049 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1050 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1051 configurationResultWrappers.add(configurationWrapper);
1053 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1054 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1056 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),anyObject());
1057 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1058 assertEquals(1,configurationsList.size());
1059 assertEquals("testConfigurationId",configurationsList.get(0).getConfigurationId());
1063 * WorkflowActionBB Tests
1067 public void pluralTest() {
1068 List<String> items = Arrays.asList(
1069 "serviceInstances, Service",
1071 "vfModules, VfModule",
1072 "networks, Network",
1073 "invalidNames, invalidNames");
1074 items.forEach(item -> {
1075 String[] split = item.split(",");
1076 String type = split[0].trim();
1077 String expected = split[1].trim();
1078 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1083 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
1084 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1085 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1086 BuildingBlock bb = new BuildingBlock();
1087 bb.setBpmnFlowName("AssignNetworkBB");
1089 ebb.setBuildingBlock(bb);
1090 executeFlows.add(ebb);
1091 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1092 BuildingBlock bb2 = new BuildingBlock();
1093 bb2.setBpmnFlowName("AssignNetworkBB");
1095 ebb2.setBuildingBlock(bb2);
1096 executeFlows.add(ebb2);
1097 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1098 BuildingBlock bb3 = new BuildingBlock();
1099 bb3.setBpmnFlowName("CreateNetworkBB");
1101 ebb3.setBuildingBlock(bb3);
1102 executeFlows.add(ebb3);
1103 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1104 BuildingBlock bb4 = new BuildingBlock();
1105 bb4.setBpmnFlowName("CreateNetworkBB");
1107 ebb4.setBuildingBlock(bb4);
1108 executeFlows.add(ebb4);
1109 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1110 BuildingBlock bb5 = new BuildingBlock();
1111 bb5.setBpmnFlowName("ActivateNetworkBB");
1113 ebb5.setBuildingBlock(bb5);
1114 executeFlows.add(ebb5);
1115 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1116 BuildingBlock bb6 = new BuildingBlock();
1117 bb6.setBpmnFlowName("ActivateNetworkBB");
1119 ebb6.setBuildingBlock(bb6);
1120 executeFlows.add(ebb6);
1122 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
1123 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
1127 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
1128 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1129 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1130 BuildingBlock bb = new BuildingBlock();
1131 bb.setBpmnFlowName("DeactivateNetworkBB");
1133 ebb.setBuildingBlock(bb);
1134 executeFlows.add(ebb);
1135 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1136 BuildingBlock bb2 = new BuildingBlock();
1137 bb2.setBpmnFlowName("DeactivateNetworkBB");
1139 ebb2.setBuildingBlock(bb2);
1140 executeFlows.add(ebb2);
1141 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1142 BuildingBlock bb3 = new BuildingBlock();
1143 bb3.setBpmnFlowName("DeleteNetworkBB");
1145 ebb3.setBuildingBlock(bb3);
1146 executeFlows.add(ebb3);
1147 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1148 BuildingBlock bb4 = new BuildingBlock();
1149 bb4.setBpmnFlowName("DeleteNetworkBB");
1151 ebb4.setBuildingBlock(bb4);
1152 executeFlows.add(ebb4);
1153 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1154 BuildingBlock bb5 = new BuildingBlock();
1155 bb5.setBpmnFlowName("UnassignNetworkBB");
1157 ebb5.setBuildingBlock(bb5);
1158 executeFlows.add(ebb5);
1159 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1160 BuildingBlock bb6 = new BuildingBlock();
1161 bb6.setBpmnFlowName("UnassignNetworkBB");
1163 ebb6.setBuildingBlock(bb6);
1164 executeFlows.add(ebb6);
1166 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1167 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
1170 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1171 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1172 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
1173 northBoundRequest.setOrchestrationFlowList(orchFlows);
1174 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
1176 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
1177 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1178 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
1179 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1180 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1181 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1182 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1183 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
1184 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
1185 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
1186 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
1187 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1188 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1192 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1193 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1194 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1195 northBoundRequest.setOrchestrationFlowList(orchFlows);
1196 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType("createInstance","Service",true,"my-custom-cloud-owner","TRANSPORT")).thenReturn(northBoundRequest);
1198 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance", WorkflowType.SERVICE, true,"my-custom-cloud-owner","TRANSPORT");
1199 assertEquals(flows.get(0).getFlowName(),"AssignServiceInstanceBB");
1203 public void extractResourceIdAndTypeFromUriTest(){
1204 String uri = "/v6/serviceInstances/123";
1205 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1206 String uri3 = "/v6/serviceInstances";
1207 String uri4 = "/v6/serviceInstances/assign";
1208 String uri5 = "'/v6/serviceInstances/123/vnfs";
1209 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1210 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1211 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1212 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1213 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1214 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1215 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1216 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1217 assertEquals(expected1.getResourceId(),result.getResourceId());
1218 assertEquals(expected1.getResourceType(),result.getResourceType());
1219 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1220 assertEquals(expected2.getResourceId(),result.getResourceId());
1221 assertEquals(expected2.getResourceType(),result.getResourceType());
1222 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1223 assertEquals("Service", result.getResourceType().toString());
1224 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1225 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1226 assertEquals("Service", result.getResourceType().toString());
1227 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1228 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1229 assertEquals("Vnf", result.getResourceType().toString());
1230 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1231 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1232 assertEquals(expected3.getResourceId(),result.getResourceId());
1233 assertEquals(expected3.getResourceType(),result.getResourceType());
1234 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1235 assertEquals(expected4.getResourceId(),result.getResourceId());
1236 assertEquals(expected4.getResourceType(),result.getResourceType());
1237 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1238 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1239 assertEquals("VfModule", result.getResourceType().toString());
1244 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1245 this.expectedException.expect(IllegalArgumentException.class);
1246 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1247 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1251 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1252 this.expectedException.expect(IllegalArgumentException.class);
1253 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1254 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1258 public void populateResourceIdsFromApiHandlerTest(){
1259 execution.setVariable("serviceInstanceId", "123");
1260 execution.setVariable("vnfId", "888");
1261 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1262 assertEquals("123",x.getServiceInstanceId());
1263 assertEquals("888",x.getVnfId());
1264 assertNull(x.getVolumeGroupId());
1268 public void validateResourceIdInAAITest() throws Exception{
1270 RequestDetails reqDetails = new RequestDetails();
1271 SubscriberInfo subInfo = new SubscriberInfo();
1272 subInfo.setGlobalSubscriberId("id123");
1273 reqDetails.setSubscriberInfo(subInfo);
1274 RequestParameters reqParams = new RequestParameters();
1275 reqParams.setSubscriptionServiceType("subServiceType123");
1276 reqDetails.setRequestParameters(reqParams );
1277 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1278 ServiceInstance si = new ServiceInstance();
1279 si.setServiceInstanceId("siId123");
1280 Optional<ServiceInstance> siOp = Optional.of(si);
1281 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1282 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1283 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1284 assertEquals("siId123",id);
1285 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1286 assertEquals("generatedId123",id2);
1289 L3Network network = new L3Network();
1290 network.setNetworkId("id123");
1291 network.setNetworkName("name123");
1292 workflowResourceIds.setServiceInstanceId("siId123");
1293 Optional<L3Network> opNetwork = Optional.of(network);
1294 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1295 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1296 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1297 assertEquals("id123",id);
1298 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1299 assertEquals("generatedId123",id2);
1302 GenericVnf vnf = new GenericVnf();
1303 vnf.setVnfId("id123");
1304 vnf.setVnfName("vnfName123");
1305 Optional<GenericVnf> opVnf = Optional.of(vnf);
1306 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1307 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1308 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1309 assertEquals("id123",id);
1310 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1311 assertEquals("generatedId123",id2);
1314 VfModules vfModules = new VfModules();
1315 VfModule vfModule = new VfModule();
1316 vfModule.setVfModuleId("id123");
1317 vfModule.setVfModuleName("name123");
1318 vfModules.getVfModule().add(vfModule);
1319 vnf.setVfModules(vfModules);
1320 workflowResourceIds.setVnfId("id123");
1321 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1322 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1323 assertEquals("id123",id);
1325 GenericVnf vnf2 = new GenericVnf();
1326 VfModules vfModules2 = new VfModules();
1327 VfModule vfModule2 = new VfModule();
1328 vfModule2.setVfModuleId("id123");
1329 vfModule2.setVfModuleName("name123");
1330 vfModules2.getVfModule().add(vfModule2);
1331 vnf2.setVfModules(vfModules2);
1332 workflowResourceIds.setVnfId("id111");
1333 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1334 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1335 assertEquals("generatedId123",id2);
1338 VolumeGroup volumeGroup = new VolumeGroup();
1339 volumeGroup.setVolumeGroupId("id123");
1340 volumeGroup.setVolumeGroupName("name123");
1341 workflowResourceIds.setVnfId("id123");
1342 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1343 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1344 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1345 assertEquals("id123",id);
1347 workflowResourceIds.setVnfId("id444");
1348 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1349 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1350 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1351 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1352 assertEquals("id123",id2);
1356 public void handleRuntimeExceptionTest(){
1357 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1358 execution.setVariable("testProcessKey", "testProcessKeyValue");
1360 workflowAction.handleRuntimeException(execution);
1361 } catch (BpmnError wfe) {
1362 assertEquals("MSOWorkflowException",wfe.getErrorCode());
1368 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1369 execution.setVariable("testProcessKey", "testProcessKeyValue");
1370 Service service = new Service();
1371 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1372 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1373 networkCust.setModelCustomizationUUID("123");
1374 networkCustomizations.add(networkCust);
1375 service.setNetworkCustomizations(networkCustomizations);
1376 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1377 collectionResourceCustomization.setModelCustomizationUUID("123");
1378 CollectionResource collectionResource = new CollectionResource();
1379 collectionResource.setToscaNodeType("NetworkCollection");
1380 InstanceGroup instanceGroup = new InstanceGroup();
1381 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1382 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1383 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1384 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1385 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1386 collectionResource.setInstanceGroup(instanceGroup);
1387 collectionResourceCustomization.setCollectionResource(collectionResource);;
1388 service.setModelUUID("abc");
1389 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1390 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1391 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1392 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1393 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1394 ObjectMapper mapper = new ObjectMapper();
1395 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1396 List<Resource> resourceCounter = new ArrayList<>();
1397 thrown.expect(BpmnError.class);
1398 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1402 public void sortVfModulesByBaseFirstTest(){
1403 List<Resource> resources = new ArrayList<>();
1404 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1405 resource1.setBaseVfModule(false);
1406 resources.add(resource1);
1407 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1408 resource2.setBaseVfModule(false);
1409 resources.add(resource2);
1410 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1411 resource3.setBaseVfModule(true);
1412 resources.add(resource3);
1413 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1414 assertEquals("333",result.get(0).getResourceId());
1415 assertEquals("222",result.get(1).getResourceId());
1416 assertEquals("111",result.get(2).getResourceId());
1420 public void sortVfModulesByBaseLastTest(){
1421 List<Resource> resources = new ArrayList<>();
1422 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1423 resource1.setBaseVfModule(true);
1424 resources.add(resource1);
1425 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1426 resource2.setBaseVfModule(false);
1427 resources.add(resource2);
1428 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1429 resource3.setBaseVfModule(false);
1430 resources.add(resource3);
1431 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1432 assertEquals("333",result.get(0).getResourceId());
1433 assertEquals("222",result.get(1).getResourceId());
1434 assertEquals("111",result.get(2).getResourceId());
1438 public void findCatalogNetworkCollectionTest() {
1439 Service service = new Service();
1440 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1441 networkCustomization.setModelCustomizationUUID("123");
1442 service.getCollectionResourceCustomizations().add(networkCustomization);
1443 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1444 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1445 assertNotNull(customization);
1449 public void findCatalogNetworkCollectionEmptyTest() {
1450 Service service = new Service();
1451 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1452 networkCustomization.setModelCustomizationUUID("123");
1453 service.getCollectionResourceCustomizations().add(networkCustomization);
1454 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1455 assertNull(customization);
1459 public void findCatalogNetworkCollectionMoreThanOneTest() {
1460 Service service = new Service();
1461 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1462 networkCustomization1.setModelCustomizationUUID("123");
1463 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1464 networkCustomization2.setModelCustomizationUUID("321");
1465 service.getCollectionResourceCustomizations().add(networkCustomization1);
1466 service.getCollectionResourceCustomizations().add(networkCustomization2);
1467 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1468 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1469 workflowAction.findCatalogNetworkCollection(execution, service);
1470 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1471 execution.getVariable("WorkflowActionErrorMessage"));
1475 public void verifyLackOfNullPointerExceptionForNullResource(){
1476 ExecuteBuildingBlock result = null;
1478 result = workflowAction
1479 .buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null, false,
1480 null, null, null, false, null, true);
1481 }catch (NullPointerException e){
1482 fail("NullPointerException should not be thrown when 'resource' is null");
1484 assertNotNull(result);
1487 private List<OrchestrationFlow> createFlowList (String... flowNames){
1488 List<OrchestrationFlow> result = new ArrayList<>();
1489 for(String flowName : flowNames){
1490 OrchestrationFlow orchFlow = new OrchestrationFlow();
1491 orchFlow.setFlowName(flowName);
1492 result.add(orchFlow);
1497 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1498 for(int i = 0; i<ebbs.size(); i++){
1499 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);