2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
26 import static org.hamcrest.CoreMatchers.containsString;
27 import static org.hamcrest.CoreMatchers.equalTo;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertFalse;
30 import static org.junit.Assert.assertNotNull;
31 import static org.junit.Assert.assertNull;
32 import static org.junit.Assert.assertThat;
33 import static org.junit.Assert.assertTrue;
34 import static org.junit.Assert.fail;
35 import static org.mockito.ArgumentMatchers.anyObject;
36 import static org.mockito.ArgumentMatchers.anyString;
37 import static org.mockito.ArgumentMatchers.isA;
38 import static org.mockito.Mockito.doReturn;
39 import static org.mockito.Mockito.when;
40 import com.fasterxml.jackson.databind.ObjectMapper;
41 import java.io.IOException;
42 import java.net.MalformedURLException;
43 import java.nio.file.Files;
44 import java.nio.file.Paths;
45 import java.util.ArrayList;
46 import java.util.Arrays;
47 import java.util.HashMap;
48 import java.util.HashSet;
49 import java.util.List;
51 import java.util.Optional;
53 import java.util.UUID;
54 import org.camunda.bpm.engine.delegate.BpmnError;
55 import org.camunda.bpm.engine.delegate.DelegateExecution;
56 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
57 import org.javatuples.Pair;
58 import org.junit.Before;
59 import org.junit.Ignore;
60 import org.junit.Rule;
61 import org.junit.Test;
62 import org.junit.rules.ExpectedException;
63 import org.mockito.InjectMocks;
64 import org.mockito.Mock;
65 import org.mockito.Spy;
66 import org.onap.aai.domain.yang.GenericVnf;
67 import org.onap.aai.domain.yang.GenericVnfs;
68 import org.onap.aai.domain.yang.L3Network;
69 import org.onap.aai.domain.yang.L3Networks;
70 import org.onap.aai.domain.yang.Relationship;
71 import org.onap.aai.domain.yang.RelationshipList;
72 import org.onap.aai.domain.yang.ServiceInstance;
73 import org.onap.aai.domain.yang.ServiceInstances;
74 import org.onap.aai.domain.yang.VfModule;
75 import org.onap.aai.domain.yang.VfModules;
76 import org.onap.aai.domain.yang.VolumeGroup;
77 import org.onap.so.bpmn.BaseTaskTest;
78 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
79 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
80 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
81 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
82 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
83 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
84 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
85 import org.onap.so.client.aai.AAIObjectType;
86 import org.onap.so.client.aai.entities.AAIResultWrapper;
87 import org.onap.so.client.aai.entities.Relationships;
88 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
89 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
90 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
91 import org.onap.so.db.catalog.beans.CollectionResource;
92 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
93 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
94 import org.onap.so.db.catalog.beans.ConfigurationResource;
95 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
96 import org.onap.so.db.catalog.beans.CvnfcCustomization;
97 import org.onap.so.db.catalog.beans.HeatEnvironment;
98 import org.onap.so.db.catalog.beans.HeatTemplate;
99 import org.onap.so.db.catalog.beans.InstanceGroup;
100 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
101 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
102 import org.onap.so.db.catalog.beans.Service;
103 import org.onap.so.db.catalog.beans.VfModuleCustomization;
104 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
105 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
106 import org.onap.so.db.request.beans.InfraActiveRequests;
107 import org.onap.so.db.request.beans.RequestProcessingData;
108 import org.onap.so.serviceinstancebeans.ModelInfo;
109 import org.onap.so.serviceinstancebeans.RequestDetails;
110 import org.onap.so.serviceinstancebeans.RequestParameters;
111 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
112 import org.onap.so.serviceinstancebeans.SubscriberInfo;
113 import org.springframework.core.env.Environment;
115 public class WorkflowActionTest extends BaseTaskTest {
119 protected Environment environment;
121 protected WorkflowAction workflowAction;
122 private DelegateExecution execution;
126 protected WorkflowAction SPY_workflowAction;
129 public ExpectedException thrown = ExpectedException.none();
131 private String RESOURCE_PATH = "src/test/resources/__files/";
134 public void before() throws Exception {
135 execution = new DelegateExecutionFake();
136 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
137 servInstance.setServiceInstanceId("TEST");
138 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
139 workflowAction.setBbInputSetupUtils(bbSetupUtils);
140 workflowAction.setBbInputSetup(bbInputSetup);
147 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
148 String gAction = "createInstance";
149 String resource = "Network";
150 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
151 execution.setVariable("requestAction", gAction);
153 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
154 execution.setVariable("bpmnRequest", bpmnRequest);
155 execution.setVariable("aLaCarte", true);
156 execution.setVariable("apiVersion", "7");
157 execution.setVariable("requestUri", "v6/networks/123");
159 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
160 List<OrchestrationFlow> orchFlows =
161 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
162 northBoundRequest.setOrchestrationFlowList(orchFlows);
164 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
165 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
166 workflowAction.selectExecutionList(execution);
167 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
168 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
172 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
173 String gAction = "deleteInstance";
174 String resource = "Network";
175 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
176 execution.setVariable("requestAction", gAction);
178 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
179 execution.setVariable("bpmnRequest", bpmnRequest);
180 execution.setVariable("aLaCarte", true);
181 execution.setVariable("apiVersion", "7");
182 execution.setVariable("requestUri", "v6/networks/123");
184 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
185 List<OrchestrationFlow> orchFlows =
186 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
187 northBoundRequest.setOrchestrationFlowList(orchFlows);
189 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
190 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
191 workflowAction.selectExecutionList(execution);
192 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
193 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
197 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
198 String gAction = "createInstance";
199 String resource = "Service";
200 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
201 execution.setVariable("requestAction", gAction);
203 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
204 execution.setVariable("bpmnRequest", bpmnRequest);
205 execution.setVariable("aLaCarte", true);
206 execution.setVariable("apiVersion", "7");
207 execution.setVariable("requestUri", "v6/serviceInstances/123");
210 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
211 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
212 northBoundRequest.setOrchestrationFlowList(orchFlows);
214 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
215 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
216 workflowAction.selectExecutionList(execution);
217 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
218 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
222 * SERVICE MACRO TESTS
225 public void selectExecutionListServiceMacroAssignTest() throws Exception {
226 String gAction = "assignInstance";
227 String resource = "Service";
228 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
229 execution.setVariable("requestAction", gAction);
231 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
232 execution.setVariable("bpmnRequest", bpmnRequest);
233 execution.setVariable("aLaCarte", false);
234 execution.setVariable("apiVersion", "7");
235 execution.setVariable("requestUri", "v6/serviceInstances/123");
238 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
239 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
240 "AssignVolumeGroupBB", "AssignVfModuleBB");
241 northBoundRequest.setOrchestrationFlowList(orchFlows);
243 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
244 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
245 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
246 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
247 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
248 HeatTemplate volumeHeatTemplate = new HeatTemplate();
249 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
250 vfModuleCustomization.setVfModule(vfModule);
252 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
253 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
254 HeatEnvironment heatEnvironment = new HeatEnvironment();
255 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
256 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
257 HeatTemplate moduleHeatTemplate = new HeatTemplate();
258 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
259 vfModuleCustomization2.setVfModule(vfModule2);
261 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
262 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
264 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
265 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
266 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
267 .thenReturn(vfModuleCustomization);
268 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
269 .thenReturn(vfModuleCustomization2);
270 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
271 .thenReturn(vfModuleCustomization3);
272 workflowAction.selectExecutionList(execution);
273 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
274 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
275 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
279 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
280 String gAction = "assignInstance";
281 String resource = "Service";
282 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
283 execution.setVariable("requestAction", gAction);
284 String bpmnRequest = new String(
285 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
286 execution.setVariable("bpmnRequest", bpmnRequest);
287 execution.setVariable("aLaCarte", false);
288 execution.setVariable("apiVersion", "7");
289 execution.setVariable("requestUri", "v6/serviceInstances/123");
292 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
293 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
294 "AssignVolumeGroupBB", "AssignVfModuleBB");
295 northBoundRequest.setOrchestrationFlowList(orchFlows);
297 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
298 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
299 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
300 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
301 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
302 HeatTemplate volumeHeatTemplate = new HeatTemplate();
303 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
304 vfModuleCustomization.setVfModule(vfModule);
306 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
307 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
308 HeatEnvironment heatEnvironment = new HeatEnvironment();
309 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
310 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
311 HeatTemplate moduleHeatTemplate = new HeatTemplate();
312 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
313 vfModuleCustomization2.setVfModule(vfModule2);
315 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
316 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
318 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
319 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
320 false, "att-aic")).thenReturn(northBoundRequest);
321 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
322 .thenReturn(vfModuleCustomization);
323 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
324 .thenReturn(vfModuleCustomization2);
325 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
326 .thenReturn(vfModuleCustomization3);
327 workflowAction.selectExecutionList(execution);
328 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
329 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
330 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
334 public void selectExecutionListServiceMacroActivateTest() throws Exception {
335 String gAction = "activateInstance";
336 String resource = "Service";
337 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
338 execution.setVariable("requestAction", gAction);
339 String bpmnRequest = new String(Files
340 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
341 execution.setVariable("bpmnRequest", bpmnRequest);
342 execution.setVariable("aLaCarte", false);
343 execution.setVariable("apiVersion", "7");
344 execution.setVariable("requestUri", "v6/serviceInstances/si0");
347 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
348 List<OrchestrationFlow> orchFlows =
349 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
350 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
351 northBoundRequest.setOrchestrationFlowList(orchFlows);
353 ServiceInstance serviceInstanceAAI = new ServiceInstance();
354 serviceInstanceAAI.setServiceInstanceId("si0");
355 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
356 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
357 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
358 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
359 vnf.setVnfId("vnf0");
362 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
363 vnf.getVfModules().add(vfModule);
364 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
365 vnf.getVfModules().add(vfModule2);
367 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
368 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
369 volumeGroup.setVolumeGroupId("volumeGroup0");
370 vnf.getVolumeGroups().add(volumeGroup);
372 serviceInstanceMSO.getVnfs().add(vnf);
374 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
375 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
376 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
377 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
378 workflowAction.selectExecutionList(execution);
379 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
380 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
381 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
382 "ActivateServiceInstanceBB");
383 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
384 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
385 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
386 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
387 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
388 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
389 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
390 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
395 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
396 String gAction = "deactivateInstance";
397 String resource = "Service";
398 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
399 execution.setVariable("requestAction", gAction);
400 String bpmnRequest = new String(Files
401 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
402 execution.setVariable("bpmnRequest", bpmnRequest);
403 execution.setVariable("aLaCarte", false);
404 execution.setVariable("apiVersion", "7");
405 execution.setVariable("requestUri", "v6/serviceInstances/123");
408 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
409 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
410 northBoundRequest.setOrchestrationFlowList(orchFlows);
412 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
413 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
414 workflowAction.selectExecutionList(execution);
415 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
416 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
420 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
421 String gAction = "createInstance";
422 String resource = "Service";
423 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
424 execution.setVariable("requestAction", gAction);
425 String bpmnRequest = new String(Files
426 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
427 execution.setVariable("bpmnRequest", bpmnRequest);
428 execution.setVariable("aLaCarte", false);
429 execution.setVariable("apiVersion", "7");
430 execution.setVariable("requestUri", "v6/serviceInstances/123");
433 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
434 northBoundRequest.setIsToplevelflow(true);
435 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
436 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
437 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
438 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
439 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
440 northBoundRequest.setOrchestrationFlowList(orchFlows);
442 Service service = new Service();
443 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
444 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
445 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
446 workflowAction.selectExecutionList(execution);
447 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
448 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
452 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
453 String gAction = "createInstance";
454 String resource = "Service";
455 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
456 execution.setVariable("requestAction", gAction);
457 String bpmnRequest = new String(Files
458 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
459 execution.setVariable("bpmnRequest", bpmnRequest);
460 execution.setVariable("aLaCarte", false);
461 execution.setVariable("apiVersion", "7");
462 execution.setVariable("requestUri", "v6/serviceInstances/123");
465 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
466 northBoundRequest.setIsToplevelflow(true);
467 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
468 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
469 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
470 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
471 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
472 northBoundRequest.setOrchestrationFlowList(orchFlows);
474 Service service = new Service();
475 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
476 networkCustomization.setModelCustomizationUUID("1234");
477 service.getNetworkCustomizations().add(networkCustomization);
478 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
479 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
480 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
481 workflowAction.selectExecutionList(execution);
482 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
483 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
484 "ActivateNetworkBB", "ActivateServiceInstanceBB");
488 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
489 String gAction = "createInstance";
490 String resource = "Service";
491 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
492 execution.setVariable("requestAction", gAction);
493 String bpmnRequest = new String(Files
494 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
495 execution.setVariable("bpmnRequest", bpmnRequest);
496 execution.setVariable("aLaCarte", false);
497 execution.setVariable("apiVersion", "7");
498 execution.setVariable("requestUri", "v6/serviceInstances/123");
501 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
502 northBoundRequest.setIsToplevelflow(true);
503 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
504 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
505 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
506 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
507 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
508 northBoundRequest.setOrchestrationFlowList(orchFlows);
510 Service service = new Service();
511 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
512 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
513 networkCust.setModelCustomizationUUID("123");
514 networkCustomizations.add(networkCust);
515 service.setNetworkCustomizations(networkCustomizations);
516 NetworkCollectionResourceCustomization collectionResourceCustomization =
517 new NetworkCollectionResourceCustomization();
518 collectionResourceCustomization.setModelCustomizationUUID("123");
520 CollectionResource collectionResource = new CollectionResource();
521 collectionResource.setToscaNodeType("NetworkCollection");
522 InstanceGroup instanceGroup = new InstanceGroup();
523 instanceGroup.setToscaNodeType("NetworkCollectionResource");
524 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
525 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
526 new CollectionNetworkResourceCustomization();
527 collectionNetworkResourceCust.setModelCustomizationUUID("123");
528 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
529 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
530 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
531 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
532 new CollectionResourceInstanceGroupCustomization();
533 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
534 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
535 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
536 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
537 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
538 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
539 collectionResource.setInstanceGroup(instanceGroup);
540 collectionResourceCustomization.setCollectionResource(collectionResource);;
541 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
542 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
543 doReturn(collectionResourceCustomization).when(catalogDbClient)
544 .getNetworkCollectionResourceCustomizationByID("123");
545 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
546 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
547 workflowAction.selectExecutionList(execution);
548 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
549 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
550 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
551 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
552 "ActivateServiceInstanceBB");
553 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
554 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
555 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
556 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
557 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
559 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
562 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
563 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
564 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
565 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
566 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
568 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
571 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
572 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
573 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
574 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
575 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
577 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
583 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
584 String gAction = "createInstance";
585 String resource = "Service";
586 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
587 execution.setVariable("requestAction", gAction);
589 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
590 execution.setVariable("bpmnRequest", bpmnRequest);
591 execution.setVariable("aLaCarte", false);
592 execution.setVariable("apiVersion", "7");
593 execution.setVariable("requestUri", "v6/serviceInstances/123");
596 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
597 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
598 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
599 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
600 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
601 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
602 northBoundRequest.setOrchestrationFlowList(orchFlows);
604 Service service = new Service();
605 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
607 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
608 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
609 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
610 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
611 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
612 HeatTemplate volumeHeatTemplate = new HeatTemplate();
613 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
614 vfModuleCustomization.setVfModule(vfModule);
616 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
617 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
618 HeatEnvironment heatEnvironment = new HeatEnvironment();
619 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
620 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
621 HeatTemplate moduleHeatTemplate = new HeatTemplate();
622 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
623 vfModuleCustomization2.setVfModule(vfModule2);
625 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
626 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
628 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
629 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
630 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
631 .thenReturn(vfModuleCustomization);
632 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
633 .thenReturn(vfModuleCustomization2);
634 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
635 .thenReturn(vfModuleCustomization3);
636 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
637 workflowAction.selectExecutionList(execution);
638 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
639 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
640 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
641 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
642 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
643 "ActivateServiceInstanceBB");
644 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
645 int randomUUIDLength = UUID.randomUUID().toString().length();
646 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
647 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
648 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
652 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
653 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
655 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
656 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
657 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
658 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
659 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
660 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
661 assertEquals(true, execution.getVariable("homing"));
665 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
666 String gAction = "deleteInstance";
667 String resource = "Service";
668 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
669 execution.setVariable("requestAction", gAction);
670 String bpmnRequest = new String(Files
671 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
672 execution.setVariable("bpmnRequest", bpmnRequest);
673 execution.setVariable("aLaCarte", false);
674 execution.setVariable("apiVersion", "7");
675 execution.setVariable("requestUri", "v6/serviceInstances/123");
678 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
679 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
680 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
681 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
682 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
683 northBoundRequest.setOrchestrationFlowList(orchFlows);
685 ServiceInstance serviceInstanceAAI = new ServiceInstance();
686 serviceInstanceAAI.setServiceInstanceId("aaisi123");
687 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
688 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
689 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
690 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
691 vnf.setVnfId("vnfId123");
693 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
694 vnf.getVfModules().add(vfModule);
695 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
696 vnf.getVfModules().add(vfModule2);
698 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
699 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
700 volumeGroup.setVolumeGroupId("vg123");
701 vnf.getVolumeGroups().add(volumeGroup);
703 serviceInstanceMSO.getVnfs().add(vnf);
705 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
706 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
707 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
708 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
709 workflowAction.selectExecutionList(execution);
710 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
711 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
712 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
713 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
714 "UnassignVnfBB", "UnassignServiceInstanceBB");
718 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
719 String gAction = "unassignInstance";
720 String resource = "Service";
721 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
722 execution.setVariable("requestAction", gAction);
723 String bpmnRequest = new String(Files
724 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
725 execution.setVariable("bpmnRequest", bpmnRequest);
726 execution.setVariable("aLaCarte", false);
727 execution.setVariable("apiVersion", "7");
728 execution.setVariable("requestUri", "v6/serviceInstances/123");
731 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
732 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
733 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
734 northBoundRequest.setOrchestrationFlowList(orchFlows);
736 ServiceInstance serviceInstanceAAI = new ServiceInstance();
737 serviceInstanceAAI.setServiceInstanceId("aaisi123");
738 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
739 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
740 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
741 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
742 vnf.setVnfId("vnfId123");
744 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
745 vnf.getVfModules().add(vfModule);
746 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
747 vnf.getVfModules().add(vfModule2);
749 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
750 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
751 volumeGroup.setVolumeGroupId("vg123");
752 vnf.getVolumeGroups().add(volumeGroup);
754 serviceInstanceMSO.getVnfs().add(vnf);
756 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
757 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
758 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
759 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
760 workflowAction.selectExecutionList(execution);
761 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
762 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
763 "UnassignVnfBB", "UnassignServiceInstanceBB");
767 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
768 String gAction = "deleteInstance";
769 String resource = "Service";
770 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
771 execution.setVariable("requestAction", gAction);
772 String bpmnRequest = new String(Files
773 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
774 execution.setVariable("bpmnRequest", bpmnRequest);
775 execution.setVariable("aLaCarte", false);
776 execution.setVariable("apiVersion", "7");
777 execution.setVariable("requestUri", "v6/serviceInstances/123");
780 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
781 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
782 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
783 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
784 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
785 northBoundRequest.setOrchestrationFlowList(orchFlows);
787 ServiceInstance serviceInstanceAAI = new ServiceInstance();
788 serviceInstanceAAI.setServiceInstanceId("aaisi123");
789 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
790 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
792 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
793 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
794 network.setNetworkId("123");
795 serviceInstanceMSO.getNetworks().add(network);
796 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
797 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
798 network2.setNetworkId("321");
799 serviceInstanceMSO.getNetworks().add(network2);
801 Collection collection = new Collection();
802 serviceInstanceMSO.setCollection(collection);
804 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
805 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
806 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
807 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
808 workflowAction.selectExecutionList(execution);
809 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
810 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
811 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
812 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
816 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
817 String gAction = "recreateInstance";
818 String resource = "Vnf";
819 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
820 execution.setVariable("requestAction", gAction);
822 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
823 execution.setVariable("bpmnRequest", bpmnRequest);
824 execution.setVariable("aLaCarte", false);
825 execution.setVariable("apiVersion", "7");
826 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
827 execution.setVariable("serviceInstanceId", "123");
828 execution.setVariable("vnfId", "1234");
830 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
831 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
832 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
833 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
834 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
835 "AAIUnsetVnfInMaintBB");
836 northBoundRequest.setOrchestrationFlowList(orchFlows);
838 ServiceInstance serviceInstanceAAI = new ServiceInstance();
839 serviceInstanceAAI.setServiceInstanceId("123");
840 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
841 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
842 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
843 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
844 vnf.setVnfId("1234");
846 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
847 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
848 vfModule.setVfModuleId("vfModule1");
849 vnf.getVfModules().add(vfModule);
850 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
851 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
852 vfModule2.setVfModuleId("vfModule2");
853 vnf.getVfModules().add(vfModule2);
855 serviceInstanceMSO.getVnfs().add(vnf);
857 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
858 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
859 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
860 false, "cloud-owner")).thenReturn(northBoundRequest);
861 workflowAction.selectExecutionList(execution);
862 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
863 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
864 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
865 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
866 "AAIUnsetVnfInMaintBB");
870 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
871 String gAction = "replaceInstance";
872 String resource = "Vnf";
873 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
874 execution.setVariable("requestAction", gAction);
876 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
877 execution.setVariable("bpmnRequest", bpmnRequest);
878 execution.setVariable("aLaCarte", false);
879 execution.setVariable("apiVersion", "7");
880 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
881 execution.setVariable("serviceInstanceId", "123");
882 execution.setVariable("vnfId", "1234");
884 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
885 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
886 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
887 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
888 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
889 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
890 "AAIUnsetVnfInMaintBB");
891 northBoundRequest.setOrchestrationFlowList(orchFlows);
893 ServiceInstance serviceInstanceAAI = new ServiceInstance();
894 serviceInstanceAAI.setServiceInstanceId("123");
895 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
896 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
897 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
898 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
899 vnf.setVnfId("1234");
900 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
901 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
902 vfModule.setVfModuleId("vfModule1");
903 vnf.getVfModules().add(vfModule);
904 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
905 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
906 vfModule2.setVfModuleId("vfModule2");
907 vnf.getVfModules().add(vfModule2);
908 serviceInstanceMSO.getVnfs().add(vnf);
909 VfModule vfModuleAAI = new VfModule();
910 vfModuleAAI.setVfModuleId("vfModule2");
911 RelationshipList relationshipList = new RelationshipList();
912 Relationship relationship = new Relationship();
913 relationshipList.getRelationship().add(relationship);
914 vfModuleAAI.setRelationshipList(relationshipList);
915 Relationships relationships = new Relationships("abc");
916 Configuration config = new Configuration();
917 config.setConfigurationId("configId");
918 Optional<Configuration> configOp = Optional.of(config);
919 Optional<Relationships> relationshipsOp = Optional.of(relationships);
921 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
922 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
923 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
924 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
925 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
926 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
927 false, "cloud-owner")).thenReturn(northBoundRequest);
928 workflowAction.selectExecutionList(execution);
929 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
930 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
931 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
932 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
933 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
934 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
935 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
940 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
941 String gAction = "createInstance";
942 String resource = "NetworkCollection";
943 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
944 execution.setVariable("requestAction", gAction);
945 String bpmnRequest = new String(
946 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
947 execution.setVariable("bpmnRequest", bpmnRequest);
948 execution.setVariable("aLaCarte", false);
949 execution.setVariable("apiVersion", "7");
950 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
953 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
954 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
955 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
956 northBoundRequest.setOrchestrationFlowList(orchFlows);
958 Service service = new Service();
959 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
960 CollectionResource collectionResource = new CollectionResource();
961 collectionResource.setToscaNodeType("Data NetworkCollection Data");
962 collectionResourceCustomization.setCollectionResource(collectionResource);
963 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
965 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
966 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
967 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
968 workflowAction.selectExecutionList(execution);
969 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
970 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
971 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
972 "ActivateNetworkCollectionBB");
977 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
978 String gAction = "deleteInstance";
979 String resource = "NetworkCollection";
980 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
981 execution.setVariable("requestAction", gAction);
982 String bpmnRequest = new String(
983 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
984 execution.setVariable("bpmnRequest", bpmnRequest);
985 execution.setVariable("aLaCarte", false);
986 execution.setVariable("apiVersion", "7");
987 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
989 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
990 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
991 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
992 northBoundRequest.setOrchestrationFlowList(orchFlows);
994 Service service = new Service();
995 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
996 CollectionResource collectionResource = new CollectionResource();
997 collectionResource.setToscaNodeType("Data NetworkCollection Data");
998 collectionResourceCustomization.setCollectionResource(collectionResource);
999 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1001 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1002 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1003 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1004 workflowAction.selectExecutionList(execution);
1005 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1006 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1007 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1008 "DeleteNetworkCollectionBB");
1012 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1013 String gAction = "createInstance";
1014 String resource = "VfModule";
1015 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1016 execution.setVariable("requestAction", gAction);
1017 String bpmnRequest =
1018 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1019 execution.setVariable("bpmnRequest", bpmnRequest);
1020 execution.setVariable("aLaCarte", true);
1021 execution.setVariable("apiVersion", "7");
1022 execution.setVariable("requestUri",
1023 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1026 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1027 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1028 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1029 northBoundRequest.setOrchestrationFlowList(orchFlows);
1031 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1032 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1033 workflowAction.selectExecutionList(execution);
1034 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1035 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1039 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1040 String gAction = "createInstance";
1041 String resource = "VfModule";
1042 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1043 execution.setVariable("requestAction", gAction);
1044 String bpmnRequest =
1045 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1046 execution.setVariable("bpmnRequest", bpmnRequest);
1047 execution.setVariable("aLaCarte", true);
1048 execution.setVariable("apiVersion", "7");
1049 execution.setVariable("requestUri",
1050 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1052 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1053 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1054 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1055 northBoundRequest.setOrchestrationFlowList(orchFlows);
1057 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1058 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1059 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1060 new CvnfcConfigurationCustomization();
1061 ConfigurationResource configurationResource = new ConfigurationResource();
1062 configurationResource.setToscaNodeType("FabricConfiguration");
1063 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1064 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1065 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1066 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1067 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1068 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1069 cvnfcCustomization.setDescription("description");
1070 cvnfcCustomizations.add(cvnfcCustomization);
1072 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1073 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1074 new CvnfcConfigurationCustomization();
1075 ConfigurationResource configurationResource2 = new ConfigurationResource();
1076 configurationResource2.setToscaNodeType("FabricConfiguration");
1077 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1078 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1079 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1080 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1081 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1082 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1083 cvnfcCustomization2.setDescription("description2");
1084 cvnfcCustomizations.add(cvnfcCustomization2);
1086 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1087 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1088 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1089 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1090 workflowAction.selectExecutionList(execution);
1091 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1092 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1093 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1094 "ActivateFabricConfigurationBB");
1098 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1099 String gAction = "deleteInstance";
1100 String resource = "VfModule";
1101 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1102 execution.setVariable("requestAction", gAction);
1103 String bpmnRequest =
1104 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1105 execution.setVariable("bpmnRequest", bpmnRequest);
1106 execution.setVariable("aLaCarte", true);
1107 execution.setVariable("apiVersion", "7");
1108 execution.setVariable("requestUri",
1109 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1111 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1112 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1113 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1114 northBoundRequest.setOrchestrationFlowList(orchFlows);
1116 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1117 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1119 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1120 vnf.setVnfId("vnf0");
1121 vnf.setModelCustomizationId("modelCustomizationId");
1122 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1124 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1125 vfModule.setModelCustomizationId("modelCustomizationId");
1126 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1128 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1129 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1130 vnfc.setModelInvariantId("modelInvariantId");
1131 vnfc.setVnfcName("testVnfcName");
1133 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1136 List<org.onap.aai.domain.yang.Configuration> configurations =
1137 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1138 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1139 configuration.setConfigurationId("configurationId");
1140 configuration.setModelCustomizationId("modelCustimizationId");
1141 configuration.setConfigurationName("testConfigurationName");
1142 configurations.add(configuration);
1143 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1146 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1148 SPY_workflowAction.selectExecutionList(execution);
1149 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1150 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1151 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1155 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1156 String gAction = "deleteInstance";
1157 String resource = "VfModule";
1158 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1159 execution.setVariable("requestAction", gAction);
1160 String bpmnRequest =
1161 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1162 execution.setVariable("bpmnRequest", bpmnRequest);
1163 execution.setVariable("aLaCarte", true);
1164 execution.setVariable("apiVersion", "7");
1165 execution.setVariable("requestUri",
1166 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1168 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1169 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1170 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1171 northBoundRequest.setOrchestrationFlowList(orchFlows);
1173 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1174 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1176 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1177 vnf.setVnfId("vnf0");
1178 vnf.setModelCustomizationId("modelCustomizationId");
1179 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1181 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1182 vfModule.setModelCustomizationId("modelCustomizationId");
1183 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1185 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1186 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1187 vnfc.setModelInvariantId("modelInvariantId");
1188 vnfc.setVnfcName("testVnfcName");
1190 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1193 List<org.onap.aai.domain.yang.Configuration> configurations =
1194 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1195 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1196 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1199 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1201 SPY_workflowAction.selectExecutionList(execution);
1202 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1203 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1207 public void selectExecutionListMacroResumeTest() throws Exception {
1208 String gAction = "createInstance";
1209 String resource = "Service";
1210 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1211 execution.setVariable("requestAction", gAction);
1212 String bpmnRequest =
1213 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
1214 execution.setVariable("bpmnRequest", bpmnRequest);
1215 execution.setVariable("aLaCarte", false);
1216 execution.setVariable("apiVersion", "7");
1217 execution.setVariable("requestUri", "v6/serviceInstances/123");
1219 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1220 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1221 northBoundRequest.setOrchestrationFlowList(orchFlows);
1223 Service service = new Service();
1224 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1226 ServiceInstance si = new ServiceInstance();
1228 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1229 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1231 String flowsToExecuteString =
1232 "[{\"buildingBlock\":{\"mso-id\":\"2f9ddc4b-4dcf-4129-a35f-be1625ae0176\",\"bpmn-flow-name\":\"AssignServiceInstanceBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}}]";
1233 ObjectMapper om = new ObjectMapper();
1234 List<ExecuteBuildingBlock> flowsToExecute = null;
1236 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1237 flowsToExecute = Arrays.asList(asArray);
1238 } catch (Exception e) {
1239 e.printStackTrace();
1242 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1244 workflowAction.selectExecutionList(execution);
1245 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1246 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1250 public void getRelatedResourcesInVfModuleTest() throws Exception {
1251 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1252 vnfc.setModelInvariantId("modelInvariantId");
1253 vnfc.setVnfcName("testVnfcName");
1255 String vfncPayload =
1256 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1257 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1259 String configurationPayload =
1260 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1261 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1262 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1263 configurationResultWrappers.add(configurationWrapper);
1265 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1266 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1268 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1270 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1271 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1272 assertEquals(1, configurationsList.size());
1273 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1277 * WorkflowActionBB Tests
1281 public void pluralTest() {
1282 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1283 "networks, Network", "invalidNames, invalidNames");
1284 items.forEach(item -> {
1285 String[] split = item.split(",");
1286 String type = split[0].trim();
1287 String expected = split[1].trim();
1288 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1293 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1294 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1295 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1296 BuildingBlock bb = new BuildingBlock();
1297 bb.setBpmnFlowName("AssignNetworkBB");
1299 ebb.setBuildingBlock(bb);
1300 executeFlows.add(ebb);
1301 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1302 BuildingBlock bb2 = new BuildingBlock();
1303 bb2.setBpmnFlowName("AssignNetworkBB");
1305 ebb2.setBuildingBlock(bb2);
1306 executeFlows.add(ebb2);
1307 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1308 BuildingBlock bb3 = new BuildingBlock();
1309 bb3.setBpmnFlowName("CreateNetworkBB");
1311 ebb3.setBuildingBlock(bb3);
1312 executeFlows.add(ebb3);
1313 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1314 BuildingBlock bb4 = new BuildingBlock();
1315 bb4.setBpmnFlowName("CreateNetworkBB");
1317 ebb4.setBuildingBlock(bb4);
1318 executeFlows.add(ebb4);
1319 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1320 BuildingBlock bb5 = new BuildingBlock();
1321 bb5.setBpmnFlowName("ActivateNetworkBB");
1323 ebb5.setBuildingBlock(bb5);
1324 executeFlows.add(ebb5);
1325 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1326 BuildingBlock bb6 = new BuildingBlock();
1327 bb6.setBpmnFlowName("ActivateNetworkBB");
1329 ebb6.setBuildingBlock(bb6);
1330 executeFlows.add(ebb6);
1332 List<ExecuteBuildingBlock> sorted =
1333 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1334 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1335 "CreateNetworkBB", "ActivateNetworkBB");
1339 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1340 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1341 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1342 BuildingBlock bb = new BuildingBlock();
1343 bb.setBpmnFlowName("DeactivateNetworkBB");
1345 ebb.setBuildingBlock(bb);
1346 executeFlows.add(ebb);
1347 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1348 BuildingBlock bb2 = new BuildingBlock();
1349 bb2.setBpmnFlowName("DeactivateNetworkBB");
1351 ebb2.setBuildingBlock(bb2);
1352 executeFlows.add(ebb2);
1353 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1354 BuildingBlock bb3 = new BuildingBlock();
1355 bb3.setBpmnFlowName("DeleteNetworkBB");
1357 ebb3.setBuildingBlock(bb3);
1358 executeFlows.add(ebb3);
1359 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1360 BuildingBlock bb4 = new BuildingBlock();
1361 bb4.setBpmnFlowName("DeleteNetworkBB");
1363 ebb4.setBuildingBlock(bb4);
1364 executeFlows.add(ebb4);
1365 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1366 BuildingBlock bb5 = new BuildingBlock();
1367 bb5.setBpmnFlowName("UnassignNetworkBB");
1369 ebb5.setBuildingBlock(bb5);
1370 executeFlows.add(ebb5);
1371 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1372 BuildingBlock bb6 = new BuildingBlock();
1373 bb6.setBpmnFlowName("UnassignNetworkBB");
1375 ebb6.setBuildingBlock(bb6);
1376 executeFlows.add(ebb6);
1378 List<ExecuteBuildingBlock> sorted =
1379 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1380 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1381 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1385 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1386 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1387 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1388 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1389 northBoundRequest.setOrchestrationFlowList(orchFlows);
1390 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1391 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1393 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1394 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1395 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1396 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1397 WorkflowType.VNF, false, "my-custom-cloud-owner");
1398 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1399 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1400 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1401 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1402 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1403 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1404 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1405 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1406 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1407 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1411 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1412 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1413 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1414 northBoundRequest.setOrchestrationFlowList(orchFlows);
1415 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1416 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1418 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1419 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1420 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1424 public void extractResourceIdAndTypeFromUriTest() {
1425 String uri = "/v6/serviceInstances/123";
1426 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1427 String uri3 = "/v6/serviceInstances";
1428 String uri4 = "/v6/serviceInstances/assign";
1429 String uri5 = "'/v6/serviceInstances/123/vnfs";
1430 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1431 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1432 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1433 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1434 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1435 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1436 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1437 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1438 assertEquals(expected1.getResourceId(), result.getResourceId());
1439 assertEquals(expected1.getResourceType(), result.getResourceType());
1440 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1441 assertEquals(expected2.getResourceId(), result.getResourceId());
1442 assertEquals(expected2.getResourceType(), result.getResourceType());
1443 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1444 assertEquals("Service", result.getResourceType().toString());
1445 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1446 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1447 assertEquals("Service", result.getResourceType().toString());
1448 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1449 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1450 assertEquals("Vnf", result.getResourceType().toString());
1451 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1452 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1453 assertEquals(expected3.getResourceId(), result.getResourceId());
1454 assertEquals(expected3.getResourceType(), result.getResourceType());
1455 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1456 assertEquals(expected4.getResourceId(), result.getResourceId());
1457 assertEquals(expected4.getResourceType(), result.getResourceType());
1458 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1459 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1460 assertEquals("VfModule", result.getResourceType().toString());
1465 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1466 this.expectedException.expect(IllegalArgumentException.class);
1467 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1468 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1472 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1473 this.expectedException.expect(IllegalArgumentException.class);
1474 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1475 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1479 public void isUriResumeTest() {
1480 assertTrue(workflowAction.isUriResume(
1481 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
1482 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
1486 public void isRequestMacroServiceResumeTest() {
1487 ServiceInstance si = new ServiceInstance();
1488 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
1489 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
1490 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
1494 public void populateResourceIdsFromApiHandlerTest() {
1495 execution.setVariable("serviceInstanceId", "123");
1496 execution.setVariable("vnfId", "888");
1497 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1498 assertEquals("123", x.getServiceInstanceId());
1499 assertEquals("888", x.getVnfId());
1500 assertNull(x.getVolumeGroupId());
1503 private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
1504 String modelCustomizationId) {
1505 RequestDetails reqDetails = new RequestDetails();
1506 SubscriberInfo subInfo = new SubscriberInfo();
1507 subInfo.setGlobalSubscriberId(globalSubscriberId);
1508 reqDetails.setSubscriberInfo(subInfo);
1509 RequestParameters reqParams = new RequestParameters();
1510 reqParams.setSubscriptionServiceType(subscriptionServiceType);
1511 reqDetails.setRequestParameters(reqParams);
1512 ModelInfo modelInfo = new ModelInfo();
1513 modelInfo.setModelCustomizationId(modelCustomizationId);
1514 reqDetails.setModelInfo(modelInfo);
1519 public void validateVnfResourceIdInAAITest() throws Exception {
1520 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1521 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1522 workflowResourceIds.setServiceInstanceId("siId123");
1524 GenericVnf vnf = new GenericVnf();
1525 vnf.setVnfId("id123");
1526 vnf.setVnfName("vnfName123");
1527 vnf.setModelCustomizationId("1234567");
1528 Optional<GenericVnf> opVnf = Optional.of(vnf);
1529 GenericVnf vnf2 = new GenericVnf();
1530 vnf2.setVnfId("id123");
1531 vnf2.setVnfName("vnfName222");
1532 vnf2.setModelCustomizationId("222");
1533 Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
1534 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
1535 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
1536 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1537 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
1538 workflowResourceIds);
1539 assertEquals("id123", id);
1540 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1541 workflowResourceIds);
1542 assertEquals("generatedId123", id2);
1544 this.expectedException.expect(DuplicateNameException.class);
1545 this.expectedException.expectMessage(containsString(
1546 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
1547 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
1548 workflowResourceIds);
1552 public void validateVnfResourceNameInAAITest() throws Exception {
1553 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1554 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1555 workflowResourceIds.setServiceInstanceId("siId123");
1558 GenericVnfs genericVnfs = new GenericVnfs();
1559 GenericVnf vnf3 = new GenericVnf();
1560 vnf3.setVnfId("id123");
1561 vnf3.setVnfName("vnfName333");
1562 genericVnfs.getGenericVnf().add(vnf3);
1563 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
1564 when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
1566 this.expectedException.expect(DuplicateNameException.class);
1567 this.expectedException.expectMessage(containsString(
1568 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
1569 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
1570 workflowResourceIds);
1574 public void validateNetworkResourceIdInAAITest() throws Exception {
1575 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1576 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1577 workflowResourceIds.setServiceInstanceId("siId123");
1580 L3Network network = new L3Network();
1581 network.setNetworkId("id123");
1582 network.setNetworkName("name123");
1583 network.setModelCustomizationId("1234567");
1584 workflowResourceIds.setServiceInstanceId("siId123");
1585 Optional<L3Network> opNetwork = Optional.of(network);
1586 L3Network network2 = new L3Network();
1587 network2.setNetworkId("id123");
1588 network2.setNetworkName("networkName222");
1589 network2.setModelCustomizationId("222");
1590 Optional<L3Network> opNetwork2 = Optional.of(network2);
1591 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1592 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
1593 .thenReturn(opNetwork2);
1594 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1595 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
1596 reqDetails, workflowResourceIds);
1597 assertEquals("id123", id);
1598 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
1599 reqDetails, workflowResourceIds);
1600 assertEquals("generatedId123", id2);
1602 this.expectedException.expect(DuplicateNameException.class);
1603 this.expectedException.expectMessage(containsString(
1604 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
1605 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
1606 workflowResourceIds);
1610 public void validateNetworkResourceNameExistsInAAITest() throws Exception {
1611 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1612 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1613 workflowResourceIds.setServiceInstanceId("siId123");
1616 L3Network network = new L3Network();
1617 network.setNetworkId("id123");
1618 network.setNetworkName("name123");
1619 network.setModelCustomizationId("1234567");
1620 workflowResourceIds.setServiceInstanceId("siId123");
1622 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
1623 .thenReturn(Optional.empty());
1624 when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
1626 this.expectedException.expect(DuplicateNameException.class);
1627 this.expectedException.expectMessage(containsString(
1628 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
1629 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
1630 workflowResourceIds);
1634 public void validateVfModuleResourceIdInAAITest() throws Exception {
1635 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1636 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1637 workflowResourceIds.setServiceInstanceId("siId123");
1639 GenericVnf vnf = new GenericVnf();
1640 vnf.setVnfId("id123");
1641 vnf.setVnfName("vnfName123");
1642 vnf.setModelCustomizationId("222");
1645 VfModules vfModules = new VfModules();
1646 VfModule vfModule = new VfModule();
1647 vfModule.setVfModuleId("id123");
1648 vfModule.setVfModuleName("name123");
1649 vfModule.setModelCustomizationId("1234567");
1650 vfModules.getVfModule().add(vfModule);
1651 vnf.setVfModules(vfModules);
1652 workflowResourceIds.setVnfId("id123");
1653 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1654 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
1655 reqDetails, workflowResourceIds);
1656 assertEquals("id123", id);
1658 GenericVnf vnf1 = new GenericVnf();
1659 VfModules vfModules2 = new VfModules();
1660 VfModule vfModule2 = new VfModule();
1661 vfModule2.setVfModuleId("id123");
1662 vfModule2.setVfModuleName("vFModName222");
1663 vfModule2.setModelCustomizationId("222");
1664 vfModules2.getVfModule().add(vfModule2);
1665 vnf1.setVfModules(vfModules2);
1666 workflowResourceIds.setVnfId("id111");
1667 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
1668 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
1669 reqDetails, workflowResourceIds);
1670 assertEquals("generatedId123", id2);
1672 this.expectedException.expect(DuplicateNameException.class);
1673 this.expectedException.expectMessage(containsString(
1674 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
1675 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
1676 workflowResourceIds);
1681 public void validateVolumeGroupResourceIdInAAITest() throws Exception {
1682 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1683 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1684 workflowResourceIds.setServiceInstanceId("siId123");
1686 GenericVnf vnf = new GenericVnf();
1687 vnf.setVnfId("id123");
1688 vnf.setVnfName("vnfName123");
1689 vnf.setModelCustomizationId("1234567");
1691 GenericVnf vnf2 = new GenericVnf();
1692 vnf2.setVnfId("id123");
1693 vnf2.setVnfName("vnfName123");
1694 vnf2.setModelCustomizationId("222");
1697 VolumeGroup volumeGroup = new VolumeGroup();
1698 volumeGroup.setVolumeGroupId("id123");
1699 volumeGroup.setVolumeGroupName("name123");
1700 workflowResourceIds.setVnfId("id123");
1701 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1703 workflowResourceIds.setVnfId("id123");
1705 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1706 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1707 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
1708 reqDetails, workflowResourceIds);
1709 assertEquals("id123", id);
1711 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
1712 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1713 .thenReturn(opVolumeGroup);
1715 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
1716 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
1717 reqDetails, workflowResourceIds);
1718 assertEquals("generatedId123", id2);
1722 public void validateConfigurationResourceIdInAAITest() throws Exception {
1723 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1724 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1725 workflowResourceIds.setServiceInstanceId("siId123");
1728 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1729 configuration.setConfigurationId("id123");
1730 configuration.setConfigurationName("name123");
1731 configuration.setModelCustomizationId("1234567");
1732 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
1734 org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
1735 configuration2.setConfigurationId("id123");
1736 configuration2.setConfigurationName("name123");
1737 configuration2.setModelCustomizationId("222");
1738 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
1740 workflowResourceIds.setVnfId("id123");
1742 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
1743 .thenReturn(opConfiguration);
1744 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
1745 reqDetails, workflowResourceIds);
1746 assertEquals("id123", id);
1748 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
1749 .thenReturn(Optional.empty());
1750 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
1751 reqDetails, workflowResourceIds);
1752 assertEquals("generatedId123", id2);
1754 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
1755 .thenReturn(opConfiguration2);
1756 this.expectedException.expect(DuplicateNameException.class);
1757 this.expectedException.expectMessage(containsString(
1758 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
1759 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
1760 workflowResourceIds);
1764 public void validateServiceInstanceResourceIdInAAITest() throws Exception {
1765 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1766 workflowResourceIds.setServiceInstanceId("siId123");
1767 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1768 reqDetails.getModelInfo().setModelVersionId("1234567");
1770 ServiceInstance si = new ServiceInstance();
1771 si.setServiceInstanceId("siId123");
1772 si.setModelVersionId("1234567");
1773 ServiceInstances serviceInstances = new ServiceInstances();
1774 serviceInstances.getServiceInstance().add(si);
1775 Optional<ServiceInstance> siOp = Optional.of(si);
1776 ServiceInstance si2 = new ServiceInstance();
1777 si2.setServiceInstanceId("siId222");
1778 si2.setModelVersionId("22222");
1779 si2.setServiceInstanceName("siName222");
1780 Optional<ServiceInstance> siOp2 = Optional.of(si2);
1781 ServiceInstances serviceInstances2 = new ServiceInstances();
1782 serviceInstances2.getServiceInstance().add(si2);
1784 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1785 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
1786 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1787 .thenReturn(Optional.empty());
1789 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1790 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1791 reqDetails, workflowResourceIds);
1792 assertEquals("siId123", id);
1793 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1794 reqDetails, workflowResourceIds);
1795 assertEquals("generatedId123", id2);
1797 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
1798 this.expectedException.expect(DuplicateNameException.class);
1799 this.expectedException.expectMessage(containsString(
1800 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
1801 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
1802 workflowResourceIds);
1806 public void validateServiceInstanceResourceIdInAAIMultipleTest() throws Exception {
1807 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1808 workflowResourceIds.setServiceInstanceId("siId123");
1809 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1810 reqDetails.getModelInfo().setModelVersionId("1234567");
1812 ServiceInstance si = new ServiceInstance();
1813 si.setServiceInstanceId("siId123");
1814 si.setModelVersionId("1234567");
1815 ServiceInstances serviceInstances = new ServiceInstances();
1816 serviceInstances.getServiceInstance().add(si);
1818 ServiceInstance si2 = new ServiceInstance();
1819 si2.setServiceInstanceId("siId222");
1820 si2.setModelVersionId("22222");
1821 si2.setServiceInstanceName("siName222");
1822 serviceInstances.getServiceInstance().add(si2);
1824 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1825 .thenReturn(Optional.empty());
1827 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1829 this.expectedException.expect(DuplicateNameException.class);
1830 this.expectedException.expectMessage(containsString(
1831 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
1832 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1833 workflowResourceIds);
1837 public void validateServiceInstanceResourceIdInAAIExistsTest() throws Exception {
1838 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1839 workflowResourceIds.setServiceInstanceId("siId123");
1840 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1841 reqDetails.getModelInfo().setModelVersionId("1234567");
1843 ServiceInstance si = new ServiceInstance();
1844 si.setServiceInstanceId("siId123");
1845 si.setModelVersionId("1234567");
1846 ServiceInstances serviceInstances = new ServiceInstances();
1847 serviceInstances.getServiceInstance().add(si);
1849 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1850 .thenReturn(Optional.empty());
1852 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1854 Map<String, String> uriKeys = new HashMap<>();
1855 uriKeys.put("global-customer-id", "globalCustomerId");
1856 uriKeys.put("service-type", "serviceType");
1858 when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
1860 this.expectedException.expect(DuplicateNameException.class);
1861 this.expectedException.expectMessage(containsString(
1862 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
1863 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1864 workflowResourceIds);
1868 public void handleRuntimeExceptionTest() {
1869 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1870 execution.setVariable("testProcessKey", "testProcessKeyValue");
1872 workflowAction.handleRuntimeException(execution);
1873 } catch (BpmnError wfe) {
1874 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1880 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
1881 execution.setVariable("testProcessKey", "testProcessKeyValue");
1882 Service service = new Service();
1883 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1884 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1885 networkCust.setModelCustomizationUUID("123");
1886 networkCustomizations.add(networkCust);
1887 service.setNetworkCustomizations(networkCustomizations);
1888 NetworkCollectionResourceCustomization collectionResourceCustomization =
1889 new NetworkCollectionResourceCustomization();
1890 collectionResourceCustomization.setModelCustomizationUUID("123");
1891 CollectionResource collectionResource = new CollectionResource();
1892 collectionResource.setToscaNodeType("NetworkCollection");
1893 InstanceGroup instanceGroup = new InstanceGroup();
1894 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1895 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1896 new CollectionResourceInstanceGroupCustomization();
1897 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1898 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1899 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1900 collectionResource.setInstanceGroup(instanceGroup);
1901 collectionResourceCustomization.setCollectionResource(collectionResource);;
1902 service.setModelUUID("abc");
1903 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1904 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1905 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1906 doReturn(collectionResourceCustomization).when(catalogDbClient)
1907 .getNetworkCollectionResourceCustomizationByID("123");
1908 String bpmnRequest = new String(Files
1909 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1910 ObjectMapper mapper = new ObjectMapper();
1911 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1912 List<Resource> resourceCounter = new ArrayList<>();
1913 thrown.expect(BpmnError.class);
1914 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1915 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
1919 public void sortVfModulesByBaseFirstTest() {
1920 List<Resource> resources = new ArrayList<>();
1921 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1922 resource1.setBaseVfModule(false);
1923 resources.add(resource1);
1924 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1925 resource2.setBaseVfModule(false);
1926 resources.add(resource2);
1927 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1928 resource3.setBaseVfModule(true);
1929 resources.add(resource3);
1930 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1931 assertEquals("333", result.get(0).getResourceId());
1932 assertEquals("222", result.get(1).getResourceId());
1933 assertEquals("111", result.get(2).getResourceId());
1937 public void sortVfModulesByBaseLastTest() {
1938 List<Resource> resources = new ArrayList<>();
1939 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1940 resource1.setBaseVfModule(true);
1941 resources.add(resource1);
1942 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1943 resource2.setBaseVfModule(false);
1944 resources.add(resource2);
1945 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1946 resource3.setBaseVfModule(false);
1947 resources.add(resource3);
1948 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1949 assertEquals("333", result.get(0).getResourceId());
1950 assertEquals("222", result.get(1).getResourceId());
1951 assertEquals("111", result.get(2).getResourceId());
1955 public void findCatalogNetworkCollectionTest() {
1956 Service service = new Service();
1957 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1958 networkCustomization.setModelCustomizationUUID("123");
1959 service.getCollectionResourceCustomizations().add(networkCustomization);
1960 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1961 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1962 assertNotNull(customization);
1966 public void findCatalogNetworkCollectionEmptyTest() {
1967 Service service = new Service();
1968 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1969 networkCustomization.setModelCustomizationUUID("123");
1970 service.getCollectionResourceCustomizations().add(networkCustomization);
1971 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1972 assertNull(customization);
1976 public void findCatalogNetworkCollectionMoreThanOneTest() {
1977 Service service = new Service();
1978 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
1979 networkCustomization1.setModelCustomizationUUID("123");
1980 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
1981 networkCustomization2.setModelCustomizationUUID("321");
1982 service.getCollectionResourceCustomizations().add(networkCustomization1);
1983 service.getCollectionResourceCustomizations().add(networkCustomization2);
1984 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1985 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
1986 workflowAction.findCatalogNetworkCollection(execution, service);
1987 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
1988 execution.getVariable("WorkflowActionErrorMessage"));
1992 public void verifyLackOfNullPointerExceptionForNullResource() {
1993 ExecuteBuildingBlock result = null;
1995 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
1996 false, null, null, null, false, null, true);
1997 } catch (NullPointerException e) {
1998 fail("NullPointerException should not be thrown when 'resource' is null");
2000 assertNotNull(result);
2004 public void traverseAAIServiceTest() {
2005 List<Resource> resourceCounter = new ArrayList<>();
2006 String resourceId = "si0";
2007 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2009 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2010 serviceInstanceAAI.setServiceInstanceId(resourceId);
2012 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2020 Configuration config = new Configuration();
2021 config.setConfigurationId("testConfigurationId2");
2022 serviceInstance.getConfigurations().add(config);
2024 Relationship relationship1 = new Relationship();
2025 relationship1.setRelatedTo("vnfc");
2026 RelationshipList relationshipList1 = new RelationshipList();
2027 relationshipList1.getRelationship().add(relationship1);
2029 Relationship relationship2 = new Relationship();
2030 relationship2.setRelatedTo("vpn-binding");
2031 RelationshipList relationshipList2 = new RelationshipList();
2032 relationshipList2.getRelationship().add(relationship2);
2034 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2035 aaiConfiguration1.setConfigurationId("testConfigurationId");
2036 aaiConfiguration1.setRelationshipList(relationshipList1);
2038 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2039 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2040 aaiConfiguration2.setRelationshipList(relationshipList1);
2043 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2044 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2045 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2046 .getConfiguration("testConfigurationId");
2047 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2048 .getConfiguration("testConfigurationId2");
2049 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2050 assertEquals(8, resourceCounter.size());
2051 assertTrue(resourceCounter.get(2).isBaseVfModule());
2052 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2053 } catch (Exception e) {
2054 fail("Unexpected exception was thrown.");
2058 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2059 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2060 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2061 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2062 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2063 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2064 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2065 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2066 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2070 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2071 List<OrchestrationFlow> result = new ArrayList<>();
2072 for (String flowName : flowNames) {
2073 OrchestrationFlow orchFlow = new OrchestrationFlow();
2074 orchFlow.setFlowName(flowName);
2075 result.add(orchFlow);
2080 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2081 for (int i = 0; i < ebbs.size(); i++) {
2082 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);