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.List;
50 import java.util.Optional;
51 import java.util.UUID;
52 import org.camunda.bpm.engine.delegate.BpmnError;
53 import org.camunda.bpm.engine.delegate.DelegateExecution;
54 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
55 import org.javatuples.Pair;
56 import org.junit.Before;
57 import org.junit.Ignore;
58 import org.junit.Rule;
59 import org.junit.Test;
60 import org.junit.rules.ExpectedException;
61 import org.mockito.InjectMocks;
62 import org.mockito.Mock;
63 import org.mockito.Spy;
64 import org.onap.aai.domain.yang.GenericVnf;
65 import org.onap.aai.domain.yang.GenericVnfs;
66 import org.onap.aai.domain.yang.L3Network;
67 import org.onap.aai.domain.yang.Relationship;
68 import org.onap.aai.domain.yang.RelationshipList;
69 import org.onap.aai.domain.yang.ServiceInstance;
70 import org.onap.aai.domain.yang.ServiceInstances;
71 import org.onap.aai.domain.yang.VfModule;
72 import org.onap.aai.domain.yang.VfModules;
73 import org.onap.aai.domain.yang.VolumeGroup;
74 import org.onap.so.bpmn.BaseTaskTest;
75 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
76 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
77 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
78 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
79 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
80 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
81 import org.onap.so.client.aai.AAIObjectType;
82 import org.onap.so.client.aai.entities.AAIResultWrapper;
83 import org.onap.so.client.aai.entities.Relationships;
84 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
85 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
86 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
87 import org.onap.so.db.catalog.beans.CollectionResource;
88 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
89 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
90 import org.onap.so.db.catalog.beans.ConfigurationResource;
91 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
92 import org.onap.so.db.catalog.beans.CvnfcCustomization;
93 import org.onap.so.db.catalog.beans.HeatEnvironment;
94 import org.onap.so.db.catalog.beans.HeatTemplate;
95 import org.onap.so.db.catalog.beans.InstanceGroup;
96 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
97 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
98 import org.onap.so.db.catalog.beans.Service;
99 import org.onap.so.db.catalog.beans.VfModuleCustomization;
100 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
101 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
102 import org.onap.so.serviceinstancebeans.ModelInfo;
103 import org.onap.so.serviceinstancebeans.RequestDetails;
104 import org.onap.so.serviceinstancebeans.RequestParameters;
105 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
106 import org.onap.so.serviceinstancebeans.SubscriberInfo;
107 import org.springframework.core.env.Environment;
109 public class WorkflowActionTest extends BaseTaskTest {
113 protected Environment environment;
115 protected WorkflowAction workflowAction;
116 private DelegateExecution execution;
120 protected WorkflowAction SPY_workflowAction;
123 public ExpectedException thrown = ExpectedException.none();
125 private String RESOURCE_PATH = "src/test/resources/__files/";
128 public void before() throws Exception {
129 execution = new DelegateExecutionFake();
130 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
131 servInstance.setServiceInstanceId("TEST");
132 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
133 workflowAction.setBbInputSetupUtils(bbSetupUtils);
134 workflowAction.setBbInputSetup(bbInputSetup);
141 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
142 String gAction = "createInstance";
143 String resource = "Network";
144 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
145 execution.setVariable("requestAction", gAction);
147 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
148 execution.setVariable("bpmnRequest", bpmnRequest);
149 execution.setVariable("aLaCarte", true);
150 execution.setVariable("apiVersion", "7");
151 execution.setVariable("requestUri", "v6/networks/123");
153 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
154 List<OrchestrationFlow> orchFlows =
155 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
156 northBoundRequest.setOrchestrationFlowList(orchFlows);
158 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
159 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
160 workflowAction.selectExecutionList(execution);
161 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
162 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
166 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
167 String gAction = "deleteInstance";
168 String resource = "Network";
169 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
170 execution.setVariable("requestAction", gAction);
172 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
173 execution.setVariable("bpmnRequest", bpmnRequest);
174 execution.setVariable("aLaCarte", true);
175 execution.setVariable("apiVersion", "7");
176 execution.setVariable("requestUri", "v6/networks/123");
178 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
179 List<OrchestrationFlow> orchFlows =
180 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
181 northBoundRequest.setOrchestrationFlowList(orchFlows);
183 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
184 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
185 workflowAction.selectExecutionList(execution);
186 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
187 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
191 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
192 String gAction = "createInstance";
193 String resource = "Service";
194 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
195 execution.setVariable("requestAction", gAction);
197 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
198 execution.setVariable("bpmnRequest", bpmnRequest);
199 execution.setVariable("aLaCarte", true);
200 execution.setVariable("apiVersion", "7");
201 execution.setVariable("requestUri", "v6/serviceInstances/123");
204 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
205 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
206 northBoundRequest.setOrchestrationFlowList(orchFlows);
208 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
209 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
210 workflowAction.selectExecutionList(execution);
211 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
212 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
216 * SERVICE MACRO TESTS
219 public void selectExecutionListServiceMacroAssignTest() throws Exception {
220 String gAction = "assignInstance";
221 String resource = "Service";
222 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
223 execution.setVariable("requestAction", gAction);
225 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
226 execution.setVariable("bpmnRequest", bpmnRequest);
227 execution.setVariable("aLaCarte", false);
228 execution.setVariable("apiVersion", "7");
229 execution.setVariable("requestUri", "v6/serviceInstances/123");
232 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
233 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
234 "AssignVolumeGroupBB", "AssignVfModuleBB");
235 northBoundRequest.setOrchestrationFlowList(orchFlows);
237 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
238 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
239 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
240 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
241 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
242 HeatTemplate volumeHeatTemplate = new HeatTemplate();
243 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
244 vfModuleCustomization.setVfModule(vfModule);
246 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
247 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
248 HeatEnvironment heatEnvironment = new HeatEnvironment();
249 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
250 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
251 HeatTemplate moduleHeatTemplate = new HeatTemplate();
252 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
253 vfModuleCustomization2.setVfModule(vfModule2);
255 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
256 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
258 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
259 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
260 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
261 .thenReturn(vfModuleCustomization);
262 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
263 .thenReturn(vfModuleCustomization2);
264 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
265 .thenReturn(vfModuleCustomization3);
266 workflowAction.selectExecutionList(execution);
267 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
268 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
269 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
273 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
274 String gAction = "assignInstance";
275 String resource = "Service";
276 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
277 execution.setVariable("requestAction", gAction);
278 String bpmnRequest = new String(
279 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
280 execution.setVariable("bpmnRequest", bpmnRequest);
281 execution.setVariable("aLaCarte", false);
282 execution.setVariable("apiVersion", "7");
283 execution.setVariable("requestUri", "v6/serviceInstances/123");
286 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
287 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
288 "AssignVolumeGroupBB", "AssignVfModuleBB");
289 northBoundRequest.setOrchestrationFlowList(orchFlows);
291 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
292 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
293 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
294 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
295 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
296 HeatTemplate volumeHeatTemplate = new HeatTemplate();
297 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
298 vfModuleCustomization.setVfModule(vfModule);
300 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
301 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
302 HeatEnvironment heatEnvironment = new HeatEnvironment();
303 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
304 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
305 HeatTemplate moduleHeatTemplate = new HeatTemplate();
306 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
307 vfModuleCustomization2.setVfModule(vfModule2);
309 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
310 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
312 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
313 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
314 false, "att-aic")).thenReturn(northBoundRequest);
315 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
316 .thenReturn(vfModuleCustomization);
317 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
318 .thenReturn(vfModuleCustomization2);
319 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
320 .thenReturn(vfModuleCustomization3);
321 workflowAction.selectExecutionList(execution);
322 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
323 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
324 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
328 public void selectExecutionListServiceMacroActivateTest() throws Exception {
329 String gAction = "activateInstance";
330 String resource = "Service";
331 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
332 execution.setVariable("requestAction", gAction);
333 String bpmnRequest = new String(Files
334 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
335 execution.setVariable("bpmnRequest", bpmnRequest);
336 execution.setVariable("aLaCarte", false);
337 execution.setVariable("apiVersion", "7");
338 execution.setVariable("requestUri", "v6/serviceInstances/si0");
341 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
342 List<OrchestrationFlow> orchFlows =
343 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
344 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
345 northBoundRequest.setOrchestrationFlowList(orchFlows);
347 ServiceInstance serviceInstanceAAI = new ServiceInstance();
348 serviceInstanceAAI.setServiceInstanceId("si0");
349 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
350 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
351 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
352 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
353 vnf.setVnfId("vnf0");
356 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
357 vnf.getVfModules().add(vfModule);
358 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
359 vnf.getVfModules().add(vfModule2);
361 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
362 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
363 volumeGroup.setVolumeGroupId("volumeGroup0");
364 vnf.getVolumeGroups().add(volumeGroup);
366 serviceInstanceMSO.getVnfs().add(vnf);
368 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
369 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
370 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
371 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
372 workflowAction.selectExecutionList(execution);
373 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
374 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
375 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
376 "ActivateServiceInstanceBB");
377 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
378 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
379 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
380 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
381 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
382 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
383 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
384 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
389 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
390 String gAction = "deactivateInstance";
391 String resource = "Service";
392 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
393 execution.setVariable("requestAction", gAction);
394 String bpmnRequest = new String(Files
395 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
396 execution.setVariable("bpmnRequest", bpmnRequest);
397 execution.setVariable("aLaCarte", false);
398 execution.setVariable("apiVersion", "7");
399 execution.setVariable("requestUri", "v6/serviceInstances/123");
402 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
403 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
404 northBoundRequest.setOrchestrationFlowList(orchFlows);
406 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
407 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
408 workflowAction.selectExecutionList(execution);
409 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
410 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
414 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
415 String gAction = "createInstance";
416 String resource = "Service";
417 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
418 execution.setVariable("requestAction", gAction);
419 String bpmnRequest = new String(Files
420 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
421 execution.setVariable("bpmnRequest", bpmnRequest);
422 execution.setVariable("aLaCarte", false);
423 execution.setVariable("apiVersion", "7");
424 execution.setVariable("requestUri", "v6/serviceInstances/123");
427 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
428 northBoundRequest.setIsToplevelflow(true);
429 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
430 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
431 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
432 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
433 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
434 northBoundRequest.setOrchestrationFlowList(orchFlows);
436 Service service = new Service();
437 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
438 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
439 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
440 workflowAction.selectExecutionList(execution);
441 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
442 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
446 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
447 String gAction = "createInstance";
448 String resource = "Service";
449 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
450 execution.setVariable("requestAction", gAction);
451 String bpmnRequest = new String(Files
452 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
453 execution.setVariable("bpmnRequest", bpmnRequest);
454 execution.setVariable("aLaCarte", false);
455 execution.setVariable("apiVersion", "7");
456 execution.setVariable("requestUri", "v6/serviceInstances/123");
459 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
460 northBoundRequest.setIsToplevelflow(true);
461 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
462 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
463 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
464 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
465 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
466 northBoundRequest.setOrchestrationFlowList(orchFlows);
468 Service service = new Service();
469 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
470 networkCustomization.setModelCustomizationUUID("1234");
471 service.getNetworkCustomizations().add(networkCustomization);
472 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
473 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
474 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
475 workflowAction.selectExecutionList(execution);
476 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
477 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
478 "ActivateNetworkBB", "ActivateServiceInstanceBB");
482 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
483 String gAction = "createInstance";
484 String resource = "Service";
485 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
486 execution.setVariable("requestAction", gAction);
487 String bpmnRequest = new String(Files
488 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
489 execution.setVariable("bpmnRequest", bpmnRequest);
490 execution.setVariable("aLaCarte", false);
491 execution.setVariable("apiVersion", "7");
492 execution.setVariable("requestUri", "v6/serviceInstances/123");
495 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
496 northBoundRequest.setIsToplevelflow(true);
497 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
498 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
499 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
500 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
501 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
502 northBoundRequest.setOrchestrationFlowList(orchFlows);
504 Service service = new Service();
505 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
506 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
507 networkCust.setModelCustomizationUUID("123");
508 networkCustomizations.add(networkCust);
509 service.setNetworkCustomizations(networkCustomizations);
510 NetworkCollectionResourceCustomization collectionResourceCustomization =
511 new NetworkCollectionResourceCustomization();
512 collectionResourceCustomization.setModelCustomizationUUID("123");
514 CollectionResource collectionResource = new CollectionResource();
515 collectionResource.setToscaNodeType("NetworkCollection");
516 InstanceGroup instanceGroup = new InstanceGroup();
517 instanceGroup.setToscaNodeType("NetworkCollectionResource");
518 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
519 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
520 new CollectionNetworkResourceCustomization();
521 collectionNetworkResourceCust.setModelCustomizationUUID("123");
522 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
523 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
524 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
525 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
526 new CollectionResourceInstanceGroupCustomization();
527 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
528 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
529 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
530 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
531 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
532 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
533 collectionResource.setInstanceGroup(instanceGroup);
534 collectionResourceCustomization.setCollectionResource(collectionResource);;
535 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
536 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
537 doReturn(collectionResourceCustomization).when(catalogDbClient)
538 .getNetworkCollectionResourceCustomizationByID("123");
539 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
540 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
541 workflowAction.selectExecutionList(execution);
542 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
543 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
544 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
545 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
546 "ActivateServiceInstanceBB");
547 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
548 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
549 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
550 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
551 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
553 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
556 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
557 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
558 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
559 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
560 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
562 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
565 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
566 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
567 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
568 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
569 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
571 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
577 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
578 String gAction = "createInstance";
579 String resource = "Service";
580 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
581 execution.setVariable("requestAction", gAction);
583 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
584 execution.setVariable("bpmnRequest", bpmnRequest);
585 execution.setVariable("aLaCarte", false);
586 execution.setVariable("apiVersion", "7");
587 execution.setVariable("requestUri", "v6/serviceInstances/123");
590 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
591 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
592 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
593 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
594 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
595 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
596 northBoundRequest.setOrchestrationFlowList(orchFlows);
598 Service service = new Service();
599 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
601 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
602 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
603 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
604 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
605 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
606 HeatTemplate volumeHeatTemplate = new HeatTemplate();
607 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
608 vfModuleCustomization.setVfModule(vfModule);
610 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
611 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
612 HeatEnvironment heatEnvironment = new HeatEnvironment();
613 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
614 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
615 HeatTemplate moduleHeatTemplate = new HeatTemplate();
616 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
617 vfModuleCustomization2.setVfModule(vfModule2);
619 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
620 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
622 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
623 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
624 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
625 .thenReturn(vfModuleCustomization);
626 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
627 .thenReturn(vfModuleCustomization2);
628 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
629 .thenReturn(vfModuleCustomization3);
630 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
631 workflowAction.selectExecutionList(execution);
632 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
633 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
634 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
635 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
636 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
637 "ActivateServiceInstanceBB");
638 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
639 int randomUUIDLength = UUID.randomUUID().toString().length();
640 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
641 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
642 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
643 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
646 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
647 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
648 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
652 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
654 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
655 assertEquals(true, execution.getVariable("homing"));
659 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
660 String gAction = "deleteInstance";
661 String resource = "Service";
662 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
663 execution.setVariable("requestAction", gAction);
664 String bpmnRequest = new String(Files
665 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
666 execution.setVariable("bpmnRequest", bpmnRequest);
667 execution.setVariable("aLaCarte", false);
668 execution.setVariable("apiVersion", "7");
669 execution.setVariable("requestUri", "v6/serviceInstances/123");
672 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
673 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
674 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
675 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
676 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
677 northBoundRequest.setOrchestrationFlowList(orchFlows);
679 ServiceInstance serviceInstanceAAI = new ServiceInstance();
680 serviceInstanceAAI.setServiceInstanceId("aaisi123");
681 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
682 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
683 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
684 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
685 vnf.setVnfId("vnfId123");
687 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
688 vnf.getVfModules().add(vfModule);
689 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
690 vnf.getVfModules().add(vfModule2);
692 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
693 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
694 volumeGroup.setVolumeGroupId("vg123");
695 vnf.getVolumeGroups().add(volumeGroup);
697 serviceInstanceMSO.getVnfs().add(vnf);
699 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
700 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
701 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
702 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
703 workflowAction.selectExecutionList(execution);
704 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
705 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
706 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
707 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
708 "UnassignVnfBB", "UnassignServiceInstanceBB");
712 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
713 String gAction = "unassignInstance";
714 String resource = "Service";
715 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
716 execution.setVariable("requestAction", gAction);
717 String bpmnRequest = new String(Files
718 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
719 execution.setVariable("bpmnRequest", bpmnRequest);
720 execution.setVariable("aLaCarte", false);
721 execution.setVariable("apiVersion", "7");
722 execution.setVariable("requestUri", "v6/serviceInstances/123");
725 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
726 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
727 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
728 northBoundRequest.setOrchestrationFlowList(orchFlows);
730 ServiceInstance serviceInstanceAAI = new ServiceInstance();
731 serviceInstanceAAI.setServiceInstanceId("aaisi123");
732 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
733 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
734 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
735 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
736 vnf.setVnfId("vnfId123");
738 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
739 vnf.getVfModules().add(vfModule);
740 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
741 vnf.getVfModules().add(vfModule2);
743 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
744 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
745 volumeGroup.setVolumeGroupId("vg123");
746 vnf.getVolumeGroups().add(volumeGroup);
748 serviceInstanceMSO.getVnfs().add(vnf);
750 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
751 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
752 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
753 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
754 workflowAction.selectExecutionList(execution);
755 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
756 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
757 "UnassignVnfBB", "UnassignServiceInstanceBB");
761 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
762 String gAction = "deleteInstance";
763 String resource = "Service";
764 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
765 execution.setVariable("requestAction", gAction);
766 String bpmnRequest = new String(Files
767 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
768 execution.setVariable("bpmnRequest", bpmnRequest);
769 execution.setVariable("aLaCarte", false);
770 execution.setVariable("apiVersion", "7");
771 execution.setVariable("requestUri", "v6/serviceInstances/123");
774 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
775 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
776 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
777 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
778 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
779 northBoundRequest.setOrchestrationFlowList(orchFlows);
781 ServiceInstance serviceInstanceAAI = new ServiceInstance();
782 serviceInstanceAAI.setServiceInstanceId("aaisi123");
783 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
784 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
786 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
787 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
788 network.setNetworkId("123");
789 serviceInstanceMSO.getNetworks().add(network);
790 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
791 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
792 network2.setNetworkId("321");
793 serviceInstanceMSO.getNetworks().add(network2);
795 Collection collection = new Collection();
796 serviceInstanceMSO.setCollection(collection);
798 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
799 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
800 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
801 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
802 workflowAction.selectExecutionList(execution);
803 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
804 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
805 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
806 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
810 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
811 String gAction = "recreateInstance";
812 String resource = "Vnf";
813 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
814 execution.setVariable("requestAction", gAction);
816 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
817 execution.setVariable("bpmnRequest", bpmnRequest);
818 execution.setVariable("aLaCarte", false);
819 execution.setVariable("apiVersion", "7");
820 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
821 execution.setVariable("serviceInstanceId", "123");
822 execution.setVariable("vnfId", "1234");
824 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
825 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
826 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
827 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
828 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
829 "AAIUnsetVnfInMaintBB");
830 northBoundRequest.setOrchestrationFlowList(orchFlows);
832 ServiceInstance serviceInstanceAAI = new ServiceInstance();
833 serviceInstanceAAI.setServiceInstanceId("123");
834 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
835 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
836 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
837 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
838 vnf.setVnfId("1234");
840 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
841 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
842 vfModule.setVfModuleId("vfModule1");
843 vnf.getVfModules().add(vfModule);
844 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
845 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
846 vfModule2.setVfModuleId("vfModule2");
847 vnf.getVfModules().add(vfModule2);
849 serviceInstanceMSO.getVnfs().add(vnf);
851 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
852 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
853 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
854 false, "cloud-owner")).thenReturn(northBoundRequest);
855 workflowAction.selectExecutionList(execution);
856 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
857 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
858 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
859 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
860 "AAIUnsetVnfInMaintBB");
864 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
865 String gAction = "replaceInstance";
866 String resource = "Vnf";
867 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
868 execution.setVariable("requestAction", gAction);
870 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
871 execution.setVariable("bpmnRequest", bpmnRequest);
872 execution.setVariable("aLaCarte", false);
873 execution.setVariable("apiVersion", "7");
874 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
875 execution.setVariable("serviceInstanceId", "123");
876 execution.setVariable("vnfId", "1234");
878 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
879 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
880 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
881 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
882 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
883 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
884 "AAIUnsetVnfInMaintBB");
885 northBoundRequest.setOrchestrationFlowList(orchFlows);
887 ServiceInstance serviceInstanceAAI = new ServiceInstance();
888 serviceInstanceAAI.setServiceInstanceId("123");
889 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
890 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
891 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
892 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
893 vnf.setVnfId("1234");
894 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
895 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
896 vfModule.setVfModuleId("vfModule1");
897 vnf.getVfModules().add(vfModule);
898 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
899 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
900 vfModule2.setVfModuleId("vfModule2");
901 vnf.getVfModules().add(vfModule2);
902 serviceInstanceMSO.getVnfs().add(vnf);
903 VfModule vfModuleAAI = new VfModule();
904 vfModuleAAI.setVfModuleId("vfModule2");
905 RelationshipList relationshipList = new RelationshipList();
906 Relationship relationship = new Relationship();
907 relationshipList.getRelationship().add(relationship);
908 vfModuleAAI.setRelationshipList(relationshipList);
909 Relationships relationships = new Relationships("abc");
910 Configuration config = new Configuration();
911 config.setConfigurationId("configId");
912 Optional<Configuration> configOp = Optional.of(config);
913 Optional<Relationships> relationshipsOp = Optional.of(relationships);
915 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
916 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
917 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
918 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
919 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
920 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
921 false, "cloud-owner")).thenReturn(northBoundRequest);
922 workflowAction.selectExecutionList(execution);
923 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
924 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
925 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
926 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
927 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
928 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
929 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
930 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
931 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
937 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
938 String gAction = "createInstance";
939 String resource = "NetworkCollection";
940 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
941 execution.setVariable("requestAction", gAction);
942 String bpmnRequest = new String(
943 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
944 execution.setVariable("bpmnRequest", bpmnRequest);
945 execution.setVariable("aLaCarte", false);
946 execution.setVariable("apiVersion", "7");
947 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
950 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
951 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
952 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
953 northBoundRequest.setOrchestrationFlowList(orchFlows);
955 Service service = new Service();
956 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
957 CollectionResource collectionResource = new CollectionResource();
958 collectionResource.setToscaNodeType("Data NetworkCollection Data");
959 collectionResourceCustomization.setCollectionResource(collectionResource);
960 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
962 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
963 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
964 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
965 workflowAction.selectExecutionList(execution);
966 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
967 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
968 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
969 "ActivateNetworkCollectionBB");
974 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
975 String gAction = "deleteInstance";
976 String resource = "NetworkCollection";
977 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
978 execution.setVariable("requestAction", gAction);
979 String bpmnRequest = new String(
980 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
981 execution.setVariable("bpmnRequest", bpmnRequest);
982 execution.setVariable("aLaCarte", false);
983 execution.setVariable("apiVersion", "7");
984 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
986 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
987 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
988 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
989 northBoundRequest.setOrchestrationFlowList(orchFlows);
991 Service service = new Service();
992 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
993 CollectionResource collectionResource = new CollectionResource();
994 collectionResource.setToscaNodeType("Data NetworkCollection Data");
995 collectionResourceCustomization.setCollectionResource(collectionResource);
996 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
998 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
999 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1000 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1001 workflowAction.selectExecutionList(execution);
1002 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1003 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1004 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1005 "DeleteNetworkCollectionBB");
1009 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1010 String gAction = "createInstance";
1011 String resource = "VfModule";
1012 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1013 execution.setVariable("requestAction", gAction);
1014 String bpmnRequest =
1015 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1016 execution.setVariable("bpmnRequest", bpmnRequest);
1017 execution.setVariable("aLaCarte", true);
1018 execution.setVariable("apiVersion", "7");
1019 execution.setVariable("requestUri",
1020 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1023 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1024 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1025 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1026 northBoundRequest.setOrchestrationFlowList(orchFlows);
1028 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1029 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1030 workflowAction.selectExecutionList(execution);
1031 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1032 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1036 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1037 String gAction = "createInstance";
1038 String resource = "VfModule";
1039 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1040 execution.setVariable("requestAction", gAction);
1041 String bpmnRequest =
1042 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1043 execution.setVariable("bpmnRequest", bpmnRequest);
1044 execution.setVariable("aLaCarte", true);
1045 execution.setVariable("apiVersion", "7");
1046 execution.setVariable("requestUri",
1047 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1049 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1050 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1051 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1052 northBoundRequest.setOrchestrationFlowList(orchFlows);
1054 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1055 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1056 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1057 new CvnfcConfigurationCustomization();
1058 ConfigurationResource configurationResource = new ConfigurationResource();
1059 configurationResource.setToscaNodeType("FabricConfiguration");
1060 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1061 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1062 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1063 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1064 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1065 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1066 cvnfcCustomization.setDescription("description");
1067 cvnfcCustomizations.add(cvnfcCustomization);
1069 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1070 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1071 new CvnfcConfigurationCustomization();
1072 ConfigurationResource configurationResource2 = new ConfigurationResource();
1073 configurationResource2.setToscaNodeType("FabricConfiguration");
1074 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1075 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1076 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1077 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1078 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1079 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1080 cvnfcCustomization2.setDescription("description2");
1081 cvnfcCustomizations.add(cvnfcCustomization2);
1083 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1084 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1085 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1086 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1087 workflowAction.selectExecutionList(execution);
1088 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1089 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1090 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1091 "ActivateFabricConfigurationBB");
1095 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1096 String gAction = "deleteInstance";
1097 String resource = "VfModule";
1098 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1099 execution.setVariable("requestAction", gAction);
1100 String bpmnRequest =
1101 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1102 execution.setVariable("bpmnRequest", bpmnRequest);
1103 execution.setVariable("aLaCarte", true);
1104 execution.setVariable("apiVersion", "7");
1105 execution.setVariable("requestUri",
1106 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1108 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1109 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1110 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1111 northBoundRequest.setOrchestrationFlowList(orchFlows);
1113 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1114 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1116 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1117 vnf.setVnfId("vnf0");
1118 vnf.setModelCustomizationId("modelCustomizationId");
1119 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1121 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1122 vfModule.setModelCustomizationId("modelCustomizationId");
1123 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1125 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1126 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1127 vnfc.setModelInvariantId("modelInvariantId");
1128 vnfc.setVnfcName("testVnfcName");
1130 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1133 List<org.onap.aai.domain.yang.Configuration> configurations =
1134 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1135 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1136 configuration.setConfigurationId("configurationId");
1137 configuration.setModelCustomizationId("modelCustimizationId");
1138 configuration.setConfigurationName("testConfigurationName");
1139 configurations.add(configuration);
1140 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1143 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1145 SPY_workflowAction.selectExecutionList(execution);
1146 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1147 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1148 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1152 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1153 String gAction = "deleteInstance";
1154 String resource = "VfModule";
1155 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1156 execution.setVariable("requestAction", gAction);
1157 String bpmnRequest =
1158 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1159 execution.setVariable("bpmnRequest", bpmnRequest);
1160 execution.setVariable("aLaCarte", true);
1161 execution.setVariable("apiVersion", "7");
1162 execution.setVariable("requestUri",
1163 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1165 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1166 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1167 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1168 northBoundRequest.setOrchestrationFlowList(orchFlows);
1170 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1171 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1173 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1174 vnf.setVnfId("vnf0");
1175 vnf.setModelCustomizationId("modelCustomizationId");
1176 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1178 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1179 vfModule.setModelCustomizationId("modelCustomizationId");
1180 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1182 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1183 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1184 vnfc.setModelInvariantId("modelInvariantId");
1185 vnfc.setVnfcName("testVnfcName");
1187 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1190 List<org.onap.aai.domain.yang.Configuration> configurations =
1191 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1192 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1193 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1196 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1198 SPY_workflowAction.selectExecutionList(execution);
1199 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1200 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1204 public void selectExecutionListMacroResumeTest() throws Exception {
1205 String gAction = "createInstance";
1206 String resource = "Service";
1207 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1208 execution.setVariable("requestAction", gAction);
1209 String bpmnRequest =
1210 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
1211 execution.setVariable("bpmnRequest", bpmnRequest);
1212 execution.setVariable("aLaCarte", false);
1213 execution.setVariable("apiVersion", "7");
1214 execution.setVariable("requestUri", "v6/serviceInstances/123");
1216 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1217 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1218 northBoundRequest.setOrchestrationFlowList(orchFlows);
1220 Service service = new Service();
1221 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1223 ServiceInstance si = new ServiceInstance();
1225 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1226 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1228 String flowsToExecuteString =
1229 "[{\"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\"}}]";
1230 ObjectMapper om = new ObjectMapper();
1231 List<ExecuteBuildingBlock> flowsToExecute = null;
1233 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1234 flowsToExecute = Arrays.asList(asArray);
1235 } catch (Exception e) {
1236 e.printStackTrace();
1239 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1241 workflowAction.selectExecutionList(execution);
1242 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1243 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1247 public void getRelatedResourcesInVfModuleTest() throws Exception {
1248 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1249 vnfc.setModelInvariantId("modelInvariantId");
1250 vnfc.setVnfcName("testVnfcName");
1252 String vfncPayload =
1253 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1254 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1256 String configurationPayload =
1257 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1258 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1259 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1260 configurationResultWrappers.add(configurationWrapper);
1262 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1263 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1265 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1267 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1268 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1269 assertEquals(1, configurationsList.size());
1270 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1274 * WorkflowActionBB Tests
1278 public void pluralTest() {
1279 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1280 "networks, Network", "invalidNames, invalidNames");
1281 items.forEach(item -> {
1282 String[] split = item.split(",");
1283 String type = split[0].trim();
1284 String expected = split[1].trim();
1285 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1290 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1291 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1292 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1293 BuildingBlock bb = new BuildingBlock();
1294 bb.setBpmnFlowName("AssignNetworkBB");
1296 ebb.setBuildingBlock(bb);
1297 executeFlows.add(ebb);
1298 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1299 BuildingBlock bb2 = new BuildingBlock();
1300 bb2.setBpmnFlowName("AssignNetworkBB");
1302 ebb2.setBuildingBlock(bb2);
1303 executeFlows.add(ebb2);
1304 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1305 BuildingBlock bb3 = new BuildingBlock();
1306 bb3.setBpmnFlowName("CreateNetworkBB");
1308 ebb3.setBuildingBlock(bb3);
1309 executeFlows.add(ebb3);
1310 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1311 BuildingBlock bb4 = new BuildingBlock();
1312 bb4.setBpmnFlowName("CreateNetworkBB");
1314 ebb4.setBuildingBlock(bb4);
1315 executeFlows.add(ebb4);
1316 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1317 BuildingBlock bb5 = new BuildingBlock();
1318 bb5.setBpmnFlowName("ActivateNetworkBB");
1320 ebb5.setBuildingBlock(bb5);
1321 executeFlows.add(ebb5);
1322 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1323 BuildingBlock bb6 = new BuildingBlock();
1324 bb6.setBpmnFlowName("ActivateNetworkBB");
1326 ebb6.setBuildingBlock(bb6);
1327 executeFlows.add(ebb6);
1329 List<ExecuteBuildingBlock> sorted =
1330 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1331 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1332 "CreateNetworkBB", "ActivateNetworkBB");
1336 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1337 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1338 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1339 BuildingBlock bb = new BuildingBlock();
1340 bb.setBpmnFlowName("DeactivateNetworkBB");
1342 ebb.setBuildingBlock(bb);
1343 executeFlows.add(ebb);
1344 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1345 BuildingBlock bb2 = new BuildingBlock();
1346 bb2.setBpmnFlowName("DeactivateNetworkBB");
1348 ebb2.setBuildingBlock(bb2);
1349 executeFlows.add(ebb2);
1350 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1351 BuildingBlock bb3 = new BuildingBlock();
1352 bb3.setBpmnFlowName("DeleteNetworkBB");
1354 ebb3.setBuildingBlock(bb3);
1355 executeFlows.add(ebb3);
1356 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1357 BuildingBlock bb4 = new BuildingBlock();
1358 bb4.setBpmnFlowName("DeleteNetworkBB");
1360 ebb4.setBuildingBlock(bb4);
1361 executeFlows.add(ebb4);
1362 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1363 BuildingBlock bb5 = new BuildingBlock();
1364 bb5.setBpmnFlowName("UnassignNetworkBB");
1366 ebb5.setBuildingBlock(bb5);
1367 executeFlows.add(ebb5);
1368 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1369 BuildingBlock bb6 = new BuildingBlock();
1370 bb6.setBpmnFlowName("UnassignNetworkBB");
1372 ebb6.setBuildingBlock(bb6);
1373 executeFlows.add(ebb6);
1375 List<ExecuteBuildingBlock> sorted =
1376 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1377 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1378 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1382 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1383 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1384 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1385 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1386 northBoundRequest.setOrchestrationFlowList(orchFlows);
1387 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1388 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1390 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1391 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1392 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1393 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1394 WorkflowType.VNF, false, "my-custom-cloud-owner");
1395 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1396 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1397 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1398 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1399 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1400 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1401 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1402 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1403 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1404 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1408 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1409 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1410 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1411 northBoundRequest.setOrchestrationFlowList(orchFlows);
1412 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1413 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1415 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1416 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1417 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1421 public void extractResourceIdAndTypeFromUriTest() {
1422 String uri = "/v6/serviceInstances/123";
1423 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1424 String uri3 = "/v6/serviceInstances";
1425 String uri4 = "/v6/serviceInstances/assign";
1426 String uri5 = "'/v6/serviceInstances/123/vnfs";
1427 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1428 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1429 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1430 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1431 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1432 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1433 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1434 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1435 assertEquals(expected1.getResourceId(), result.getResourceId());
1436 assertEquals(expected1.getResourceType(), result.getResourceType());
1437 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1438 assertEquals(expected2.getResourceId(), result.getResourceId());
1439 assertEquals(expected2.getResourceType(), result.getResourceType());
1440 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1441 assertEquals("Service", result.getResourceType().toString());
1442 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1443 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1444 assertEquals("Service", result.getResourceType().toString());
1445 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1446 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1447 assertEquals("Vnf", result.getResourceType().toString());
1448 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1449 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1450 assertEquals(expected3.getResourceId(), result.getResourceId());
1451 assertEquals(expected3.getResourceType(), result.getResourceType());
1452 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1453 assertEquals(expected4.getResourceId(), result.getResourceId());
1454 assertEquals(expected4.getResourceType(), result.getResourceType());
1455 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1456 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1457 assertEquals("VfModule", result.getResourceType().toString());
1462 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1463 this.expectedException.expect(IllegalArgumentException.class);
1464 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1465 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1469 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1470 this.expectedException.expect(IllegalArgumentException.class);
1471 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1472 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1476 public void extractResourceIdAndTypeFromUriResumeTest() {
1477 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1478 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
1479 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1483 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
1484 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1485 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/deactivateAndCloudDelete/resume");
1486 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1490 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
1491 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1492 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/replace/resume");
1493 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1497 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
1498 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1499 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
1500 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1504 public void isUriResumeTest() {
1505 assertTrue(workflowAction.isUriResume(
1506 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
1507 assertTrue(workflowAction.isUriResume(
1508 " http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume"));
1510 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
1514 public void isRequestMacroServiceResumeTest() {
1515 ServiceInstance si = new ServiceInstance();
1516 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
1517 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
1518 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
1522 public void populateResourceIdsFromApiHandlerTest() {
1523 execution.setVariable("serviceInstanceId", "123");
1524 execution.setVariable("vnfId", "888");
1525 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1526 assertEquals("123", x.getServiceInstanceId());
1527 assertEquals("888", x.getVnfId());
1528 assertNull(x.getVolumeGroupId());
1531 private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
1532 String modelCustomizationId) {
1533 RequestDetails reqDetails = new RequestDetails();
1534 SubscriberInfo subInfo = new SubscriberInfo();
1535 subInfo.setGlobalSubscriberId(globalSubscriberId);
1536 reqDetails.setSubscriberInfo(subInfo);
1537 RequestParameters reqParams = new RequestParameters();
1538 reqParams.setSubscriptionServiceType(subscriptionServiceType);
1539 reqDetails.setRequestParameters(reqParams);
1540 ModelInfo modelInfo = new ModelInfo();
1541 modelInfo.setModelCustomizationId(modelCustomizationId);
1542 reqDetails.setModelInfo(modelInfo);
1547 public void validateVnfResourceIdInAAITest() throws Exception {
1548 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1549 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1550 workflowResourceIds.setServiceInstanceId("siId123");
1552 GenericVnf vnf = new GenericVnf();
1553 vnf.setVnfId("id123");
1554 vnf.setVnfName("vnfName123");
1555 vnf.setModelCustomizationId("1234567");
1556 Optional<GenericVnf> opVnf = Optional.of(vnf);
1557 GenericVnf vnf2 = new GenericVnf();
1558 vnf2.setVnfId("id123");
1559 vnf2.setVnfName("vnfName222");
1560 vnf2.setModelCustomizationId("222");
1561 Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
1562 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
1563 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
1564 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1565 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
1566 workflowResourceIds);
1567 assertEquals("id123", id);
1568 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1569 workflowResourceIds);
1570 assertEquals("generatedId123", id2);
1572 this.expectedException.expect(DuplicateNameException.class);
1573 this.expectedException.expectMessage(containsString(
1574 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
1575 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
1576 workflowResourceIds);
1580 public void validateVnfResourceNameInAAITest() throws Exception {
1581 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1582 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1583 workflowResourceIds.setServiceInstanceId("siId123");
1586 GenericVnfs genericVnfs = new GenericVnfs();
1587 GenericVnf vnf3 = new GenericVnf();
1588 vnf3.setVnfId("id123");
1589 vnf3.setVnfName("vnfName333");
1590 genericVnfs.getGenericVnf().add(vnf3);
1591 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
1592 when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
1594 this.expectedException.expect(DuplicateNameException.class);
1595 this.expectedException.expectMessage(containsString(
1596 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
1597 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
1598 workflowResourceIds);
1602 public void validateNetworkResourceIdInAAITest() throws Exception {
1603 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1604 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1605 workflowResourceIds.setServiceInstanceId("siId123");
1608 L3Network network = new L3Network();
1609 network.setNetworkId("id123");
1610 network.setNetworkName("name123");
1611 network.setModelCustomizationId("1234567");
1612 workflowResourceIds.setServiceInstanceId("siId123");
1613 Optional<L3Network> opNetwork = Optional.of(network);
1614 L3Network network2 = new L3Network();
1615 network2.setNetworkId("id123");
1616 network2.setNetworkName("networkName222");
1617 network2.setModelCustomizationId("222");
1618 Optional<L3Network> opNetwork2 = Optional.of(network2);
1619 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1620 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
1621 .thenReturn(opNetwork2);
1622 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1623 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
1624 reqDetails, workflowResourceIds);
1625 assertEquals("id123", id);
1626 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
1627 reqDetails, workflowResourceIds);
1628 assertEquals("generatedId123", id2);
1630 this.expectedException.expect(DuplicateNameException.class);
1631 this.expectedException.expectMessage(containsString(
1632 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
1633 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
1634 workflowResourceIds);
1638 public void validateNetworkResourceNameExistsInAAITest() throws Exception {
1639 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1640 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1641 workflowResourceIds.setServiceInstanceId("siId123");
1644 L3Network network = new L3Network();
1645 network.setNetworkId("id123");
1646 network.setNetworkName("name123");
1647 network.setModelCustomizationId("1234567");
1648 workflowResourceIds.setServiceInstanceId("siId123");
1650 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
1651 .thenReturn(Optional.empty());
1652 when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
1654 this.expectedException.expect(DuplicateNameException.class);
1655 this.expectedException.expectMessage(containsString(
1656 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
1657 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
1658 workflowResourceIds);
1662 public void validateVfModuleResourceIdInAAITest() throws Exception {
1663 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1664 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1665 workflowResourceIds.setServiceInstanceId("siId123");
1667 GenericVnf vnf = new GenericVnf();
1668 vnf.setVnfId("id123");
1669 vnf.setVnfName("vnfName123");
1670 vnf.setModelCustomizationId("222");
1673 VfModules vfModules = new VfModules();
1674 VfModule vfModule = new VfModule();
1675 vfModule.setVfModuleId("id123");
1676 vfModule.setVfModuleName("name123");
1677 vfModule.setModelCustomizationId("1234567");
1678 vfModules.getVfModule().add(vfModule);
1679 vnf.setVfModules(vfModules);
1680 workflowResourceIds.setVnfId("id123");
1681 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1682 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
1683 reqDetails, workflowResourceIds);
1684 assertEquals("id123", id);
1686 GenericVnf vnf1 = new GenericVnf();
1687 VfModules vfModules2 = new VfModules();
1688 VfModule vfModule2 = new VfModule();
1689 vfModule2.setVfModuleId("id123");
1690 vfModule2.setVfModuleName("vFModName222");
1691 vfModule2.setModelCustomizationId("222");
1692 vfModules2.getVfModule().add(vfModule2);
1693 vnf1.setVfModules(vfModules2);
1694 workflowResourceIds.setVnfId("id111");
1695 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
1696 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
1697 reqDetails, workflowResourceIds);
1698 assertEquals("generatedId123", id2);
1700 this.expectedException.expect(DuplicateNameException.class);
1701 this.expectedException.expectMessage(containsString(
1702 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
1703 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
1704 workflowResourceIds);
1709 public void validateVolumeGroupResourceIdInAAITest() throws Exception {
1710 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1711 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1712 workflowResourceIds.setServiceInstanceId("siId123");
1714 GenericVnf vnf = new GenericVnf();
1715 vnf.setVnfId("id123");
1716 vnf.setVnfName("vnfName123");
1717 vnf.setModelCustomizationId("1234567");
1719 GenericVnf vnf2 = new GenericVnf();
1720 vnf2.setVnfId("id123");
1721 vnf2.setVnfName("vnfName123");
1722 vnf2.setModelCustomizationId("222");
1725 VolumeGroup volumeGroup = new VolumeGroup();
1726 volumeGroup.setVolumeGroupId("id123");
1727 volumeGroup.setVolumeGroupName("name123");
1728 workflowResourceIds.setVnfId("id123");
1729 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1731 workflowResourceIds.setVnfId("id123");
1733 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1734 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1735 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
1736 reqDetails, workflowResourceIds);
1737 assertEquals("id123", id);
1739 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
1740 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1741 .thenReturn(opVolumeGroup);
1743 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
1744 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
1745 reqDetails, workflowResourceIds);
1746 assertEquals("generatedId123", id2);
1750 public void validateConfigurationResourceIdInAAITest() throws Exception {
1751 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1752 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1753 workflowResourceIds.setServiceInstanceId("siId123");
1756 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1757 configuration.setConfigurationId("id123");
1758 configuration.setConfigurationName("name123");
1759 configuration.setModelCustomizationId("1234567");
1760 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
1762 org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
1763 configuration2.setConfigurationId("id123");
1764 configuration2.setConfigurationName("name123");
1765 configuration2.setModelCustomizationId("222");
1766 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
1768 workflowResourceIds.setVnfId("id123");
1770 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
1771 .thenReturn(opConfiguration);
1772 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
1773 reqDetails, workflowResourceIds);
1774 assertEquals("id123", id);
1776 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
1777 .thenReturn(Optional.empty());
1778 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
1779 reqDetails, workflowResourceIds);
1780 assertEquals("generatedId123", id2);
1782 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
1783 .thenReturn(opConfiguration2);
1784 this.expectedException.expect(DuplicateNameException.class);
1785 this.expectedException.expectMessage(containsString(
1786 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
1787 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
1788 workflowResourceIds);
1792 public void validateServiceInstanceResourceIdInAAITest() throws Exception {
1793 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1794 workflowResourceIds.setServiceInstanceId("siId123");
1795 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1796 reqDetails.getModelInfo().setModelVersionId("1234567");
1798 ServiceInstance si = new ServiceInstance();
1799 si.setServiceInstanceId("siId123");
1800 si.setModelVersionId("1234567");
1801 ServiceInstances serviceInstances = new ServiceInstances();
1802 serviceInstances.getServiceInstance().add(si);
1803 Optional<ServiceInstance> siOp = Optional.of(si);
1804 ServiceInstance si2 = new ServiceInstance();
1805 si2.setServiceInstanceId("siId222");
1806 si2.setModelVersionId("22222");
1807 si2.setServiceInstanceName("siName222");
1808 Optional<ServiceInstance> siOp2 = Optional.of(si2);
1809 ServiceInstances serviceInstances2 = new ServiceInstances();
1810 serviceInstances2.getServiceInstance().add(si2);
1812 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1813 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
1814 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1815 .thenReturn(Optional.empty());
1817 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1818 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1819 reqDetails, workflowResourceIds);
1820 assertEquals("siId123", id);
1821 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1822 reqDetails, workflowResourceIds);
1823 assertEquals("generatedId123", id2);
1825 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
1826 this.expectedException.expect(DuplicateNameException.class);
1827 this.expectedException.expectMessage(containsString(
1828 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
1829 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
1830 workflowResourceIds);
1834 public void validateServiceInstanceResourceIdInAAIMultipleTest() throws Exception {
1835 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1836 workflowResourceIds.setServiceInstanceId("siId123");
1837 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1838 reqDetails.getModelInfo().setModelVersionId("1234567");
1840 ServiceInstance si = new ServiceInstance();
1841 si.setServiceInstanceId("siId123");
1842 si.setModelVersionId("1234567");
1843 ServiceInstances serviceInstances = new ServiceInstances();
1844 serviceInstances.getServiceInstance().add(si);
1846 ServiceInstance si2 = new ServiceInstance();
1847 si2.setServiceInstanceId("siId222");
1848 si2.setModelVersionId("22222");
1849 si2.setServiceInstanceName("siName222");
1850 serviceInstances.getServiceInstance().add(si2);
1852 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1853 .thenReturn(Optional.empty());
1855 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1857 this.expectedException.expect(DuplicateNameException.class);
1858 this.expectedException.expectMessage(containsString(
1859 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
1860 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1861 workflowResourceIds);
1865 public void validateServiceInstanceResourceIdInAAIExistsTest() throws Exception {
1866 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1867 workflowResourceIds.setServiceInstanceId("siId123");
1868 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1869 reqDetails.getModelInfo().setModelVersionId("1234567");
1871 ServiceInstance si = new ServiceInstance();
1872 si.setServiceInstanceId("siId123");
1873 si.setModelVersionId("1234567");
1874 ServiceInstances serviceInstances = new ServiceInstances();
1875 serviceInstances.getServiceInstance().add(si);
1877 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1878 .thenReturn(Optional.empty());
1880 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1882 Map<String, String> uriKeys = new HashMap<>();
1883 uriKeys.put("global-customer-id", "globalCustomerId");
1884 uriKeys.put("service-type", "serviceType");
1886 when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
1888 this.expectedException.expect(DuplicateNameException.class);
1889 this.expectedException.expectMessage(containsString(
1890 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
1891 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1892 workflowResourceIds);
1896 public void handleRuntimeExceptionTest() {
1897 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1898 execution.setVariable("testProcessKey", "testProcessKeyValue");
1900 workflowAction.handleRuntimeException(execution);
1901 } catch (BpmnError wfe) {
1902 assertEquals("MSOWorkflowException", wfe.getErrorCode());
1908 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
1909 execution.setVariable("testProcessKey", "testProcessKeyValue");
1910 Service service = new Service();
1911 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1912 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1913 networkCust.setModelCustomizationUUID("123");
1914 networkCustomizations.add(networkCust);
1915 service.setNetworkCustomizations(networkCustomizations);
1916 NetworkCollectionResourceCustomization collectionResourceCustomization =
1917 new NetworkCollectionResourceCustomization();
1918 collectionResourceCustomization.setModelCustomizationUUID("123");
1919 CollectionResource collectionResource = new CollectionResource();
1920 collectionResource.setToscaNodeType("NetworkCollection");
1921 InstanceGroup instanceGroup = new InstanceGroup();
1922 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1923 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
1924 new CollectionResourceInstanceGroupCustomization();
1925 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1926 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1927 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1928 collectionResource.setInstanceGroup(instanceGroup);
1929 collectionResourceCustomization.setCollectionResource(collectionResource);;
1930 service.setModelUUID("abc");
1931 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1932 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1933 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1934 doReturn(collectionResourceCustomization).when(catalogDbClient)
1935 .getNetworkCollectionResourceCustomizationByID("123");
1936 String bpmnRequest = new String(Files
1937 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1938 ObjectMapper mapper = new ObjectMapper();
1939 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1940 List<Resource> resourceCounter = new ArrayList<>();
1941 thrown.expect(BpmnError.class);
1942 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
1943 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
1947 public void sortVfModulesByBaseFirstTest() {
1948 List<Resource> resources = new ArrayList<>();
1949 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1950 resource1.setBaseVfModule(false);
1951 resources.add(resource1);
1952 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1953 resource2.setBaseVfModule(false);
1954 resources.add(resource2);
1955 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1956 resource3.setBaseVfModule(true);
1957 resources.add(resource3);
1958 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1959 assertEquals("333", result.get(0).getResourceId());
1960 assertEquals("222", result.get(1).getResourceId());
1961 assertEquals("111", result.get(2).getResourceId());
1965 public void sortVfModulesByBaseLastTest() {
1966 List<Resource> resources = new ArrayList<>();
1967 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
1968 resource1.setBaseVfModule(true);
1969 resources.add(resource1);
1970 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
1971 resource2.setBaseVfModule(false);
1972 resources.add(resource2);
1973 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
1974 resource3.setBaseVfModule(false);
1975 resources.add(resource3);
1976 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1977 assertEquals("333", result.get(0).getResourceId());
1978 assertEquals("222", result.get(1).getResourceId());
1979 assertEquals("111", result.get(2).getResourceId());
1983 public void findCatalogNetworkCollectionTest() {
1984 Service service = new Service();
1985 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1986 networkCustomization.setModelCustomizationUUID("123");
1987 service.getCollectionResourceCustomizations().add(networkCustomization);
1988 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1989 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
1990 assertNotNull(customization);
1994 public void findCatalogNetworkCollectionEmptyTest() {
1995 Service service = new Service();
1996 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
1997 networkCustomization.setModelCustomizationUUID("123");
1998 service.getCollectionResourceCustomizations().add(networkCustomization);
1999 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2000 assertNull(customization);
2004 public void findCatalogNetworkCollectionMoreThanOneTest() {
2005 Service service = new Service();
2006 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2007 networkCustomization1.setModelCustomizationUUID("123");
2008 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2009 networkCustomization2.setModelCustomizationUUID("321");
2010 service.getCollectionResourceCustomizations().add(networkCustomization1);
2011 service.getCollectionResourceCustomizations().add(networkCustomization2);
2012 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2013 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2014 workflowAction.findCatalogNetworkCollection(execution, service);
2015 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2016 execution.getVariable("WorkflowActionErrorMessage"));
2020 public void verifyLackOfNullPointerExceptionForNullResource() {
2021 ExecuteBuildingBlock result = null;
2023 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
2024 false, null, null, null, false, null, true);
2025 } catch (NullPointerException e) {
2026 fail("NullPointerException should not be thrown when 'resource' is null");
2028 assertNotNull(result);
2032 public void traverseAAIServiceTest() {
2033 List<Resource> resourceCounter = new ArrayList<>();
2034 String resourceId = "si0";
2035 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2037 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2038 serviceInstanceAAI.setServiceInstanceId(resourceId);
2040 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2048 Configuration config = new Configuration();
2049 config.setConfigurationId("testConfigurationId2");
2050 serviceInstance.getConfigurations().add(config);
2052 Relationship relationship1 = new Relationship();
2053 relationship1.setRelatedTo("vnfc");
2054 RelationshipList relationshipList1 = new RelationshipList();
2055 relationshipList1.getRelationship().add(relationship1);
2057 Relationship relationship2 = new Relationship();
2058 relationship2.setRelatedTo("vpn-binding");
2059 RelationshipList relationshipList2 = new RelationshipList();
2060 relationshipList2.getRelationship().add(relationship2);
2062 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2063 aaiConfiguration1.setConfigurationId("testConfigurationId");
2064 aaiConfiguration1.setRelationshipList(relationshipList1);
2066 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2067 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2068 aaiConfiguration2.setRelationshipList(relationshipList1);
2071 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2072 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2073 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2074 .getConfiguration("testConfigurationId");
2075 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2076 .getConfiguration("testConfigurationId2");
2077 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2078 assertEquals(8, resourceCounter.size());
2079 assertTrue(resourceCounter.get(2).isBaseVfModule());
2080 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2081 } catch (Exception e) {
2082 fail("Unexpected exception was thrown.");
2086 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2087 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2088 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2089 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2090 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2091 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2092 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2093 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2094 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2098 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2099 List<OrchestrationFlow> result = new ArrayList<>();
2100 for (String flowName : flowNames) {
2101 OrchestrationFlow orchFlow = new OrchestrationFlow();
2102 orchFlow.setFlowName(flowName);
2103 result.add(orchFlow);
2108 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2109 for (int i = 0; i < ebbs.size(); i++) {
2110 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);