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.client.orchestration.AAIEntityNotFoundException;
87 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
88 import org.onap.so.db.catalog.beans.CollectionResource;
89 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
90 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
91 import org.onap.so.db.catalog.beans.ConfigurationResource;
92 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
93 import org.onap.so.db.catalog.beans.CvnfcCustomization;
94 import org.onap.so.db.catalog.beans.HeatEnvironment;
95 import org.onap.so.db.catalog.beans.HeatTemplate;
96 import org.onap.so.db.catalog.beans.InstanceGroup;
97 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
98 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
99 import org.onap.so.db.catalog.beans.Service;
100 import org.onap.so.db.catalog.beans.VfModuleCustomization;
101 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
102 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
103 import org.onap.so.serviceinstancebeans.ModelInfo;
104 import org.onap.so.serviceinstancebeans.RequestDetails;
105 import org.onap.so.serviceinstancebeans.RequestParameters;
106 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
107 import org.onap.so.serviceinstancebeans.SubscriberInfo;
108 import org.springframework.core.env.Environment;
110 public class WorkflowActionTest extends BaseTaskTest {
114 protected Environment environment;
116 protected WorkflowAction workflowAction;
117 private DelegateExecution execution;
121 protected WorkflowAction SPY_workflowAction;
124 public ExpectedException thrown = ExpectedException.none();
126 private String RESOURCE_PATH = "src/test/resources/__files/";
129 public void before() throws Exception {
130 execution = new DelegateExecutionFake();
131 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
132 servInstance.setServiceInstanceId("TEST");
133 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
134 workflowAction.setBbInputSetupUtils(bbSetupUtils);
135 workflowAction.setBbInputSetup(bbInputSetup);
142 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
143 String gAction = "createInstance";
144 String resource = "Network";
145 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
146 execution.setVariable("requestAction", gAction);
148 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
149 execution.setVariable("bpmnRequest", bpmnRequest);
150 execution.setVariable("aLaCarte", true);
151 execution.setVariable("apiVersion", "7");
152 execution.setVariable("requestUri", "v6/networks/123");
154 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
155 List<OrchestrationFlow> orchFlows =
156 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
157 northBoundRequest.setOrchestrationFlowList(orchFlows);
159 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
160 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
161 workflowAction.selectExecutionList(execution);
162 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
163 assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
167 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
168 String gAction = "deleteInstance";
169 String resource = "Network";
170 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
171 execution.setVariable("requestAction", gAction);
173 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
174 execution.setVariable("bpmnRequest", bpmnRequest);
175 execution.setVariable("aLaCarte", true);
176 execution.setVariable("apiVersion", "7");
177 execution.setVariable("requestUri", "v6/networks/123");
179 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
180 List<OrchestrationFlow> orchFlows =
181 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
182 northBoundRequest.setOrchestrationFlowList(orchFlows);
184 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
185 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
186 workflowAction.selectExecutionList(execution);
187 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
188 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
192 public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
193 String gAction = "createInstance";
194 String resource = "Service";
195 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
196 execution.setVariable("requestAction", gAction);
198 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
199 execution.setVariable("bpmnRequest", bpmnRequest);
200 execution.setVariable("aLaCarte", true);
201 execution.setVariable("apiVersion", "7");
202 execution.setVariable("requestUri", "v6/serviceInstances/123");
205 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
206 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
207 northBoundRequest.setOrchestrationFlowList(orchFlows);
209 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
210 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
211 workflowAction.selectExecutionList(execution);
212 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
213 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
217 * SERVICE MACRO TESTS
220 public void selectExecutionListServiceMacroAssignTest() throws Exception {
221 String gAction = "assignInstance";
222 String resource = "Service";
223 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
224 execution.setVariable("requestAction", gAction);
226 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
227 execution.setVariable("bpmnRequest", bpmnRequest);
228 execution.setVariable("aLaCarte", false);
229 execution.setVariable("apiVersion", "7");
230 execution.setVariable("requestUri", "v6/serviceInstances/123");
233 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
234 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
235 "AssignVolumeGroupBB", "AssignVfModuleBB");
236 northBoundRequest.setOrchestrationFlowList(orchFlows);
238 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
239 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
240 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
241 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
242 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
243 HeatTemplate volumeHeatTemplate = new HeatTemplate();
244 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
245 vfModuleCustomization.setVfModule(vfModule);
247 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
248 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
249 HeatEnvironment heatEnvironment = new HeatEnvironment();
250 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
251 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
252 HeatTemplate moduleHeatTemplate = new HeatTemplate();
253 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
254 vfModuleCustomization2.setVfModule(vfModule2);
256 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
257 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
259 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
260 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
261 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
262 .thenReturn(vfModuleCustomization);
263 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
264 .thenReturn(vfModuleCustomization2);
265 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
266 .thenReturn(vfModuleCustomization3);
267 workflowAction.selectExecutionList(execution);
268 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
269 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
270 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
274 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
275 String gAction = "assignInstance";
276 String resource = "Service";
277 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
278 execution.setVariable("requestAction", gAction);
279 String bpmnRequest = new String(
280 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
281 execution.setVariable("bpmnRequest", bpmnRequest);
282 execution.setVariable("aLaCarte", false);
283 execution.setVariable("apiVersion", "7");
284 execution.setVariable("requestUri", "v6/serviceInstances/123");
287 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
288 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
289 "AssignVolumeGroupBB", "AssignVfModuleBB");
290 northBoundRequest.setOrchestrationFlowList(orchFlows);
292 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
293 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
294 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
295 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
296 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
297 HeatTemplate volumeHeatTemplate = new HeatTemplate();
298 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
299 vfModuleCustomization.setVfModule(vfModule);
301 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
302 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
303 HeatEnvironment heatEnvironment = new HeatEnvironment();
304 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
305 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
306 HeatTemplate moduleHeatTemplate = new HeatTemplate();
307 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
308 vfModuleCustomization2.setVfModule(vfModule2);
310 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
311 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
313 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
314 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
315 false, "att-aic")).thenReturn(northBoundRequest);
316 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
317 .thenReturn(vfModuleCustomization);
318 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
319 .thenReturn(vfModuleCustomization2);
320 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
321 .thenReturn(vfModuleCustomization3);
322 workflowAction.selectExecutionList(execution);
323 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
324 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
325 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
329 public void selectExecutionListServiceMacroActivateTest() throws Exception {
330 String gAction = "activateInstance";
331 String resource = "Service";
332 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
333 execution.setVariable("requestAction", gAction);
334 String bpmnRequest = new String(Files
335 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
336 execution.setVariable("bpmnRequest", bpmnRequest);
337 execution.setVariable("aLaCarte", false);
338 execution.setVariable("apiVersion", "7");
339 execution.setVariable("requestUri", "v6/serviceInstances/si0");
342 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
343 List<OrchestrationFlow> orchFlows =
344 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
345 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
346 northBoundRequest.setOrchestrationFlowList(orchFlows);
348 ServiceInstance serviceInstanceAAI = new ServiceInstance();
349 serviceInstanceAAI.setServiceInstanceId("si0");
350 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
351 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
352 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
353 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
354 vnf.setVnfId("vnf0");
357 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
358 vnf.getVfModules().add(vfModule);
359 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
360 vnf.getVfModules().add(vfModule2);
362 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
363 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
364 volumeGroup.setVolumeGroupId("volumeGroup0");
365 vnf.getVolumeGroups().add(volumeGroup);
367 serviceInstanceMSO.getVnfs().add(vnf);
369 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
370 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
371 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
372 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
373 workflowAction.selectExecutionList(execution);
374 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
375 assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
376 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
377 "ActivateServiceInstanceBB");
378 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
379 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
380 assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
381 assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
382 assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
383 assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
384 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
385 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
390 public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
391 String gAction = "deactivateInstance";
392 String resource = "Service";
393 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
394 execution.setVariable("requestAction", gAction);
395 String bpmnRequest = new String(Files
396 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
397 execution.setVariable("bpmnRequest", bpmnRequest);
398 execution.setVariable("aLaCarte", false);
399 execution.setVariable("apiVersion", "7");
400 execution.setVariable("requestUri", "v6/serviceInstances/123");
403 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
404 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
405 northBoundRequest.setOrchestrationFlowList(orchFlows);
407 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
408 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
409 workflowAction.selectExecutionList(execution);
410 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
411 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
415 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
416 String gAction = "createInstance";
417 String resource = "Service";
418 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
419 execution.setVariable("requestAction", gAction);
420 String bpmnRequest = new String(Files
421 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
422 execution.setVariable("bpmnRequest", bpmnRequest);
423 execution.setVariable("aLaCarte", false);
424 execution.setVariable("apiVersion", "7");
425 execution.setVariable("requestUri", "v6/serviceInstances/123");
428 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
429 northBoundRequest.setIsToplevelflow(true);
430 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
431 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
432 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
433 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
434 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
435 northBoundRequest.setOrchestrationFlowList(orchFlows);
437 Service service = new Service();
438 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
439 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
440 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
441 workflowAction.selectExecutionList(execution);
442 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
443 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
447 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
448 String gAction = "createInstance";
449 String resource = "Service";
450 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
451 execution.setVariable("requestAction", gAction);
452 String bpmnRequest = new String(Files
453 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
454 execution.setVariable("bpmnRequest", bpmnRequest);
455 execution.setVariable("aLaCarte", false);
456 execution.setVariable("apiVersion", "7");
457 execution.setVariable("requestUri", "v6/serviceInstances/123");
460 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
461 northBoundRequest.setIsToplevelflow(true);
462 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
463 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
464 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
465 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
466 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
467 northBoundRequest.setOrchestrationFlowList(orchFlows);
469 Service service = new Service();
470 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
471 networkCustomization.setModelCustomizationUUID("1234");
472 service.getNetworkCustomizations().add(networkCustomization);
473 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
474 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
475 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
476 workflowAction.selectExecutionList(execution);
477 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
478 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
479 "ActivateNetworkBB", "ActivateServiceInstanceBB");
483 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
484 String gAction = "createInstance";
485 String resource = "Service";
486 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
487 execution.setVariable("requestAction", gAction);
488 String bpmnRequest = new String(Files
489 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
490 execution.setVariable("bpmnRequest", bpmnRequest);
491 execution.setVariable("aLaCarte", false);
492 execution.setVariable("apiVersion", "7");
493 execution.setVariable("requestUri", "v6/serviceInstances/123");
496 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
497 northBoundRequest.setIsToplevelflow(true);
498 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
499 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
500 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
501 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
502 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
503 northBoundRequest.setOrchestrationFlowList(orchFlows);
505 Service service = new Service();
506 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
507 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
508 networkCust.setModelCustomizationUUID("123");
509 networkCustomizations.add(networkCust);
510 service.setNetworkCustomizations(networkCustomizations);
511 NetworkCollectionResourceCustomization collectionResourceCustomization =
512 new NetworkCollectionResourceCustomization();
513 collectionResourceCustomization.setModelCustomizationUUID("123");
515 CollectionResource collectionResource = new CollectionResource();
516 collectionResource.setToscaNodeType("NetworkCollection");
517 InstanceGroup instanceGroup = new InstanceGroup();
518 instanceGroup.setToscaNodeType("NetworkCollectionResource");
519 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
520 CollectionNetworkResourceCustomization collectionNetworkResourceCust =
521 new CollectionNetworkResourceCustomization();
522 collectionNetworkResourceCust.setModelCustomizationUUID("123");
523 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
524 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
525 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
526 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
527 new CollectionResourceInstanceGroupCustomization();
528 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
529 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
530 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
531 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
532 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
533 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
534 collectionResource.setInstanceGroup(instanceGroup);
535 collectionResourceCustomization.setCollectionResource(collectionResource);;
536 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
537 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
538 doReturn(collectionResourceCustomization).when(catalogDbClient)
539 .getNetworkCollectionResourceCustomizationByID("123");
540 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
541 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
542 workflowAction.selectExecutionList(execution);
543 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
544 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
545 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
546 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
547 "ActivateServiceInstanceBB");
548 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
549 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
550 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
551 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
552 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
554 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
557 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
558 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
559 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
560 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
561 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
563 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
566 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
567 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
568 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
569 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
570 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
572 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
578 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
579 String gAction = "createInstance";
580 String resource = "Service";
581 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
582 execution.setVariable("requestAction", gAction);
584 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
585 execution.setVariable("bpmnRequest", bpmnRequest);
586 execution.setVariable("aLaCarte", false);
587 execution.setVariable("apiVersion", "7");
588 execution.setVariable("requestUri", "v6/serviceInstances/123");
591 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
592 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
593 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
594 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
595 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
596 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
597 northBoundRequest.setOrchestrationFlowList(orchFlows);
599 Service service = new Service();
600 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
602 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
603 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
604 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
605 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
606 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
607 HeatTemplate volumeHeatTemplate = new HeatTemplate();
608 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
609 vfModuleCustomization.setVfModule(vfModule);
611 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
612 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
613 HeatEnvironment heatEnvironment = new HeatEnvironment();
614 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
615 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
616 HeatTemplate moduleHeatTemplate = new HeatTemplate();
617 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
618 vfModuleCustomization2.setVfModule(vfModule2);
620 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
621 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
623 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
624 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
625 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
626 .thenReturn(vfModuleCustomization);
627 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
628 .thenReturn(vfModuleCustomization2);
629 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
630 .thenReturn(vfModuleCustomization3);
631 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
632 workflowAction.selectExecutionList(execution);
633 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
634 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
635 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
636 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
637 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
638 "ActivateServiceInstanceBB");
639 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
640 int randomUUIDLength = UUID.randomUUID().toString().length();
641 assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
642 assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
643 assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
644 assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
645 assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
646 assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
647 assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
648 assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
649 assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
650 assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
651 assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
652 assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
653 assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
654 assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
655 assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
656 assertEquals(true, execution.getVariable("homing"));
660 public void selectExecutionListServiceMacroDeleteTest() throws Exception {
661 String gAction = "deleteInstance";
662 String resource = "Service";
663 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
664 execution.setVariable("requestAction", gAction);
665 String bpmnRequest = new String(Files
666 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
667 execution.setVariable("bpmnRequest", bpmnRequest);
668 execution.setVariable("aLaCarte", false);
669 execution.setVariable("apiVersion", "7");
670 execution.setVariable("requestUri", "v6/serviceInstances/123");
673 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
674 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
675 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
676 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
677 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
678 northBoundRequest.setOrchestrationFlowList(orchFlows);
680 ServiceInstance serviceInstanceAAI = new ServiceInstance();
681 serviceInstanceAAI.setServiceInstanceId("aaisi123");
682 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
683 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
684 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
685 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
686 vnf.setVnfId("vnfId123");
688 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
689 vnf.getVfModules().add(vfModule);
690 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
691 vnf.getVfModules().add(vfModule2);
693 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
694 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
695 volumeGroup.setVolumeGroupId("vg123");
696 vnf.getVolumeGroups().add(volumeGroup);
698 serviceInstanceMSO.getVnfs().add(vnf);
700 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
701 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
702 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
703 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
704 workflowAction.selectExecutionList(execution);
705 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
706 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
707 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
708 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
709 "UnassignVnfBB", "UnassignServiceInstanceBB");
713 public void selectExecutionListServiceMacroUnassignTest() throws Exception {
714 String gAction = "unassignInstance";
715 String resource = "Service";
716 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
717 execution.setVariable("requestAction", gAction);
718 String bpmnRequest = new String(Files
719 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
720 execution.setVariable("bpmnRequest", bpmnRequest);
721 execution.setVariable("aLaCarte", false);
722 execution.setVariable("apiVersion", "7");
723 execution.setVariable("requestUri", "v6/serviceInstances/123");
726 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
727 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
728 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
729 northBoundRequest.setOrchestrationFlowList(orchFlows);
731 ServiceInstance serviceInstanceAAI = new ServiceInstance();
732 serviceInstanceAAI.setServiceInstanceId("aaisi123");
733 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
734 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
735 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
736 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
737 vnf.setVnfId("vnfId123");
739 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
740 vnf.getVfModules().add(vfModule);
741 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
742 vnf.getVfModules().add(vfModule2);
744 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
745 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
746 volumeGroup.setVolumeGroupId("vg123");
747 vnf.getVolumeGroups().add(volumeGroup);
749 serviceInstanceMSO.getVnfs().add(vnf);
751 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
752 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
753 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
754 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
755 workflowAction.selectExecutionList(execution);
756 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
757 assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
758 "UnassignVnfBB", "UnassignServiceInstanceBB");
762 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
763 String gAction = "deleteInstance";
764 String resource = "Service";
765 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
766 execution.setVariable("requestAction", gAction);
767 String bpmnRequest = new String(Files
768 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
769 execution.setVariable("bpmnRequest", bpmnRequest);
770 execution.setVariable("aLaCarte", false);
771 execution.setVariable("apiVersion", "7");
772 execution.setVariable("requestUri", "v6/serviceInstances/123");
775 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
776 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
777 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
778 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
779 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
780 northBoundRequest.setOrchestrationFlowList(orchFlows);
782 ServiceInstance serviceInstanceAAI = new ServiceInstance();
783 serviceInstanceAAI.setServiceInstanceId("aaisi123");
784 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
785 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
787 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
788 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
789 network.setNetworkId("123");
790 serviceInstanceMSO.getNetworks().add(network);
791 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
792 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
793 network2.setNetworkId("321");
794 serviceInstanceMSO.getNetworks().add(network2);
796 Collection collection = new Collection();
797 serviceInstanceMSO.setCollection(collection);
799 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
800 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
801 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
802 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
803 workflowAction.selectExecutionList(execution);
804 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
805 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
806 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
807 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
811 public void selectExecutionListVnfMacroRecreateTest() throws Exception {
812 String gAction = "recreateInstance";
813 String resource = "Vnf";
814 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
815 execution.setVariable("requestAction", gAction);
817 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
818 execution.setVariable("bpmnRequest", bpmnRequest);
819 execution.setVariable("aLaCarte", false);
820 execution.setVariable("apiVersion", "7");
821 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
822 execution.setVariable("serviceInstanceId", "123");
823 execution.setVariable("vnfId", "1234");
825 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
826 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
827 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
828 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
829 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
830 "AAIUnsetVnfInMaintBB");
831 northBoundRequest.setOrchestrationFlowList(orchFlows);
833 ServiceInstance serviceInstanceAAI = new ServiceInstance();
834 serviceInstanceAAI.setServiceInstanceId("123");
835 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
836 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
837 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
838 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
839 vnf.setVnfId("1234");
841 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
842 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
843 vfModule.setVfModuleId("vfModule1");
844 vnf.getVfModules().add(vfModule);
845 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
846 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
847 vfModule2.setVfModuleId("vfModule2");
848 vnf.getVfModules().add(vfModule2);
850 serviceInstanceMSO.getVnfs().add(vnf);
852 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
853 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
854 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
855 false, "cloud-owner")).thenReturn(northBoundRequest);
856 workflowAction.selectExecutionList(execution);
857 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
858 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
859 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
860 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
861 "AAIUnsetVnfInMaintBB");
865 public void selectExecutionListVnfMacroReplaceTest() throws Exception {
866 String gAction = "replaceInstance";
867 String resource = "Vnf";
868 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
869 execution.setVariable("requestAction", gAction);
871 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
872 execution.setVariable("bpmnRequest", bpmnRequest);
873 execution.setVariable("aLaCarte", false);
874 execution.setVariable("apiVersion", "7");
875 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
876 execution.setVariable("serviceInstanceId", "123");
877 execution.setVariable("vnfId", "1234");
879 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
880 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
881 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
882 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
883 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
884 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
885 "AAIUnsetVnfInMaintBB");
886 northBoundRequest.setOrchestrationFlowList(orchFlows);
888 ServiceInstance serviceInstanceAAI = new ServiceInstance();
889 serviceInstanceAAI.setServiceInstanceId("123");
890 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
891 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
892 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
893 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
894 vnf.setVnfId("1234");
895 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
896 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
897 vfModule.setVfModuleId("vfModule1");
898 vnf.getVfModules().add(vfModule);
899 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
900 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
901 vfModule2.setVfModuleId("vfModule2");
902 vnf.getVfModules().add(vfModule2);
903 serviceInstanceMSO.getVnfs().add(vnf);
904 VfModule vfModuleAAI = new VfModule();
905 vfModuleAAI.setVfModuleId("vfModule2");
906 RelationshipList relationshipList = new RelationshipList();
907 Relationship relationship = new Relationship();
908 relationshipList.getRelationship().add(relationship);
909 vfModuleAAI.setRelationshipList(relationshipList);
910 Relationships relationships = new Relationships("abc");
911 Configuration config = new Configuration();
912 config.setConfigurationId("configId");
913 Optional<Configuration> configOp = Optional.of(config);
914 Optional<Relationships> relationshipsOp = Optional.of(relationships);
916 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
917 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
918 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
919 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
920 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
921 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
922 false, "cloud-owner")).thenReturn(northBoundRequest);
923 workflowAction.selectExecutionList(execution);
924 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
925 assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
926 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
927 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
928 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
929 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
930 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
931 for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
932 assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
938 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
939 String gAction = "createInstance";
940 String resource = "NetworkCollection";
941 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
942 execution.setVariable("requestAction", gAction);
943 String bpmnRequest = new String(
944 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
945 execution.setVariable("bpmnRequest", bpmnRequest);
946 execution.setVariable("aLaCarte", false);
947 execution.setVariable("apiVersion", "7");
948 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
951 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
952 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
953 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
954 northBoundRequest.setOrchestrationFlowList(orchFlows);
956 Service service = new Service();
957 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
958 CollectionResource collectionResource = new CollectionResource();
959 collectionResource.setToscaNodeType("Data NetworkCollection Data");
960 collectionResourceCustomization.setCollectionResource(collectionResource);
961 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
963 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
964 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
965 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
966 workflowAction.selectExecutionList(execution);
967 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
968 assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
969 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
970 "ActivateNetworkCollectionBB");
975 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
976 String gAction = "deleteInstance";
977 String resource = "NetworkCollection";
978 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
979 execution.setVariable("requestAction", gAction);
980 String bpmnRequest = new String(
981 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
982 execution.setVariable("bpmnRequest", bpmnRequest);
983 execution.setVariable("aLaCarte", false);
984 execution.setVariable("apiVersion", "7");
985 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
987 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
988 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
989 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
990 northBoundRequest.setOrchestrationFlowList(orchFlows);
992 Service service = new Service();
993 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
994 CollectionResource collectionResource = new CollectionResource();
995 collectionResource.setToscaNodeType("Data NetworkCollection Data");
996 collectionResourceCustomization.setCollectionResource(collectionResource);
997 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
999 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1000 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1001 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1002 workflowAction.selectExecutionList(execution);
1003 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1004 assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1005 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
1006 "DeleteNetworkCollectionBB");
1010 public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
1011 String gAction = "createInstance";
1012 String resource = "VfModule";
1013 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1014 execution.setVariable("requestAction", gAction);
1015 String bpmnRequest =
1016 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1017 execution.setVariable("bpmnRequest", bpmnRequest);
1018 execution.setVariable("aLaCarte", true);
1019 execution.setVariable("apiVersion", "7");
1020 execution.setVariable("requestUri",
1021 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1024 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1025 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1026 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1027 northBoundRequest.setOrchestrationFlowList(orchFlows);
1029 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1030 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1031 workflowAction.selectExecutionList(execution);
1032 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1033 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
1037 public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
1038 String gAction = "createInstance";
1039 String resource = "VfModule";
1040 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1041 execution.setVariable("requestAction", gAction);
1042 String bpmnRequest =
1043 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1044 execution.setVariable("bpmnRequest", bpmnRequest);
1045 execution.setVariable("aLaCarte", true);
1046 execution.setVariable("apiVersion", "7");
1047 execution.setVariable("requestUri",
1048 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1050 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1051 List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1052 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1053 northBoundRequest.setOrchestrationFlowList(orchFlows);
1055 List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
1056 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
1057 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1058 new CvnfcConfigurationCustomization();
1059 ConfigurationResource configurationResource = new ConfigurationResource();
1060 configurationResource.setToscaNodeType("FabricConfiguration");
1061 vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1062 vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
1063 vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
1064 List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
1065 custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
1066 cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
1067 cvnfcCustomization.setDescription("description");
1068 cvnfcCustomizations.add(cvnfcCustomization);
1070 CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
1071 CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
1072 new CvnfcConfigurationCustomization();
1073 ConfigurationResource configurationResource2 = new ConfigurationResource();
1074 configurationResource2.setToscaNodeType("FabricConfiguration");
1075 vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
1076 vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
1077 vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
1078 List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
1079 custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
1080 cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
1081 cvnfcCustomization2.setDescription("description2");
1082 cvnfcCustomizations.add(cvnfcCustomization2);
1084 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1085 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1086 // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
1087 // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
1088 workflowAction.selectExecutionList(execution);
1089 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1090 assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1091 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
1092 "ActivateFabricConfigurationBB");
1096 public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
1097 String gAction = "deleteInstance";
1098 String resource = "VfModule";
1099 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1100 execution.setVariable("requestAction", gAction);
1101 String bpmnRequest =
1102 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1103 execution.setVariable("bpmnRequest", bpmnRequest);
1104 execution.setVariable("aLaCarte", true);
1105 execution.setVariable("apiVersion", "7");
1106 execution.setVariable("requestUri",
1107 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1109 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1110 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1111 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1112 northBoundRequest.setOrchestrationFlowList(orchFlows);
1114 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1115 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1117 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1118 vnf.setVnfId("vnf0");
1119 vnf.setModelCustomizationId("modelCustomizationId");
1120 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1122 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1123 vfModule.setModelCustomizationId("modelCustomizationId");
1124 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1126 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1127 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1128 vnfc.setModelInvariantId("modelInvariantId");
1129 vnfc.setVnfcName("testVnfcName");
1131 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1134 List<org.onap.aai.domain.yang.Configuration> configurations =
1135 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1136 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1137 configuration.setConfigurationId("configurationId");
1138 configuration.setModelCustomizationId("modelCustimizationId");
1139 configuration.setConfigurationName("testConfigurationName");
1140 configurations.add(configuration);
1141 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1144 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1146 SPY_workflowAction.selectExecutionList(execution);
1147 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1148 assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1149 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1153 public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
1154 String gAction = "deleteInstance";
1155 ObjectMapper mapper = new ObjectMapper();
1156 WorkflowType resourceType = WorkflowType.VFMODULE;
1157 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1158 execution.setVariable("requestAction", gAction);
1159 String bpmnRequest =
1160 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1161 execution.setVariable("bpmnRequest", bpmnRequest);
1162 execution.setVariable("vnfId", "1234");
1163 execution.setVariable("vfModuleId", "vfModuleId1234");
1164 execution.setVariable("requestUri",
1165 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1166 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1167 RequestDetails requestDetails = sIRequest.getRequestDetails();
1168 String requestAction = "deleteInstance";
1169 String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
1170 boolean aLaCarte = true;
1171 String apiVersion = "7";
1172 String vnfType = "vnfType";
1173 String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
1174 String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
1175 Resource resourceKey = new Resource(resourceType, key, aLaCarte);
1176 WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
1178 thrown.expect(AAIEntityNotFoundException.class);
1179 thrown.expectMessage(containsString(
1180 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
1182 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1183 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1185 ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
1186 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
1187 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
1188 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
1190 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1191 vnf.setVnfId("vnf0");
1192 vnf.setModelCustomizationId("modelCustomizationId");
1193 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1195 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1196 vfModule.setModelCustomizationId("modelCustomizationId");
1197 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
1199 SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1203 public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
1204 String gAction = "deleteInstance";
1205 String resource = "VfModule";
1206 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1207 execution.setVariable("requestAction", gAction);
1208 String bpmnRequest =
1209 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
1210 execution.setVariable("bpmnRequest", bpmnRequest);
1211 execution.setVariable("aLaCarte", true);
1212 execution.setVariable("apiVersion", "7");
1213 execution.setVariable("requestUri",
1214 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
1216 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1217 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1218 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1219 northBoundRequest.setOrchestrationFlowList(orchFlows);
1221 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1222 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1224 org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
1225 vnf.setVnfId("vnf0");
1226 vnf.setModelCustomizationId("modelCustomizationId");
1227 when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
1229 org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
1230 vfModule.setModelCustomizationId("modelCustomizationId");
1231 when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
1233 List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
1234 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1235 vnfc.setModelInvariantId("modelInvariantId");
1236 vnfc.setVnfcName("testVnfcName");
1238 doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1241 List<org.onap.aai.domain.yang.Configuration> configurations =
1242 new ArrayList<org.onap.aai.domain.yang.Configuration>();
1243 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1244 doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
1247 doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1249 SPY_workflowAction.selectExecutionList(execution);
1250 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1251 assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1255 public void selectExecutionListMacroResumeTest() throws Exception {
1256 String gAction = "createInstance";
1257 String resource = "Service";
1258 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1259 execution.setVariable("requestAction", gAction);
1260 String bpmnRequest =
1261 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
1262 execution.setVariable("bpmnRequest", bpmnRequest);
1263 execution.setVariable("aLaCarte", false);
1264 execution.setVariable("apiVersion", "7");
1265 execution.setVariable("requestUri", "v6/serviceInstances/123");
1267 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1268 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1269 northBoundRequest.setOrchestrationFlowList(orchFlows);
1271 Service service = new Service();
1272 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1274 ServiceInstance si = new ServiceInstance();
1276 when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1277 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1279 String flowsToExecuteString =
1280 "[{\"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\"}}]";
1281 ObjectMapper om = new ObjectMapper();
1282 List<ExecuteBuildingBlock> flowsToExecute = null;
1284 ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1285 flowsToExecute = Arrays.asList(asArray);
1286 } catch (Exception e) {
1287 e.printStackTrace();
1290 when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1292 workflowAction.selectExecutionList(execution);
1293 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1294 assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1298 public void getRelatedResourcesInVfModuleTest() throws Exception {
1299 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
1300 vnfc.setModelInvariantId("modelInvariantId");
1301 vnfc.setVnfcName("testVnfcName");
1303 String vfncPayload =
1304 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1305 AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1307 String configurationPayload =
1308 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
1309 AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
1310 List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
1311 configurationResultWrappers.add(configurationWrapper);
1313 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1314 when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1316 doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1318 List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
1319 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
1320 assertEquals(1, configurationsList.size());
1321 assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
1325 * WorkflowActionBB Tests
1329 public void pluralTest() {
1330 List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
1331 "networks, Network", "invalidNames, invalidNames");
1332 items.forEach(item -> {
1333 String[] split = item.split(",");
1334 String type = split[0].trim();
1335 String expected = split[1].trim();
1336 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1341 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
1342 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1343 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1344 BuildingBlock bb = new BuildingBlock();
1345 bb.setBpmnFlowName("AssignNetworkBB");
1347 ebb.setBuildingBlock(bb);
1348 executeFlows.add(ebb);
1349 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1350 BuildingBlock bb2 = new BuildingBlock();
1351 bb2.setBpmnFlowName("AssignNetworkBB");
1353 ebb2.setBuildingBlock(bb2);
1354 executeFlows.add(ebb2);
1355 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1356 BuildingBlock bb3 = new BuildingBlock();
1357 bb3.setBpmnFlowName("CreateNetworkBB");
1359 ebb3.setBuildingBlock(bb3);
1360 executeFlows.add(ebb3);
1361 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1362 BuildingBlock bb4 = new BuildingBlock();
1363 bb4.setBpmnFlowName("CreateNetworkBB");
1365 ebb4.setBuildingBlock(bb4);
1366 executeFlows.add(ebb4);
1367 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1368 BuildingBlock bb5 = new BuildingBlock();
1369 bb5.setBpmnFlowName("ActivateNetworkBB");
1371 ebb5.setBuildingBlock(bb5);
1372 executeFlows.add(ebb5);
1373 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1374 BuildingBlock bb6 = new BuildingBlock();
1375 bb6.setBpmnFlowName("ActivateNetworkBB");
1377 ebb6.setBuildingBlock(bb6);
1378 executeFlows.add(ebb6);
1380 List<ExecuteBuildingBlock> sorted =
1381 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1382 assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1383 "CreateNetworkBB", "ActivateNetworkBB");
1387 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
1388 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1389 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1390 BuildingBlock bb = new BuildingBlock();
1391 bb.setBpmnFlowName("DeactivateNetworkBB");
1393 ebb.setBuildingBlock(bb);
1394 executeFlows.add(ebb);
1395 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1396 BuildingBlock bb2 = new BuildingBlock();
1397 bb2.setBpmnFlowName("DeactivateNetworkBB");
1399 ebb2.setBuildingBlock(bb2);
1400 executeFlows.add(ebb2);
1401 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1402 BuildingBlock bb3 = new BuildingBlock();
1403 bb3.setBpmnFlowName("DeleteNetworkBB");
1405 ebb3.setBuildingBlock(bb3);
1406 executeFlows.add(ebb3);
1407 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1408 BuildingBlock bb4 = new BuildingBlock();
1409 bb4.setBpmnFlowName("DeleteNetworkBB");
1411 ebb4.setBuildingBlock(bb4);
1412 executeFlows.add(ebb4);
1413 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1414 BuildingBlock bb5 = new BuildingBlock();
1415 bb5.setBpmnFlowName("UnassignNetworkBB");
1417 ebb5.setBuildingBlock(bb5);
1418 executeFlows.add(ebb5);
1419 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1420 BuildingBlock bb6 = new BuildingBlock();
1421 bb6.setBpmnFlowName("UnassignNetworkBB");
1423 ebb6.setBuildingBlock(bb6);
1424 executeFlows.add(ebb6);
1426 List<ExecuteBuildingBlock> sorted =
1427 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1428 assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1429 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1433 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1434 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1435 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
1436 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
1437 northBoundRequest.setOrchestrationFlowList(orchFlows);
1438 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1439 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
1441 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
1442 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1443 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1444 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
1445 WorkflowType.VNF, false, "my-custom-cloud-owner");
1446 assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
1447 assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
1448 assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
1449 assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
1450 assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
1451 assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
1452 assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
1453 assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
1454 assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
1455 assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
1459 public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
1460 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1461 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1462 northBoundRequest.setOrchestrationFlowList(orchFlows);
1463 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
1464 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
1466 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1467 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1468 assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1472 public void extractResourceIdAndTypeFromUriTest() {
1473 String uri = "/v6/serviceInstances/123";
1474 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1475 String uri3 = "/v6/serviceInstances";
1476 String uri4 = "/v6/serviceInstances/assign";
1477 String uri5 = "'/v6/serviceInstances/123/vnfs";
1478 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1479 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1480 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
1481 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1482 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1483 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1484 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1485 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1486 assertEquals(expected1.getResourceId(), result.getResourceId());
1487 assertEquals(expected1.getResourceType(), result.getResourceType());
1488 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1489 assertEquals(expected2.getResourceId(), result.getResourceId());
1490 assertEquals(expected2.getResourceType(), result.getResourceType());
1491 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1492 assertEquals("Service", result.getResourceType().toString());
1493 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1494 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1495 assertEquals("Service", result.getResourceType().toString());
1496 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1497 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1498 assertEquals("Vnf", result.getResourceType().toString());
1499 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1500 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1501 assertEquals(expected3.getResourceId(), result.getResourceId());
1502 assertEquals(expected3.getResourceType(), result.getResourceType());
1503 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1504 assertEquals(expected4.getResourceId(), result.getResourceId());
1505 assertEquals(expected4.getResourceType(), result.getResourceType());
1506 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1507 assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
1508 assertEquals("VfModule", result.getResourceType().toString());
1513 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1514 this.expectedException.expect(IllegalArgumentException.class);
1515 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1516 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1520 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1521 this.expectedException.expect(IllegalArgumentException.class);
1522 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1523 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1527 public void extractResourceIdAndTypeFromUriResumeTest() {
1528 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1529 "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");
1530 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1534 public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
1535 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1536 "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");
1537 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1541 public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
1542 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1543 "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");
1544 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1548 public void extractResourceIdAndTypeFromUriResumeIdOnly() {
1549 Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
1550 "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");
1551 assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
1555 public void isUriResumeTest() {
1556 assertTrue(workflowAction.isUriResume(
1557 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
1558 assertTrue(workflowAction.isUriResume(
1559 " 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"));
1561 assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
1565 public void isRequestMacroServiceResumeTest() {
1566 ServiceInstance si = new ServiceInstance();
1567 when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
1568 assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
1569 assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
1573 public void populateResourceIdsFromApiHandlerTest() {
1574 execution.setVariable("serviceInstanceId", "123");
1575 execution.setVariable("vnfId", "888");
1576 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1577 assertEquals("123", x.getServiceInstanceId());
1578 assertEquals("888", x.getVnfId());
1579 assertNull(x.getVolumeGroupId());
1582 private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
1583 String modelCustomizationId) {
1584 RequestDetails reqDetails = new RequestDetails();
1585 SubscriberInfo subInfo = new SubscriberInfo();
1586 subInfo.setGlobalSubscriberId(globalSubscriberId);
1587 reqDetails.setSubscriberInfo(subInfo);
1588 RequestParameters reqParams = new RequestParameters();
1589 reqParams.setSubscriptionServiceType(subscriptionServiceType);
1590 reqDetails.setRequestParameters(reqParams);
1591 ModelInfo modelInfo = new ModelInfo();
1592 modelInfo.setModelCustomizationId(modelCustomizationId);
1593 reqDetails.setModelInfo(modelInfo);
1598 public void validateResourceIdInAAIVnfTest() throws Exception {
1599 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1600 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1601 workflowResourceIds.setServiceInstanceId("siId123");
1603 GenericVnf vnf = new GenericVnf();
1604 vnf.setVnfId("id123");
1605 vnf.setVnfName("vnfName123");
1606 vnf.setModelCustomizationId("1234567");
1607 Optional<GenericVnf> opVnf = Optional.of(vnf);
1608 GenericVnf vnf2 = new GenericVnf();
1609 vnf2.setVnfId("id123");
1610 vnf2.setVnfName("vnfName222");
1611 vnf2.setModelCustomizationId("222");
1612 Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
1613 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
1614 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
1615 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1616 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
1617 workflowResourceIds);
1618 assertEquals("id123", id);
1619 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
1620 workflowResourceIds);
1621 assertEquals("generatedId123", id2);
1623 this.expectedException.expect(DuplicateNameException.class);
1624 this.expectedException.expectMessage(containsString(
1625 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
1626 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
1627 workflowResourceIds);
1631 public void validateResourceIdInAAIVnfNotGloballyUniqueTest() throws Exception {
1632 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1633 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1634 workflowResourceIds.setServiceInstanceId("siId123");
1637 GenericVnfs genericVnfs = new GenericVnfs();
1638 GenericVnf vnf3 = new GenericVnf();
1639 vnf3.setVnfId("id123");
1640 vnf3.setVnfName("vnfName333");
1641 genericVnfs.getGenericVnf().add(vnf3);
1642 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
1643 when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
1645 this.expectedException.expect(DuplicateNameException.class);
1646 this.expectedException.expectMessage(containsString(
1647 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
1648 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
1649 workflowResourceIds);
1653 public void validateResourceIdInAAINetworkTest() throws Exception {
1654 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1655 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1656 workflowResourceIds.setServiceInstanceId("siId123");
1659 L3Network network = new L3Network();
1660 network.setNetworkId("id123");
1661 network.setNetworkName("name123");
1662 network.setModelCustomizationId("1234567");
1663 workflowResourceIds.setServiceInstanceId("siId123");
1664 Optional<L3Network> opNetwork = Optional.of(network);
1665 L3Network network2 = new L3Network();
1666 network2.setNetworkId("id123");
1667 network2.setNetworkName("networkName222");
1668 network2.setModelCustomizationId("222");
1669 Optional<L3Network> opNetwork2 = Optional.of(network2);
1670 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
1671 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
1672 .thenReturn(opNetwork2);
1673 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
1674 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
1675 reqDetails, workflowResourceIds);
1676 assertEquals("id123", id);
1677 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
1678 reqDetails, workflowResourceIds);
1679 assertEquals("generatedId123", id2);
1681 this.expectedException.expect(DuplicateNameException.class);
1682 this.expectedException.expectMessage(containsString(
1683 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
1684 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
1685 workflowResourceIds);
1689 public void validateNetworkResourceNameExistsInAAITest() throws Exception {
1690 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1691 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1692 workflowResourceIds.setServiceInstanceId("siId123");
1695 L3Network network = new L3Network();
1696 network.setNetworkId("id123");
1697 network.setNetworkName("name123");
1698 network.setModelCustomizationId("1234567");
1699 workflowResourceIds.setServiceInstanceId("siId123");
1701 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
1702 .thenReturn(Optional.empty());
1703 when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
1705 this.expectedException.expect(DuplicateNameException.class);
1706 this.expectedException.expectMessage(containsString(
1707 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
1708 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
1709 workflowResourceIds);
1713 public void validateResourceIdInAAIVfModuleTest() throws Exception {
1714 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1715 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1716 workflowResourceIds.setServiceInstanceId("siId123");
1718 GenericVnf vnf = new GenericVnf();
1719 vnf.setVnfId("id123");
1720 vnf.setVnfName("vnfName123");
1721 vnf.setModelCustomizationId("222");
1724 VfModules vfModules = new VfModules();
1725 VfModule vfModule = new VfModule();
1726 vfModule.setVfModuleId("id123");
1727 vfModule.setVfModuleName("name123");
1728 vfModule.setModelCustomizationId("1234567");
1729 vfModules.getVfModule().add(vfModule);
1730 vnf.setVfModules(vfModules);
1731 workflowResourceIds.setVnfId("id123");
1732 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1733 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
1734 reqDetails, workflowResourceIds);
1735 assertEquals("id123", id);
1737 GenericVnf vnf1 = new GenericVnf();
1738 VfModules vfModules2 = new VfModules();
1739 VfModule vfModule2 = new VfModule();
1740 vfModule2.setVfModuleId("id123");
1741 vfModule2.setVfModuleName("vFModName222");
1742 vfModule2.setModelCustomizationId("222");
1743 vfModules2.getVfModule().add(vfModule2);
1744 vnf1.setVfModules(vfModules2);
1745 workflowResourceIds.setVnfId("id111");
1746 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
1747 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
1748 reqDetails, workflowResourceIds);
1749 assertEquals("generatedId123", id2);
1751 this.expectedException.expect(DuplicateNameException.class);
1752 this.expectedException.expectMessage(containsString(
1753 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
1754 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
1755 workflowResourceIds);
1759 public void validateResourceIdInAAIVfModuleNotGloballyUniqueTest() throws Exception {
1760 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1761 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1762 workflowResourceIds.setVnfId("id111");
1764 GenericVnf vnf1 = new GenericVnf();
1765 workflowResourceIds.setVnfId("id111");
1766 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
1768 when(bbSetupUtils.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
1769 this.expectedException.expect(DuplicateNameException.class);
1770 this.expectedException.expectMessage(
1771 containsString("vfModule with name vFModName333 already exists. The name must be unique."));
1772 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
1773 workflowResourceIds);
1777 public void validateResourceIdInAAIVolumeGroupTest() throws Exception {
1778 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1779 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1780 workflowResourceIds.setServiceInstanceId("siId123");
1782 GenericVnf vnf = new GenericVnf();
1783 vnf.setVnfId("id123");
1784 vnf.setVnfName("vnfName123");
1785 vnf.setModelCustomizationId("1234567");
1787 GenericVnf vnf2 = new GenericVnf();
1788 vnf2.setVnfId("id123");
1789 vnf2.setVnfName("vnfName123");
1790 vnf2.setModelCustomizationId("222");
1793 VolumeGroup volumeGroup = new VolumeGroup();
1794 volumeGroup.setVolumeGroupId("id123");
1795 volumeGroup.setVolumeGroupName("name123");
1796 volumeGroup.setVfModuleModelCustomizationId("1234567");
1797 workflowResourceIds.setVnfId("id123");
1798 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1800 workflowResourceIds.setVnfId("id123");
1802 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1803 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
1804 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
1805 reqDetails, workflowResourceIds);
1806 assertEquals("id123", id);
1808 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
1809 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1810 .thenReturn(opVolumeGroup);
1812 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
1813 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
1814 reqDetails, workflowResourceIds);
1815 assertEquals("generatedId123", id2);
1819 public void validatesourceIdInAAIVolumeGroupNotGloballyUniqueTest() throws Exception {
1820 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1821 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1822 workflowResourceIds.setVnfId("id123");
1823 GenericVnf vnf = new GenericVnf();
1824 vnf.setVnfId("id123");
1825 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1826 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "testVolumeGroup")).thenReturn(Optional.empty());
1828 when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
1829 this.expectedException.expect(DuplicateNameException.class);
1830 this.expectedException.expectMessage(
1831 containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
1832 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup",
1833 reqDetails, workflowResourceIds);
1837 public void validateResourceIdInAAIConfigurationTest() throws Exception {
1838 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1839 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1840 workflowResourceIds.setServiceInstanceId("siId123");
1843 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
1844 configuration.setConfigurationId("id123");
1845 configuration.setConfigurationName("name123");
1846 configuration.setModelCustomizationId("1234567");
1847 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
1849 org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
1850 configuration2.setConfigurationId("id123");
1851 configuration2.setConfigurationName("name123");
1852 configuration2.setModelCustomizationId("222");
1853 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
1855 workflowResourceIds.setVnfId("id123");
1857 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
1858 .thenReturn(opConfiguration);
1859 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
1860 reqDetails, workflowResourceIds);
1861 assertEquals("id123", id);
1863 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
1864 .thenReturn(Optional.empty());
1865 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
1866 reqDetails, workflowResourceIds);
1867 assertEquals("generatedId123", id2);
1869 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
1870 .thenReturn(opConfiguration2);
1871 this.expectedException.expect(DuplicateNameException.class);
1872 this.expectedException.expectMessage(containsString(
1873 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
1874 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
1875 workflowResourceIds);
1879 public void validateResourceIdInAAIConfigurationNotGloballyUniqueTest() throws Exception {
1880 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1881 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1882 workflowResourceIds.setServiceInstanceId("siId123");
1884 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "testConfig"))
1885 .thenReturn(Optional.empty());
1886 when(bbSetupUtils.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
1887 this.expectedException.expect(DuplicateNameException.class);
1888 this.expectedException.expectMessage(
1889 containsString("configuration with name testConfig already exists. The name must be unique."));
1890 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
1891 workflowResourceIds);
1895 public void validateResourceIdInAAISITest() throws Exception {
1896 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1897 workflowResourceIds.setServiceInstanceId("siId123");
1898 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1899 reqDetails.getModelInfo().setModelVersionId("1234567");
1901 ServiceInstance si = new ServiceInstance();
1902 si.setServiceInstanceId("siId123");
1903 si.setModelVersionId("1234567");
1904 ServiceInstances serviceInstances = new ServiceInstances();
1905 serviceInstances.getServiceInstance().add(si);
1906 Optional<ServiceInstance> siOp = Optional.of(si);
1907 ServiceInstance si2 = new ServiceInstance();
1908 si2.setServiceInstanceId("siId222");
1909 si2.setModelVersionId("22222");
1910 si2.setServiceInstanceName("siName222");
1911 Optional<ServiceInstance> siOp2 = Optional.of(si2);
1912 ServiceInstances serviceInstances2 = new ServiceInstances();
1913 serviceInstances2.getServiceInstance().add(si2);
1915 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1916 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
1917 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
1918 .thenReturn(Optional.empty());
1920 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1921 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
1922 reqDetails, workflowResourceIds);
1923 assertEquals("siId123", id);
1924 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
1925 reqDetails, workflowResourceIds);
1926 assertEquals("generatedId123", id2);
1928 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
1929 this.expectedException.expect(DuplicateNameException.class);
1930 this.expectedException.expectMessage(containsString(
1931 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
1932 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
1933 workflowResourceIds);
1937 public void validateResourceIdInAAIMultipleSITest() throws Exception {
1938 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1939 workflowResourceIds.setServiceInstanceId("siId123");
1940 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1941 reqDetails.getModelInfo().setModelVersionId("1234567");
1943 ServiceInstance si = new ServiceInstance();
1944 si.setServiceInstanceId("siId123");
1945 si.setModelVersionId("1234567");
1946 ServiceInstances serviceInstances = new ServiceInstances();
1947 serviceInstances.getServiceInstance().add(si);
1949 ServiceInstance si2 = new ServiceInstance();
1950 si2.setServiceInstanceId("siId222");
1951 si2.setModelVersionId("22222");
1952 si2.setServiceInstanceName("siName222");
1953 serviceInstances.getServiceInstance().add(si2);
1955 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1956 .thenReturn(Optional.empty());
1958 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1960 this.expectedException.expect(DuplicateNameException.class);
1961 this.expectedException.expectMessage(containsString(
1962 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
1963 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1964 workflowResourceIds);
1968 public void validateResourceIdInAAISIExistsTest() throws Exception {
1969 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1970 workflowResourceIds.setServiceInstanceId("siId123");
1971 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1972 reqDetails.getModelInfo().setModelVersionId("1234567");
1974 ServiceInstance si = new ServiceInstance();
1975 si.setServiceInstanceId("siId123");
1976 si.setModelVersionId("1234567");
1977 ServiceInstances serviceInstances = new ServiceInstances();
1978 serviceInstances.getServiceInstance().add(si);
1980 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1981 .thenReturn(Optional.empty());
1983 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1985 Map<String, String> uriKeys = new HashMap<>();
1986 uriKeys.put("global-customer-id", "globalCustomerId");
1987 uriKeys.put("service-type", "serviceType");
1989 when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
1991 this.expectedException.expect(DuplicateNameException.class);
1992 this.expectedException.expectMessage(containsString(
1993 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
1994 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
1995 workflowResourceIds);
1999 public void validateServiceResourceIdInAAINoDupTest() throws Exception {
2000 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2001 reqDetails.getModelInfo().setModelVersionId("1234567");
2002 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
2003 .thenReturn(Optional.empty());
2004 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(null);
2005 String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
2006 assertEquals("generatedId123", id);
2010 public void validateServiceResourceIdInAAISameModelVersionId() throws Exception {
2011 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2012 reqDetails.getModelInfo().setModelVersionId("1234567");
2014 ServiceInstance si = new ServiceInstance();
2015 si.setServiceInstanceId("siId123");
2016 si.setModelVersionId("1234567");
2017 Optional<ServiceInstance> siOp = Optional.of(si);
2019 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
2020 String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
2021 assertEquals("siId123", id);
2025 public void validateServiceResourceIdInAAIDifferentModelVersionId() throws Exception {
2026 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2027 reqDetails.getModelInfo().setModelVersionId("1234567");
2029 ServiceInstance si = new ServiceInstance();
2030 si.setServiceInstanceId("siId123");
2031 si.setModelVersionId("9999999");
2032 ServiceInstances serviceInstances = new ServiceInstances();
2033 serviceInstances.getServiceInstance().add(si);
2034 Optional<ServiceInstance> siOp = Optional.of(si);
2036 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
2038 this.expectedException.expect(DuplicateNameException.class);
2039 this.expectedException.expectMessage(containsString(
2040 "serviceInstance with name (siName123) and different version id (1234567) already exists. The name must be unique."));
2042 String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
2043 assertEquals("siId123", id);
2047 public void validateServiceResourceIdInAAIDuplicateNameTest() throws Exception {
2049 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2050 reqDetails.getModelInfo().setModelVersionId("1234567");
2052 ServiceInstance si = new ServiceInstance();
2053 si.setServiceInstanceId("siId123");
2054 si.setModelVersionId("1234567");
2056 ServiceInstances serviceInstances = new ServiceInstances();
2057 serviceInstances.getServiceInstance().add(si);
2059 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
2060 .thenReturn(Optional.empty());
2061 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
2063 this.expectedException.expect(DuplicateNameException.class);
2064 this.expectedException.expectMessage(containsString(
2065 "serviceInstance with name (siName) and global-customer-id (null), service-type (null), model-version-id (1234567) already exists. The name must be unique."));
2067 workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
2071 public void validateServiceResourceIdInAAIDuplicateNameMultipleTest() throws Exception {
2073 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2074 reqDetails.getModelInfo().setModelVersionId("1234567");
2076 ServiceInstance si = new ServiceInstance();
2077 si.setServiceInstanceId("siId123");
2078 si.setModelVersionId("1234567");
2080 ServiceInstance si2 = new ServiceInstance();
2081 si2.setServiceInstanceId("siId222");
2082 si2.setModelVersionId("22222");
2083 si2.setServiceInstanceName("siName222");
2085 ServiceInstances serviceInstances = new ServiceInstances();
2086 serviceInstances.getServiceInstance().add(si);
2087 serviceInstances.getServiceInstance().add(si2);
2089 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
2090 .thenReturn(Optional.empty());
2091 when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
2093 this.expectedException.expect(DuplicateNameException.class);
2094 this.expectedException.expectMessage(containsString(
2095 "serviceInstance with name (siName) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
2097 workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
2101 public void validateNetworkResourceIdInAAITest() throws Exception {
2102 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2103 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2104 workflowResourceIds.setServiceInstanceId("siId123");
2106 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
2107 .thenReturn(Optional.empty());
2108 when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(false);
2110 String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
2111 workflowResourceIds);
2112 assertEquals("generatedId123", id);
2116 public void validateNetworkResourceIdInAAISameModelCustIdTest() throws Exception {
2117 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2118 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2119 workflowResourceIds.setServiceInstanceId("siId123");
2121 L3Network network = new L3Network();
2122 network.setNetworkId("id123");
2123 network.setNetworkName("name123");
2124 network.setModelCustomizationId("1234567");
2125 Optional<L3Network> opNetwork = Optional.of(network);
2127 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
2129 String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
2130 workflowResourceIds);
2131 assertEquals("id123", id);
2135 public void validateNetworkResourceIdInAAIDuplicateNameTest() throws Exception {
2136 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2137 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2138 workflowResourceIds.setServiceInstanceId("siId123");
2140 L3Network network = new L3Network();
2141 network.setNetworkId("id123");
2142 network.setNetworkName("name123");
2143 network.setModelCustomizationId("9999999");
2144 Optional<L3Network> opNetwork = Optional.of(network);
2146 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
2148 this.expectedException.expect(DuplicateNameException.class);
2149 this.expectedException.expectMessage(containsString(
2150 "l3Network with name (name123), same parent and different customization id (9999999) already exists. The name must be unique."));
2152 workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
2156 public void validateNetworkResourceIdInAAINotGloballyUniqueTest() throws Exception {
2157 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2158 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2159 workflowResourceIds.setServiceInstanceId("siId123");
2161 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
2162 .thenReturn(Optional.empty());
2163 when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(true);
2165 this.expectedException.expect(DuplicateNameException.class);
2166 this.expectedException.expectMessage(containsString(
2167 "l3Network with name (name123) id (siId123) and different parent relationship already exists. The name must be unique."));
2169 workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
2173 public void validateVnfResourceIdInAAITest() throws Exception {
2174 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2175 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2176 workflowResourceIds.setServiceInstanceId("siId123");
2177 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
2178 String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
2179 workflowResourceIds);
2180 assertEquals("generatedId123", id);
2184 public void validateVnfResourceIdInAAISameModelCustomizationIdTest() throws Exception {
2185 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2186 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2187 workflowResourceIds.setServiceInstanceId("siId123");
2189 GenericVnf vnf = new GenericVnf();
2190 vnf.setVnfId("id123");
2191 vnf.setVnfName("vnfName123");
2192 vnf.setModelCustomizationId("1234567");
2193 Optional<GenericVnf> opVnf = Optional.of(vnf);
2195 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
2196 String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
2197 workflowResourceIds);
2198 assertEquals("id123", id);
2202 public void validateVnfResourceIdInAAIDiffModelCustomizationIdTest() throws Exception {
2203 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2204 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2205 workflowResourceIds.setServiceInstanceId("siId123");
2207 GenericVnf vnf = new GenericVnf();
2208 vnf.setVnfId("id123");
2209 vnf.setVnfName("vnfName123");
2210 vnf.setModelCustomizationId("9999999");
2211 Optional<GenericVnf> opVnf = Optional.of(vnf);
2213 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
2215 this.expectedException.expect(DuplicateNameException.class);
2216 this.expectedException.expectMessage(containsString(
2217 "generic-vnf with name (vnfName123), same parent and different customization id (9999999) already exists. The name must be unique."));
2219 workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
2223 public void validateVnfResourceIdInAAINotGloballyUniqueTest() throws Exception {
2224 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2225 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2226 workflowResourceIds.setServiceInstanceId("siId123");
2229 GenericVnf vnf = new GenericVnf();
2230 vnf.setVnfId("id123");
2231 vnf.setVnfName("vnfName123");
2232 GenericVnfs genericVnfs = new GenericVnfs();
2233 genericVnfs.getGenericVnf().add(vnf);
2235 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
2236 when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName123")).thenReturn(genericVnfs);
2238 this.expectedException.expect(DuplicateNameException.class);
2239 this.expectedException.expectMessage(containsString(
2240 "generic-vnf with name (vnfName123) id (id123) and different parent relationship already exists. The name must be unique."));
2242 workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
2246 public void validateVfModuleResourceIdTest() throws Exception {
2247 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2248 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2249 workflowResourceIds.setVnfId("vnfId123");
2251 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
2252 when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(false);
2254 String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
2255 workflowResourceIds);
2256 assertEquals("generatedId123", id);
2260 public void validateVfModuleResourceIdSameModelCustIdTest() throws Exception {
2261 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2262 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2263 workflowResourceIds.setVnfId("vnfId123");
2265 VfModules vfModules = new VfModules();
2266 VfModule vfModule = new VfModule();
2267 vfModule.setVfModuleId("id123");
2268 vfModule.setVfModuleName("name123");
2269 vfModule.setModelCustomizationId("1234567");
2270 vfModules.getVfModule().add(vfModule);
2272 GenericVnf vnf = new GenericVnf();
2273 vnf.setVnfId("id123");
2274 vnf.setVnfName("vnfName123");
2275 vnf.setVfModules(vfModules);
2277 when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
2279 String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
2280 workflowResourceIds);
2281 assertEquals("id123", id);
2285 public void validateVfModuleResourceIdDifferentModelCustIdTest() throws Exception {
2286 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2287 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2288 workflowResourceIds.setVnfId("vnfId123");
2290 VfModules vfModules = new VfModules();
2291 VfModule vfModule = new VfModule();
2292 vfModule.setVfModuleId("id123");
2293 vfModule.setVfModuleName("name123");
2294 vfModule.setModelCustomizationId("9999999");
2295 vfModules.getVfModule().add(vfModule);
2297 GenericVnf vnf = new GenericVnf();
2298 vnf.setVnfId("id123");
2299 vnf.setVnfName("vnfName123");
2300 vnf.setVfModules(vfModules);
2302 when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
2304 this.expectedException.expect(DuplicateNameException.class);
2305 this.expectedException.expectMessage(containsString(
2306 "vfModule with name (name123), same parent and different customization id (1234567) already exists. The name must be unique."));
2308 workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
2313 public void validateVfModuleResourceIdNotGloballyUniqueTest() throws Exception {
2314 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2315 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2316 workflowResourceIds.setVnfId("vnfId123");
2318 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
2319 when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(true);
2321 this.expectedException.expect(DuplicateNameException.class);
2322 this.expectedException
2323 .expectMessage(containsString("vfModule with name name123 already exists. The name must be unique."));
2325 workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
2329 public void validateVolumeGroupResourceIdInAAITest() throws Exception {
2330 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2331 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2332 workflowResourceIds.setVnfId("vnfId123");
2334 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(Optional.empty());
2335 when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(false);
2337 String id = workflowAction.validateVolumeGroupResourceIdInAAI("generatedId123", "name123", reqDetails,
2338 workflowResourceIds);
2339 assertEquals("generatedId123", id);
2343 public void validateVolumeGroupResourceIdInAAISameModelCustIdTest() throws Exception {
2344 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2345 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2346 workflowResourceIds.setServiceInstanceId("siId123");
2347 workflowResourceIds.setVnfId("vnfId123");
2349 VolumeGroup volumeGroup = new VolumeGroup();
2350 volumeGroup.setVolumeGroupId("id123");
2351 volumeGroup.setVolumeGroupName("name123");
2352 volumeGroup.setVfModuleModelCustomizationId("1234567");
2354 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
2356 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
2357 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
2358 reqDetails, workflowResourceIds);
2360 assertEquals("id123", id);
2364 public void validateVolumeGroupResourceIdInAAIDifferentModelCustIdTest() throws Exception {
2365 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2366 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2367 workflowResourceIds.setServiceInstanceId("siId123");
2368 workflowResourceIds.setVnfId("vnfId123");
2370 VolumeGroup volumeGroup = new VolumeGroup();
2371 volumeGroup.setVolumeGroupId("id123");
2372 volumeGroup.setVolumeGroupName("name123");
2373 volumeGroup.setVfModuleModelCustomizationId("9999999");
2375 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
2377 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
2379 this.expectedException.expect(DuplicateNameException.class);
2380 this.expectedException.expectMessage(
2381 containsString("volumeGroup with name name123 already exists. The name must be unique."));
2383 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
2384 workflowResourceIds);
2388 public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
2389 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2390 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2391 workflowResourceIds.setVnfId("vnfId123");
2393 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(Optional.empty());
2394 when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(true);
2396 this.expectedException.expect(DuplicateNameException.class);
2397 this.expectedException.expectMessage(
2398 containsString("volumeGroup with name name123 already exists. The name must be unique."));
2400 workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
2401 workflowResourceIds);
2405 public void validateConfigurationResourceIdInAAITest() throws Exception {
2406 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2407 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2408 workflowResourceIds.setServiceInstanceId("siId123");
2410 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
2411 .thenReturn(Optional.empty());
2412 when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
2414 String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
2415 workflowResourceIds);
2416 assertEquals("generatedId123", id);
2420 public void validateConfigurationResourceIdInAAISameModelCustIdTest() throws Exception {
2421 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2422 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2423 workflowResourceIds.setServiceInstanceId("siId123");
2425 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
2426 configuration.setConfigurationId("id123");
2427 configuration.setConfigurationName("name123");
2428 configuration.setModelCustomizationId("1234567");
2429 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
2431 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
2432 .thenReturn(opConfiguration);
2433 when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
2435 String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
2436 workflowResourceIds);
2437 assertEquals("id123", id);
2441 public void validateConfigurationResourceIdInAAIDifferentModelCustIdTest() throws Exception {
2442 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2443 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2444 workflowResourceIds.setServiceInstanceId("siId123");
2446 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
2447 configuration.setConfigurationId("id123");
2448 configuration.setConfigurationName("name123");
2449 configuration.setModelCustomizationId("9999999");
2450 Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
2452 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
2453 .thenReturn(opConfiguration);
2454 when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
2456 this.expectedException.expect(DuplicateNameException.class);
2457 this.expectedException.expectMessage(containsString(
2458 "configuration with name (name123), same parent and different customization id (id123) already exists. The name must be unique."));
2460 workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
2461 workflowResourceIds);
2465 public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
2466 RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
2467 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2468 workflowResourceIds.setServiceInstanceId("siId123");
2470 when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
2471 .thenReturn(Optional.empty());
2472 when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(true);
2474 this.expectedException.expect(DuplicateNameException.class);
2475 this.expectedException.expectMessage(
2476 containsString("configuration with name name123 already exists. The name must be unique."));
2478 workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
2479 workflowResourceIds);
2483 public void handleRuntimeExceptionTest() {
2484 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2485 execution.setVariable("testProcessKey", "testProcessKeyValue");
2487 workflowAction.handleRuntimeException(execution);
2488 } catch (BpmnError wfe) {
2489 assertEquals("MSOWorkflowException", wfe.getErrorCode());
2495 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
2496 execution.setVariable("testProcessKey", "testProcessKeyValue");
2497 Service service = new Service();
2498 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
2499 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
2500 networkCust.setModelCustomizationUUID("123");
2501 networkCustomizations.add(networkCust);
2502 service.setNetworkCustomizations(networkCustomizations);
2503 NetworkCollectionResourceCustomization collectionResourceCustomization =
2504 new NetworkCollectionResourceCustomization();
2505 collectionResourceCustomization.setModelCustomizationUUID("123");
2506 CollectionResource collectionResource = new CollectionResource();
2507 collectionResource.setToscaNodeType("NetworkCollection");
2508 InstanceGroup instanceGroup = new InstanceGroup();
2509 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
2510 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
2511 new CollectionResourceInstanceGroupCustomization();
2512 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
2513 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
2514 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
2515 collectionResource.setInstanceGroup(instanceGroup);
2516 collectionResourceCustomization.setCollectionResource(collectionResource);;
2517 service.setModelUUID("abc");
2518 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2519 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
2520 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
2521 doReturn(collectionResourceCustomization).when(catalogDbClient)
2522 .getNetworkCollectionResourceCustomizationByID("123");
2523 String bpmnRequest = new String(Files
2524 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
2525 ObjectMapper mapper = new ObjectMapper();
2526 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
2527 List<Resource> resourceCounter = new ArrayList<>();
2528 thrown.expect(BpmnError.class);
2529 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2530 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
2534 public void sortVfModulesByBaseFirstTest() {
2535 List<Resource> resources = new ArrayList<>();
2536 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
2537 resource1.setBaseVfModule(false);
2538 resources.add(resource1);
2539 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
2540 resource2.setBaseVfModule(false);
2541 resources.add(resource2);
2542 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
2543 resource3.setBaseVfModule(true);
2544 resources.add(resource3);
2545 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
2546 assertEquals("333", result.get(0).getResourceId());
2547 assertEquals("222", result.get(1).getResourceId());
2548 assertEquals("111", result.get(2).getResourceId());
2552 public void sortVfModulesByBaseLastTest() {
2553 List<Resource> resources = new ArrayList<>();
2554 Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
2555 resource1.setBaseVfModule(true);
2556 resources.add(resource1);
2557 Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
2558 resource2.setBaseVfModule(false);
2559 resources.add(resource2);
2560 Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
2561 resource3.setBaseVfModule(false);
2562 resources.add(resource3);
2563 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
2564 assertEquals("333", result.get(0).getResourceId());
2565 assertEquals("222", result.get(1).getResourceId());
2566 assertEquals("111", result.get(2).getResourceId());
2570 public void findCatalogNetworkCollectionTest() {
2571 Service service = new Service();
2572 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2573 networkCustomization.setModelCustomizationUUID("123");
2574 service.getCollectionResourceCustomizations().add(networkCustomization);
2575 doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2576 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2577 assertNotNull(customization);
2581 public void findCatalogNetworkCollectionEmptyTest() {
2582 Service service = new Service();
2583 NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
2584 networkCustomization.setModelCustomizationUUID("123");
2585 service.getCollectionResourceCustomizations().add(networkCustomization);
2586 CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
2587 assertNull(customization);
2591 public void findCatalogNetworkCollectionMoreThanOneTest() {
2592 Service service = new Service();
2593 NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
2594 networkCustomization1.setModelCustomizationUUID("123");
2595 NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
2596 networkCustomization2.setModelCustomizationUUID("321");
2597 service.getCollectionResourceCustomizations().add(networkCustomization1);
2598 service.getCollectionResourceCustomizations().add(networkCustomization2);
2599 doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
2600 doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
2601 workflowAction.findCatalogNetworkCollection(execution, service);
2602 assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
2603 execution.getVariable("WorkflowActionErrorMessage"));
2607 public void verifyLackOfNullPointerExceptionForNullResource() {
2608 ExecuteBuildingBlock result = null;
2610 result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
2611 false, null, null, null, false, null, true);
2612 } catch (NullPointerException e) {
2613 fail("NullPointerException should not be thrown when 'resource' is null");
2615 assertNotNull(result);
2619 public void traverseAAIServiceTest() {
2620 List<Resource> resourceCounter = new ArrayList<>();
2621 String resourceId = "si0";
2622 List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2624 ServiceInstance serviceInstanceAAI = new ServiceInstance();
2625 serviceInstanceAAI.setServiceInstanceId(resourceId);
2627 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2635 Configuration config = new Configuration();
2636 config.setConfigurationId("testConfigurationId2");
2637 serviceInstance.getConfigurations().add(config);
2639 Relationship relationship1 = new Relationship();
2640 relationship1.setRelatedTo("vnfc");
2641 RelationshipList relationshipList1 = new RelationshipList();
2642 relationshipList1.getRelationship().add(relationship1);
2644 Relationship relationship2 = new Relationship();
2645 relationship2.setRelatedTo("vpn-binding");
2646 RelationshipList relationshipList2 = new RelationshipList();
2647 relationshipList2.getRelationship().add(relationship2);
2649 org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2650 aaiConfiguration1.setConfigurationId("testConfigurationId");
2651 aaiConfiguration1.setRelationshipList(relationshipList1);
2653 org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2654 aaiConfiguration2.setConfigurationId("testConfigurationId2");
2655 aaiConfiguration2.setRelationshipList(relationshipList1);
2658 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
2659 doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
2660 doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
2661 .getConfiguration("testConfigurationId");
2662 doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
2663 .getConfiguration("testConfigurationId2");
2664 workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
2665 assertEquals(8, resourceCounter.size());
2666 assertTrue(resourceCounter.get(2).isBaseVfModule());
2667 assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
2668 } catch (Exception e) {
2669 fail("Unexpected exception was thrown.");
2673 private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
2674 List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
2675 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
2676 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
2677 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
2678 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
2679 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
2680 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
2681 resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
2685 private List<OrchestrationFlow> createFlowList(String... flowNames) {
2686 List<OrchestrationFlow> result = new ArrayList<>();
2687 for (String flowName : flowNames) {
2688 OrchestrationFlow orchFlow = new OrchestrationFlow();
2689 orchFlow.setFlowName(flowName);
2690 result.add(orchFlow);
2695 private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
2696 for (int i = 0; i < ebbs.size(); i++) {
2697 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);