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  * Modifications Copyright (c) 2020 Nokia
 
  10  * ================================================================================
 
  11  * Licensed under the Apache License, Version 2.0 (the "License");
 
  12  * you may not use this file except in compliance with the License.
 
  13  * You may obtain a copy of the License at
 
  15  *      http://www.apache.org/licenses/LICENSE-2.0
 
  17  * Unless required by applicable law or agreed to in writing, software
 
  18  * distributed under the License is distributed on an "AS IS" BASIS,
 
  19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  20  * See the License for the specific language governing permissions and
 
  21  * limitations under the License.
 
  22  * ============LICENSE_END=========================================================
 
  25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
  27 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 
  28 import static org.hamcrest.CoreMatchers.containsString;
 
  29 import static org.hamcrest.CoreMatchers.equalTo;
 
  30 import static org.junit.Assert.assertEquals;
 
  31 import static org.junit.Assert.assertFalse;
 
  32 import static org.junit.Assert.assertNotNull;
 
  33 import static org.junit.Assert.assertNull;
 
  34 import static org.junit.Assert.assertThat;
 
  35 import static org.junit.Assert.assertTrue;
 
  36 import static org.junit.Assert.fail;
 
  37 import static org.mockito.ArgumentMatchers.any;
 
  38 import static org.mockito.ArgumentMatchers.anyObject;
 
  39 import static org.mockito.ArgumentMatchers.anyString;
 
  40 import static org.mockito.ArgumentMatchers.eq;
 
  41 import static org.mockito.ArgumentMatchers.isA;
 
  42 import static org.mockito.Mockito.doReturn;
 
  43 import static org.mockito.Mockito.doThrow;
 
  44 import static org.mockito.Mockito.when;
 
  45 import com.fasterxml.jackson.databind.DeserializationFeature;
 
  46 import com.fasterxml.jackson.databind.ObjectMapper;
 
  47 import java.io.IOException;
 
  48 import java.net.MalformedURLException;
 
  49 import java.nio.file.Files;
 
  50 import java.nio.file.Paths;
 
  51 import java.util.ArrayList;
 
  52 import java.util.Arrays;
 
  53 import java.util.HashMap;
 
  54 import java.util.List;
 
  56 import java.util.Optional;
 
  57 import java.util.UUID;
 
  58 import org.camunda.bpm.engine.delegate.BpmnError;
 
  59 import org.camunda.bpm.engine.delegate.DelegateExecution;
 
  60 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
 
  61 import org.javatuples.Pair;
 
  62 import org.junit.Before;
 
  63 import org.junit.Ignore;
 
  64 import org.junit.Rule;
 
  65 import org.junit.Test;
 
  66 import org.junit.rules.ExpectedException;
 
  67 import org.mockito.InjectMocks;
 
  68 import org.mockito.Mock;
 
  69 import org.mockito.Spy;
 
  70 import org.onap.aai.domain.yang.GenericVnf;
 
  71 import org.onap.aai.domain.yang.GenericVnfs;
 
  72 import org.onap.aai.domain.yang.L3Network;
 
  73 import org.onap.aai.domain.yang.Relationship;
 
  74 import org.onap.aai.domain.yang.RelationshipList;
 
  75 import org.onap.aai.domain.yang.ServiceInstance;
 
  76 import org.onap.aai.domain.yang.ServiceInstances;
 
  77 import org.onap.aai.domain.yang.VfModule;
 
  78 import org.onap.aai.domain.yang.VfModules;
 
  79 import org.onap.aai.domain.yang.VolumeGroup;
 
  80 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
 
  81 import org.onap.aaiclient.client.aai.entities.Relationships;
 
  82 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 
  83 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 
  84 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
 
  85 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
 
  86 import org.onap.so.bpmn.BaseTaskTest;
 
  87 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
 
  88 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 
  89 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 
  90 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 
  91 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
 
  92 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
 
  93 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
 
  94 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 
  95 import org.onap.so.db.catalog.beans.CollectionResource;
 
  96 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
 
  97 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 
  98 import org.onap.so.db.catalog.beans.ConfigurationResource;
 
  99 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 
 100 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 
 101 import org.onap.so.db.catalog.beans.HeatEnvironment;
 
 102 import org.onap.so.db.catalog.beans.HeatTemplate;
 
 103 import org.onap.so.db.catalog.beans.InstanceGroup;
 
 104 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 
 105 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
 
 106 import org.onap.so.db.catalog.beans.Service;
 
 107 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 
 108 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
 
 109 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
 
 110 import org.onap.so.serviceinstancebeans.ModelInfo;
 
 111 import org.onap.so.serviceinstancebeans.RequestDetails;
 
 112 import org.onap.so.serviceinstancebeans.RequestParameters;
 
 113 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 
 114 import org.onap.so.serviceinstancebeans.SubscriberInfo;
 
 115 import org.springframework.core.env.Environment;
 
 117 public class WorkflowActionTest extends BaseTaskTest {
 
 119     private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
 
 120     private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
 
 121     private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
 
 122     private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
 
 123     private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
 
 124             "VfModuleReplaceRebuildVolumeGroups.json";
 
 125     private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
 
 126     private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
 
 129     protected Environment environment;
 
 131     protected WorkflowAction workflowAction;
 
 132     private DelegateExecution execution;
 
 136     protected WorkflowAction SPY_workflowAction;
 
 139     public ExpectedException thrown = ExpectedException.none();
 
 141     private String RESOURCE_PATH = "src/test/resources/__files/";
 
 143     private List<OrchestrationFlow> replaceVfModuleOrchFlows =
 
 144             createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
 145                     "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
 146                     "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
 147                     "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 148     private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
 
 149             "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
 
 150             "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 151             "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 152     private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
 
 153             "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
 
 154             "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
 
 155             "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
 
 156             "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 159     public void before() throws Exception {
 
 160         execution = new DelegateExecutionFake();
 
 161         org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
 
 162         servInstance.setServiceInstanceId("TEST");
 
 163         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
 
 164         workflowAction.setBbInputSetupUtils(bbSetupUtils);
 
 165         workflowAction.setBbInputSetup(bbInputSetup);
 
 172     public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
 
 173         String gAction = "createInstance";
 
 174         String resource = "Network";
 
 175         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 176         initExecution(gAction, bpmnRequest, true);
 
 177         execution.setVariable("requestUri", "v6/networks/123");
 
 179         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 180         List<OrchestrationFlow> orchFlows =
 
 181                 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 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, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 192     public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
 
 193         String gAction = "deleteInstance";
 
 194         String resource = "Network";
 
 195         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 196         initExecution(gAction, bpmnRequest, true);
 
 197         execution.setVariable("requestUri", "v6/networks/123");
 
 199         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 200         List<OrchestrationFlow> orchFlows =
 
 201                 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 202         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 204         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 205                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 206         workflowAction.selectExecutionList(execution);
 
 207         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 208         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 212     public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
 
 213         String gAction = "createInstance";
 
 214         String resource = "Service";
 
 215         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 216         initExecution(gAction, bpmnRequest, true);
 
 217         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 220         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 221         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 222         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 224         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 225                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 226         workflowAction.selectExecutionList(execution);
 
 227         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 228         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 232     public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
 
 233         String gAction = "createInstance";
 
 234         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 235         initExecution(gAction, bpmnRequest, true);
 
 236         execution.setVariable("requestUri", "v6/serviceInstances");
 
 238         doThrow(new DuplicateNameException(
 
 239                 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
 
 240                         .when(SPY_workflowAction).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
 
 241                                 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
 
 243         SPY_workflowAction.selectExecutionList(execution);
 
 244         assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
 
 245                 "Exception while setting execution list. serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique.");
 
 249      * SERVICE MACRO TESTS
 
 252     public void selectExecutionListServiceMacroAssignTest() throws Exception {
 
 253         String gAction = "assignInstance";
 
 254         String resource = "Service";
 
 255         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 256         initExecution(gAction, bpmnRequest, false);
 
 257         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 259         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 260         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 261                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 262         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 264         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 265         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 266         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 267         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 268         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 269         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 270         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 271         vfModuleCustomization.setVfModule(vfModule);
 
 273         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 274         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 275         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 276         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 277         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 278         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 279         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 280         vfModuleCustomization2.setVfModule(vfModule2);
 
 282         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 283         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 285         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 286                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 287         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 288                 .thenReturn(vfModuleCustomization);
 
 289         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 290                 .thenReturn(vfModuleCustomization2);
 
 291         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 292                 .thenReturn(vfModuleCustomization3);
 
 293         workflowAction.selectExecutionList(execution);
 
 294         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 295         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 296                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 300     public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
 
 301         String gAction = "assignInstance";
 
 302         String resource = "Service";
 
 303         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
 
 304         initExecution(gAction, bpmnRequest, false);
 
 305         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 307         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 308         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 309                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 310         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 312         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 313         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 314         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 315         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 316         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 317         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 318         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 319         vfModuleCustomization.setVfModule(vfModule);
 
 321         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 322         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 323         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 324         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 325         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 326         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 327         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 328         vfModuleCustomization2.setVfModule(vfModule2);
 
 330         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 331         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 333         when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
 
 334         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 335                 false, "att-aic")).thenReturn(northBoundRequest);
 
 336         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 337                 .thenReturn(vfModuleCustomization);
 
 338         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 339                 .thenReturn(vfModuleCustomization2);
 
 340         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 341                 .thenReturn(vfModuleCustomization3);
 
 342         workflowAction.selectExecutionList(execution);
 
 343         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 344         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 345                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 349     public void selectExecutionListServiceMacroActivateTest() throws Exception {
 
 350         String gAction = "activateInstance";
 
 351         String resource = "Service";
 
 352         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 353         initExecution(gAction, bpmnRequest, false);
 
 354         execution.setVariable("requestUri", "v6/serviceInstances/si0");
 
 356         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 357         List<OrchestrationFlow> orchFlows =
 
 358                 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 359                         "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
 
 360         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 362         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 363         serviceInstanceAAI.setServiceInstanceId("si0");
 
 364         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 365                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 366         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 367                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 368         vnf.setVnfId("vnf0");
 
 370         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 371         vnf.getVfModules().add(vfModule);
 
 372         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 373         vnf.getVfModules().add(vfModule2);
 
 375         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 376                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 377         volumeGroup.setVolumeGroupId("volumeGroup0");
 
 378         vnf.getVolumeGroups().add(volumeGroup);
 
 380         serviceInstanceMSO.getVnfs().add(vnf);
 
 382         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
 
 383         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 384         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 385                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 386         workflowAction.selectExecutionList(execution);
 
 387         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 388         assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 389                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 390                 "ActivateServiceInstanceBB");
 
 391         assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
 
 392         assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
 
 393         assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
 
 394         assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
 
 395         assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
 
 396         assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
 
 397         assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
 
 398         assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
 
 402     public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
 
 403         String gAction = "deactivateInstance";
 
 404         String resource = "Service";
 
 405         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 406         initExecution(gAction, bpmnRequest, false);
 
 407         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 409         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 410         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
 
 411         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 413         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 414                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 415         workflowAction.selectExecutionList(execution);
 
 416         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 417         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
 
 421     public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
 
 422         String gAction = "createInstance";
 
 423         String resource = "Service";
 
 424         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 425         initExecution(gAction, bpmnRequest, false);
 
 426         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         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 451         initExecution(gAction, bpmnRequest, false);
 
 452         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 454         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 455         northBoundRequest.setIsToplevelflow(true);
 
 456         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 457                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 458                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 459                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 460                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 461         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 463         Service service = new Service();
 
 464         NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
 
 465         networkCustomization.setModelCustomizationUUID("1234");
 
 466         service.getNetworkCustomizations().add(networkCustomization);
 
 467         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 468         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 469                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 470         workflowAction.selectExecutionList(execution);
 
 471         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 472         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
 
 473                 "ActivateNetworkBB", "ActivateServiceInstanceBB");
 
 477     public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
 
 478         String gAction = "createInstance";
 
 479         String resource = "Service";
 
 480         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 481         initExecution(gAction, bpmnRequest, false);
 
 482         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 484         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 485         northBoundRequest.setIsToplevelflow(true);
 
 486         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 487                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 488                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 489                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 490                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 491         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 493         Service service = new Service();
 
 494         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
 495         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
 496         networkCust.setModelCustomizationUUID("123");
 
 497         networkCustomizations.add(networkCust);
 
 498         service.setNetworkCustomizations(networkCustomizations);
 
 499         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
 500                 new NetworkCollectionResourceCustomization();
 
 501         collectionResourceCustomization.setModelCustomizationUUID("123");
 
 503         CollectionResource collectionResource = new CollectionResource();
 
 504         collectionResource.setToscaNodeType("NetworkCollection");
 
 505         InstanceGroup instanceGroup = new InstanceGroup();
 
 506         instanceGroup.setToscaNodeType("NetworkCollectionResource");
 
 507         instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
 
 508         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
 
 509                 new CollectionNetworkResourceCustomization();
 
 510         collectionNetworkResourceCust.setModelCustomizationUUID("123");
 
 511         collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
 
 512         instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
 
 513         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
 514         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
 515                 new CollectionResourceInstanceGroupCustomization();
 
 516         collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
 
 517         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
 518         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
 519         collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
 
 520         collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
 
 521         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
 522         collectionResource.setInstanceGroup(instanceGroup);
 
 523         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
 524         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 525         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 526         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
 527                 .getNetworkCollectionResourceCustomizationByID("123");
 
 528         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 529                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 530         workflowAction.selectExecutionList(execution);
 
 531         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 532         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
 
 533                 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 534                 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
 
 535                 "ActivateServiceInstanceBB");
 
 536         assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 537         assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 538         assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 539         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 540                 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
 
 542                         && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
 
 545         assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 546         assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 547         assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 548         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 549                 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
 
 551                         && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
 
 554         assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 555         assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 556         assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 557         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 558                 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
 
 560                         && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
 
 566     public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
 
 567         String gAction = "createInstance";
 
 568         String resource = "Service";
 
 569         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 570         initExecution(gAction, bpmnRequest, false);
 
 571         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 573         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 574         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 575                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 576                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 577                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 578                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 579         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 581         Service service = new Service();
 
 582         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 584         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 585         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 586         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 587         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 588         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 589         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 590         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 591         vfModuleCustomization.setVfModule(vfModule);
 
 593         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 594         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 595         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 596         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 597         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 598         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 599         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 600         vfModuleCustomization2.setVfModule(vfModule2);
 
 602         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 603         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 605         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 606                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 607         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 608                 .thenReturn(vfModuleCustomization);
 
 609         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 610                 .thenReturn(vfModuleCustomization2);
 
 611         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 612                 .thenReturn(vfModuleCustomization3);
 
 613         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 614         workflowAction.selectExecutionList(execution);
 
 615         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 616         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 617                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
 
 618                 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
 
 619                 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 620                 "ActivateServiceInstanceBB");
 
 621         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 622         int randomUUIDLength = UUID.randomUUID().toString().length();
 
 623         assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
 
 624         assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
 
 625         assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
 
 626         assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
 
 627         assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
 
 628         assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
 
 629         assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
 
 630         assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
 
 631         assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
 
 632         assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
 
 633         assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
 
 634         assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
 
 635         assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
 
 636         assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
 
 637         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 638         assertEquals(true, execution.getVariable("homing"));
 
 642     public void selectExecutionListServiceMacroDeleteTest() throws Exception {
 
 643         String gAction = "deleteInstance";
 
 644         String resource = "Service";
 
 645         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 646         initExecution(gAction, bpmnRequest, false);
 
 647         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 649         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 650         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 651                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
 
 652                 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
 
 653                 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
 
 654                 "UnassignServiceInstanceBB");
 
 655         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 657         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 658         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 659         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 660                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 661         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 662                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 663         org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
 
 664                 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
 
 665         vnf.setVnfId("vnfId123");
 
 666         pnf.setPnfId("pnfId123");
 
 668         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 669         vnf.getVfModules().add(vfModule);
 
 670         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 671         vnf.getVfModules().add(vfModule2);
 
 673         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 674                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 675         volumeGroup.setVolumeGroupId("vg123");
 
 676         vnf.getVolumeGroups().add(volumeGroup);
 
 678         serviceInstanceMSO.getVnfs().add(vnf);
 
 679         serviceInstanceMSO.getPnfs().add(pnf);
 
 681         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 682         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 683         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 684                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 685         workflowAction.selectExecutionList(execution);
 
 686         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 687         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 688                 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
 
 689                 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
 
 690                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 694     public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
 
 695         String gAction = "deleteInstance";
 
 696         String resource = "Service";
 
 697         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 698         initExecution(gAction, bpmnRequest, false);
 
 699         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 701         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 702         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 703                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
 
 704                 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
 
 705                 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
 
 706                 "UnassignServiceInstanceBB");
 
 707         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 709         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 710         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 711         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 712                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 713         org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
 
 714                 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
 
 715         pnf.setPnfId("pnfId123");
 
 717         serviceInstanceMSO.getPnfs().add(pnf);
 
 719         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 720         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 721         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 722                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 723         workflowAction.selectExecutionList(execution);
 
 724         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 725         assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
 729     public void selectExecutionListServiceMacroUnassignTest() throws Exception {
 
 730         String gAction = "unassignInstance";
 
 731         String resource = "Service";
 
 732         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 733         initExecution(gAction, bpmnRequest, false);
 
 734         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 736         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 737         List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 738                 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 739         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 741         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 742         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 743         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 744                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 745         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 746                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 747         vnf.setVnfId("vnfId123");
 
 749         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 750         vnf.getVfModules().add(vfModule);
 
 751         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 752         vnf.getVfModules().add(vfModule2);
 
 754         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 755                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 756         volumeGroup.setVolumeGroupId("vg123");
 
 757         vnf.getVolumeGroups().add(volumeGroup);
 
 759         serviceInstanceMSO.getVnfs().add(vnf);
 
 761         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 762         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 763         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 764                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 765         workflowAction.selectExecutionList(execution);
 
 766         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 767         assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 768                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 772     public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
 
 773         String gAction = "deleteInstance";
 
 774         String resource = "Service";
 
 775         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 776         initExecution(gAction, bpmnRequest, false);
 
 777         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 779         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 780         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 781                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
 782                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
 783                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 784         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 786         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 787         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 788         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 789                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 791         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
 
 792                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 793         network.setNetworkId("123");
 
 794         serviceInstanceMSO.getNetworks().add(network);
 
 795         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
 
 796                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 797         network2.setNetworkId("321");
 
 798         serviceInstanceMSO.getNetworks().add(network2);
 
 800         Collection collection = new Collection();
 
 801         serviceInstanceMSO.setCollection(collection);
 
 803         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 804         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 805         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 806                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 807         workflowAction.selectExecutionList(execution);
 
 808         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 809         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
 810                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
 
 811                 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
 815     public void selectExecutionListVnfMacroRecreateTest() throws Exception {
 
 816         String gAction = "recreateInstance";
 
 817         String resource = "Vnf";
 
 818         String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
 
 819         initExecution(gAction, bpmnRequest, false);
 
 820         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
 
 821         execution.setVariable("serviceInstanceId", "123");
 
 822         execution.setVariable("vnfId", "1234");
 
 824         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 825         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 826                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 827                 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
 828                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 829                 "AAIUnsetVnfInMaintBB");
 
 830         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 832         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 833         serviceInstanceAAI.setServiceInstanceId("123");
 
 834         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 835                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 836         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 837                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 838         vnf.setVnfId("1234");
 
 840         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 841                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 842         vfModule.setVfModuleId("vfModule1");
 
 843         vnf.getVfModules().add(vfModule);
 
 844         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 845                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 846         vfModule2.setVfModuleId("vfModule2");
 
 847         vnf.getVfModules().add(vfModule2);
 
 849         serviceInstanceMSO.getVnfs().add(vnf);
 
 851         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 852         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 853         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 854                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 855         workflowAction.selectExecutionList(execution);
 
 856         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 857         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
 
 858                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
 
 859                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 860                 "AAIUnsetVnfInMaintBB");
 
 864     public void selectExecutionListVnfMacroReplaceTest() throws Exception {
 
 865         String gAction = "replaceInstance";
 
 866         String resource = "Vnf";
 
 867         String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
 
 868         initExecution(gAction, bpmnRequest, false);
 
 869         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
 
 870         execution.setVariable("serviceInstanceId", "123");
 
 871         execution.setVariable("vnfId", "1234");
 
 873         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 874         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 875                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 876                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
 877                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
 
 878                 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
 
 879                 "AAIUnsetVnfInMaintBB");
 
 880         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 882         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 883         serviceInstanceAAI.setServiceInstanceId("123");
 
 884         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 885                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 886         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 887                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 888         vnf.setVnfId("1234");
 
 889         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 890                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 891         vfModule.setVfModuleId("vfModule1");
 
 892         vnf.getVfModules().add(vfModule);
 
 893         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 894                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 895         vfModule2.setVfModuleId("vfModule2");
 
 896         vnf.getVfModules().add(vfModule2);
 
 897         serviceInstanceMSO.getVnfs().add(vnf);
 
 898         VfModule vfModuleAAI = new VfModule();
 
 899         vfModuleAAI.setVfModuleId("vfModule2");
 
 900         RelationshipList relationshipList = new RelationshipList();
 
 901         Relationship relationship = new Relationship();
 
 902         relationshipList.getRelationship().add(relationship);
 
 903         vfModuleAAI.setRelationshipList(relationshipList);
 
 904         Relationships relationships = new Relationships("abc");
 
 905         Configuration config = new Configuration();
 
 906         config.setConfigurationId("configId");
 
 907         Optional<Configuration> configOp = Optional.of(config);
 
 908         Optional<Relationships> relationshipsOp = Optional.of(relationships);
 
 910         doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
 
 911         doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
 
 912         doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
 
 913         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 914         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 915         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 916                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 917         workflowAction.selectExecutionList(execution);
 
 918         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 919         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
 
 920                 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 921                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
 
 922                 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
 
 923                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
 
 924                 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
 925         for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
 
 926             assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
 
 932     public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
 
 933         String gAction = "createInstance";
 
 934         String resource = "NetworkCollection";
 
 935         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
 
 936         initExecution(gAction, bpmnRequest, false);
 
 937         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 939         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 940         List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
 
 941                 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
 
 942         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 944         Service service = new Service();
 
 945         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
 946         CollectionResource collectionResource = new CollectionResource();
 
 947         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
 948         collectionResourceCustomization.setCollectionResource(collectionResource);
 
 949         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 951         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 952                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 953         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 954         workflowAction.selectExecutionList(execution);
 
 955         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 956         assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
 
 957                 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 958                 "ActivateNetworkCollectionBB");
 
 963     public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
 
 964         String gAction = "deleteInstance";
 
 965         String resource = "NetworkCollection";
 
 966         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
 
 967         initExecution(gAction, bpmnRequest, false);
 
 968         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 970         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 971         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
 
 972                 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
 
 973         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 975         Service service = new Service();
 
 976         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
 977         CollectionResource collectionResource = new CollectionResource();
 
 978         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
 979         collectionResourceCustomization.setCollectionResource(collectionResource);
 
 980         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 982         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 983                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 984         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 985         workflowAction.selectExecutionList(execution);
 
 986         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 987         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
 988                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
 
 989                 "DeleteNetworkCollectionBB");
 
 993     public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
 
 994         String gAction = "createInstance";
 
 995         String resource = "VfModule";
 
 996         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
 997         initExecution(gAction, bpmnRequest, true);
 
 998         execution.setVariable("requestUri",
 
 999                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1001         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1002         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1003                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1004         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1006         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1007                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1008         workflowAction.selectExecutionList(execution);
 
1009         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1010         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1014     public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
 
1015         String gAction = "createInstance";
 
1016         String resource = "VfModule";
 
1017         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1018         initExecution(gAction, bpmnRequest, true);
 
1019         execution.setVariable("requestUri",
 
1020                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1022         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1023         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1024                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1025         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1027         List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
 
1028         CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
 
1029         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
 
1030                 new CvnfcConfigurationCustomization();
 
1031         ConfigurationResource configurationResource = new ConfigurationResource();
 
1032         configurationResource.setToscaNodeType("FabricConfiguration");
 
1033         vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
 
1034         vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
 
1035         vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
 
1036         List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
 
1037         custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
 
1038         cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
 
1039         cvnfcCustomization.setDescription("description");
 
1040         cvnfcCustomizations.add(cvnfcCustomization);
 
1042         CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
 
1043         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
 
1044                 new CvnfcConfigurationCustomization();
 
1045         ConfigurationResource configurationResource2 = new ConfigurationResource();
 
1046         configurationResource2.setToscaNodeType("FabricConfiguration");
 
1047         vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
 
1048         vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
 
1049         vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
 
1050         List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
 
1051         custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
 
1052         cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
 
1053         cvnfcCustomization2.setDescription("description2");
 
1054         cvnfcCustomizations.add(cvnfcCustomization2);
 
1056         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1057                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1058         // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
 
1059         // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
 
1060         workflowAction.selectExecutionList(execution);
 
1061         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1062         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1063                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
 
1064                 "ActivateFabricConfigurationBB");
 
1068     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
 
1069         String gAction = "replaceInstance";
 
1070         String resource = "VfModule";
 
1071         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1072         initExecution(gAction, bpmnRequest, true);
 
1073         execution.setVariable("requestUri",
 
1074                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1076         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1077         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1078         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1079                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1080         workflowAction.selectExecutionList(execution);
 
1081         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1083         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1084                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1085                 "ChangeModelServiceInstanceBB");
 
1089     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1090         String gAction = "replaceInstanceRetainAssignments";
 
1091         String resource = "VfModule";
 
1092         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1093         initExecution(gAction, bpmnRequest, true);
 
1094         execution.setVariable("requestUri",
 
1095                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1097         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1098         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1099         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1100                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1101         workflowAction.selectExecutionList(execution);
 
1102         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1104         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1105                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1109     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
 
1110         String gAction = "replaceInstance";
 
1111         String resource = "VfModule";
 
1112         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1113         initExecution(gAction, bpmnRequest, true);
 
1114         execution.setVariable("requestUri",
 
1115                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1116         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1117         execution.setVariable("vfModuleId", "1234");
 
1119         VolumeGroup volumeGroup = new VolumeGroup();
 
1120         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1121         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1122                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1123         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1124         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1125         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1126                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1127         workflowAction.selectExecutionList(execution);
 
1128         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1130         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1131                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
 
1132                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1136     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
 
1138         String gAction = "replaceInstanceRetainAssignments";
 
1139         String resource = "VfModule";
 
1140         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1141         initExecution(gAction, bpmnRequest, true);
 
1142         execution.setVariable("requestUri",
 
1143                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1144         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1145         execution.setVariable("vfModuleId", "1234");
 
1147         VolumeGroup volumeGroup = new VolumeGroup();
 
1148         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1149         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1150                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1152         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1153         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1154         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1155                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1156         workflowAction.selectExecutionList(execution);
 
1157         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1159         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1160                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
1161                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1165     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
 
1166         String gAction = "replaceInstance";
 
1167         String resource = "VfModule";
 
1168         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1169         initExecution(gAction, bpmnRequest, true);
 
1170         execution.setVariable("requestUri",
 
1171                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1172         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1173         execution.setVariable("vfModuleId", "1234");
 
1175         VolumeGroup volumeGroup = new VolumeGroup();
 
1176         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1177         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1178                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1180         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1181         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1182         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1183         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1184         vfModuleCustomization.setVfModule(vfModule);
 
1185         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1186                 .thenReturn(vfModuleCustomization);
 
1188         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1189         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1190         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1191                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1192         workflowAction.selectExecutionList(execution);
 
1193         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1195         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1196                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1197                 "ChangeModelServiceInstanceBB");
 
1201     public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
 
1202         String gAction = "replaceInstance";
 
1203         String resource = "VfModule";
 
1204         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1205         initExecution(gAction, bpmnRequest, true);
 
1206         execution.setVariable("requestUri",
 
1207                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1208         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1209         execution.setVariable("vfModuleId", "1234");
 
1211         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1212         vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1213         vnf.setModelCustomizationId("modelCustomizationId");
 
1214         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1216         org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
 
1217         vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
 
1218         vfModuleFromAAI.setVfModuleId("1234");
 
1219         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
 
1221         VolumeGroup volumeGroup = new VolumeGroup();
 
1222         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1223         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1224                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1226         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1227         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1228         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1229         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1230         vfModuleCustomization.setVfModule(vfModule);
 
1231         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1232                 .thenReturn(vfModuleCustomization);
 
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(any(), any(), any(), any());
 
1240         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1241         configuration.setConfigurationId("configurationId");
 
1242         configuration.setModelCustomizationId("modelCustimizationId");
 
1243         configuration.setConfigurationName("testConfigurationName");
 
1244         doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
 
1246         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1247         northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
 
1248         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1249                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1250         SPY_workflowAction.selectExecutionList(execution);
 
1251         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1253         assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
 
1254                 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1255                 "AddFabricConfigurationBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1259     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1260         String gAction = "replaceInstanceRetainAssignments";
 
1261         String resource = "VfModule";
 
1262         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1263         initExecution(gAction, bpmnRequest, true);
 
1264         execution.setVariable("requestUri",
 
1265                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1266         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1267         execution.setVariable("vfModuleId", "1234");
 
1269         VolumeGroup volumeGroup = new VolumeGroup();
 
1270         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1271         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1272                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1274         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1275         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1276         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1277         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1278         vfModuleCustomization.setVfModule(vfModule);
 
1279         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1280                 .thenReturn(vfModuleCustomization);
 
1282         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1283         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1284         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1285                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1286         workflowAction.selectExecutionList(execution);
 
1287         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1289         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1290                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1294     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
 
1295         String gAction = "replaceInstance";
 
1296         String resource = "VfModule";
 
1297         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1298         initExecution(gAction, bpmnRequest, true);
 
1299         execution.setVariable("requestUri",
 
1300                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1301         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1302         execution.setVariable("vfModuleId", "1234");
 
1304         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1305         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1306         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1307         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1308         vfModuleCustomization.setVfModule(vfModule);
 
1309         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1310                 .thenReturn(vfModuleCustomization);
 
1312         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1313         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1314         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1315                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1316         workflowAction.selectExecutionList(execution);
 
1317         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1319         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1320                 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1321                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1325     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
 
1327         String gAction = "replaceInstanceRetainAssignments";
 
1328         String resource = "VfModule";
 
1329         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1330         initExecution(gAction, bpmnRequest, true);
 
1331         execution.setVariable("requestUri",
 
1332                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1333         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1334         execution.setVariable("vfModuleId", "1234");
 
1336         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1337         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1338         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1339         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1340         vfModuleCustomization.setVfModule(vfModule);
 
1341         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1342                 .thenReturn(vfModuleCustomization);
 
1344         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1345         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1346         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1347                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1348         workflowAction.selectExecutionList(execution);
 
1349         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1351         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
 
1352                 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
1353                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1357     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
 
1358         String gAction = "replaceInstance";
 
1359         String resource = "VfModule";
 
1360         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
 
1361         initExecution(gAction, bpmnRequest, true);
 
1362         execution.setVariable("requestUri",
 
1363                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1364         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1365         execution.setVariable("vfModuleId", "1234");
 
1367         VolumeGroup volumeGroup = new VolumeGroup();
 
1368         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1369         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1370                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1372         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1373         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1374         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1375         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1376         vfModuleCustomization.setVfModule(vfModule);
 
1377         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1378                 .thenReturn(vfModuleCustomization);
 
1380         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1381         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1382         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1383                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1384         workflowAction.selectExecutionList(execution);
 
1385         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1387         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1388                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
1389                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
1390                 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1394     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1395         String gAction = "replaceInstanceRetainAssignments";
 
1396         String resource = "VfModule";
 
1397         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
 
1398         initExecution(gAction, bpmnRequest, true);
 
1399         execution.setVariable("requestUri",
 
1400                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1401         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1402         execution.setVariable("vfModuleId", "1234");
 
1404         VolumeGroup volumeGroup = new VolumeGroup();
 
1405         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1406         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1407                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1409         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1410         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1411         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1412         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1413         vfModuleCustomization.setVfModule(vfModule);
 
1414         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1415                 .thenReturn(vfModuleCustomization);
 
1417         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1418         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1419         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1420                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1421         workflowAction.selectExecutionList(execution);
 
1422         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1424         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1425                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
 
1426                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1427                 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1432     public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
 
1433         String gAction = "deleteInstance";
 
1434         String resource = "VfModule";
 
1435         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1436         initExecution(gAction, bpmnRequest, true);
 
1437         execution.setVariable("requestUri",
 
1438                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1440         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1441         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1442                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1443         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1445         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1446                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1448         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1449         vnf.setVnfId("vnf0");
 
1450         vnf.setModelCustomizationId("modelCustomizationId");
 
1451         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1453         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1454         vfModule.setModelCustomizationId("modelCustomizationId");
 
1455         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1457         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1458         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1459         vnfc.setModelInvariantId("modelInvariantId");
 
1460         vnfc.setVnfcName("testVnfcName");
 
1462         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1465         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1466         configuration.setConfigurationId("configurationId");
 
1467         configuration.setModelCustomizationId("modelCustimizationId");
 
1468         configuration.setConfigurationName("testConfigurationName");
 
1469         doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1472         SPY_workflowAction.selectExecutionList(execution);
 
1473         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1474         assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
 
1475                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1479     public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
 
1480         String gAction = "deleteInstance";
 
1481         ObjectMapper mapper = new ObjectMapper();
 
1482         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1483         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1484         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1485         execution.setVariable("requestAction", gAction);
 
1486         execution.setVariable("bpmnRequest", bpmnRequest);
 
1487         execution.setVariable("vnfId", "1234");
 
1488         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1489         execution.setVariable("requestUri",
 
1490                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1491         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1492         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1493         String requestAction = "deleteInstance";
 
1494         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1495         boolean aLaCarte = true;
 
1496         String apiVersion = "7";
 
1497         String vnfType = "vnfType";
 
1498         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1499         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1500         Resource resourceKey = new Resource(resourceType, key, aLaCarte);
 
1501         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1503         thrown.expect(AAIEntityNotFoundException.class);
 
1504         thrown.expectMessage(containsString(
 
1505                 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
 
1507         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1508                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1510         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1511                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1512                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1513                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1515         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1516         vnf.setVnfId("vnf0");
 
1517         vnf.setModelCustomizationId("modelCustomizationId");
 
1518         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1520         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1521         vfModule.setModelCustomizationId("modelCustomizationId");
 
1522         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
 
1524         SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1528     public void getConfigBuildingBlocksTest() throws Exception {
 
1529         String gAction = "deleteInstance";
 
1530         ObjectMapper mapper = new ObjectMapper();
 
1531         mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
 
1533         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1534         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1535         execution.setVariable("requestAction", gAction);
 
1536         String bpmnRequest =
 
1537                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1538         execution.setVariable("bpmnRequest", bpmnRequest);
 
1539         execution.setVariable("vnfId", "1234");
 
1540         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1541         execution.setVariable("requestUri",
 
1542                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1543         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1544         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1545         String requestAction = "deleteInstance";
 
1546         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1547         boolean aLaCarte = true;
 
1548         String apiVersion = "7";
 
1549         String vnfType = "vnfType";
 
1550         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1551         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1552         Resource resourceKey = new Resource(resourceType, key, aLaCarte);
 
1553         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1555         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1556                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1558         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1559                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1560                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1561                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1563         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1564         vnf.setVnfId("vnf0");
 
1565         vnf.setModelCustomizationId("modelCustomizationId");
 
1566         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1568         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1569         vfModule.setModelCustomizationId("modelCustomizationId");
 
1571         org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
 
1572         config1.setConfigurationId("config1");
 
1573         org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
 
1574         config2.setConfigurationId("config2");
 
1576         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1577         org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
 
1578         vnfc1.setVnfcName("zauk53avetd02svm001");
 
1579         org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
 
1580         vnfc2.setVnfcName("zauk53avetd02tvm001");
 
1584         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
 
1585         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
 
1586                 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
 
1587         doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
 
1588                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1589         doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
 
1590                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1592         List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1594         assertFalse(results.isEmpty());
 
1595         assertEquals(2, results.size());
 
1596         assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
 
1597         assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
 
1598         assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
 
1599         assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
 
1603     public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
 
1604         String gAction = "deleteInstance";
 
1605         ObjectMapper mapper = new ObjectMapper();
 
1606         mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
 
1608         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1609         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1610         execution.setVariable("requestAction", gAction);
 
1611         String bpmnRequest =
 
1612                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1613         execution.setVariable("bpmnRequest", bpmnRequest);
 
1614         execution.setVariable("vnfId", "1234");
 
1615         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1616         execution.setVariable("requestUri",
 
1617                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1618         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1619         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1620         String requestAction = "deleteInstance";
 
1621         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1622         boolean aLaCarte = true;
 
1623         String apiVersion = "7";
 
1624         String vnfType = "vnfType";
 
1625         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1626         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1627         Resource resourceKey = new Resource(resourceType, key, aLaCarte);
 
1628         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1630         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1631                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1633         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1634                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1635                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1636                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1638         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1639         vnf.setVnfId("vnf0");
 
1640         vnf.setModelCustomizationId("modelCustomizationId");
 
1641         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1643         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1644         vfModule.setModelCustomizationId("modelCustomizationId");
 
1646         /* this is a test case where configuration for vnfc is null */
 
1647         org.onap.aai.domain.yang.Configuration config1 = null;
 
1648         org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
 
1649         config2.setConfigurationId("config2");
 
1651         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1652         org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
 
1653         vnfc1.setVnfcName("zauk53avetd02svm001");
 
1654         org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
 
1655         vnfc2.setVnfcName("zauk53avetd02tvm001");
 
1659         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
 
1660         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
 
1661                 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
 
1662         doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
 
1663                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1664         doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
 
1665                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1667         List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1669         assertFalse(results.isEmpty());
 
1670         assertEquals(1, results.size());
 
1671         assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
 
1672         assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
 
1676     public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
 
1677         String gAction = "deleteInstance";
 
1678         String resource = "VfModule";
 
1679         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1680         initExecution(gAction, bpmnRequest, true);
 
1681         execution.setVariable("requestUri",
 
1682                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1684         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1685         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1686                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1687         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1689         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1690                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1692         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1693         vnf.setVnfId("vnf0");
 
1694         vnf.setModelCustomizationId("modelCustomizationId");
 
1695         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1697         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1698         vfModule.setModelCustomizationId("modelCustomizationId");
 
1699         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1701         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1703         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1706         SPY_workflowAction.selectExecutionList(execution);
 
1707         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1708         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1712     public void selectExecutionListMacroResumeTest() throws Exception {
 
1713         String gAction = "createInstance";
 
1714         String resource = "Service";
 
1715         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
1716         initExecution(gAction, bpmnRequest, false);
 
1717         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
1719         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1720         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1721         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1723         Service service = new Service();
 
1724         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
1726         ServiceInstance si = new ServiceInstance();
 
1728         when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
 
1729         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1731         String flowsToExecuteString =
 
1732                 "[{\"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\"}}]";
 
1733         ObjectMapper om = new ObjectMapper();
 
1734         List<ExecuteBuildingBlock> flowsToExecute = null;
 
1736             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
1737             flowsToExecute = Arrays.asList(asArray);
 
1738         } catch (Exception e) {
 
1739             e.printStackTrace();
 
1742         when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
 
1744         workflowAction.selectExecutionList(execution);
 
1745         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1746         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
 
1750     public void getRelatedResourcesInVfModuleTest() throws Exception {
 
1751         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1752         vnfc.setModelInvariantId("modelInvariantId");
 
1753         vnfc.setVnfcName("testVnfcName");
 
1755         String vfncPayload =
 
1756                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
 
1757         AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
 
1759         String configurationPayload =
 
1760                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
 
1761         AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
 
1762         List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
 
1763         configurationResultWrappers.add(configurationWrapper);
 
1765         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
 
1766         when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
 
1768         doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
 
1770         org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
 
1771                 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
 
1772         assertEquals("testConfigurationId", configuration.getConfigurationId());
 
1776      * WorkflowActionBB Tests
 
1780     public void pluralTest() {
 
1781         List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
 
1782                 "networks, Network", "invalidNames, invalidNames");
 
1783         items.forEach(item -> {
 
1784             String[] split = item.split(",");
 
1785             String type = split[0].trim();
 
1786             String expected = split[1].trim();
 
1787             assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
 
1792     public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
 
1793         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1795         BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
 
1796         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
 
1797         executeFlows.add(ebb);
 
1799         BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
 
1800         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
 
1801         executeFlows.add(ebb2);
 
1803         BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
 
1804         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
 
1805         executeFlows.add(ebb3);
 
1807         BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
 
1808         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
 
1809         executeFlows.add(ebb4);
 
1811         BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
 
1812         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
 
1813         executeFlows.add(ebb5);
 
1815         BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
 
1816         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
 
1817         executeFlows.add(ebb6);
 
1819         List<ExecuteBuildingBlock> sorted =
 
1820                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
 
1821         assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
 
1822                 "CreateNetworkBB", "ActivateNetworkBB");
 
1826     public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
 
1827         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1829         BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
 
1830         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
 
1831         executeFlows.add(ebb);
 
1833         BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
 
1834         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
 
1835         executeFlows.add(ebb2);
 
1837         BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
 
1838         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
 
1839         executeFlows.add(ebb3);
 
1841         BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
 
1842         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
 
1843         executeFlows.add(ebb4);
 
1845         BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
 
1846         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
 
1847         executeFlows.add(ebb5);
 
1849         BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
 
1850         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
 
1851         executeFlows.add(ebb6);
 
1853         List<ExecuteBuildingBlock> sorted =
 
1854                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
 
1855         assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1856                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
 
1860     public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
 
1861         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1862         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
1863                 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
1864         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1865         List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1866                 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
 
1868         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
 
1869                 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1870         when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
 
1871         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
 
1872                 WorkflowType.VNF, false, "my-custom-cloud-owner");
 
1873         assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
 
1874         assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
 
1875         assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
 
1876         assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
 
1877         assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
 
1878         assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
 
1879         assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
 
1880         assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
 
1881         assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
 
1882         assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
 
1886     public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
 
1887         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1888         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1889         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1890         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
 
1891                 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
 
1893         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
 
1894                 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
 
1895         assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
 
1899     public void extractResourceIdAndTypeFromUriTest() {
 
1900         String uri = "/v6/serviceInstances/123";
 
1901         String uri2 = "/v6/serviceInstances/123/vnfs/1234";
 
1902         String uri3 = "/v6/serviceInstances";
 
1903         String uri4 = "/v6/serviceInstances/assign";
 
1904         String uri5 = "'/v6/serviceInstances/123/vnfs";
 
1905         String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
 
1906         String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
 
1907         String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
 
1908         Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
 
1909         Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
 
1910         Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
 
1911         Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
 
1912         Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
 
1913         assertEquals(expected1.getResourceId(), result.getResourceId());
 
1914         assertEquals(expected1.getResourceType(), result.getResourceType());
 
1915         result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
 
1916         assertEquals(expected2.getResourceId(), result.getResourceId());
 
1917         assertEquals(expected2.getResourceType(), result.getResourceType());
 
1918         result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
 
1919         assertEquals("Service", result.getResourceType().toString());
 
1920         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1921         result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
 
1922         assertEquals("Service", result.getResourceType().toString());
 
1923         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1924         result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
 
1925         assertEquals("Vnf", result.getResourceType().toString());
 
1926         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1927         result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
 
1928         assertEquals(expected3.getResourceId(), result.getResourceId());
 
1929         assertEquals(expected3.getResourceType(), result.getResourceType());
 
1930         result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
 
1931         assertEquals(expected4.getResourceId(), result.getResourceId());
 
1932         assertEquals(expected4.getResourceType(), result.getResourceType());
 
1933         result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
 
1934         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1935         assertEquals("VfModule", result.getResourceType().toString());
 
1940     public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
 
1941         this.expectedException.expect(IllegalArgumentException.class);
 
1942         this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
 
1943         workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
 
1947     public void extractResourceIdAndTypeFromUriInvalidUriTest() {
 
1948         this.expectedException.expect(IllegalArgumentException.class);
 
1949         this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
 
1950         workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
 
1954     public void extractResourceIdAndTypeFromUriResumeTest() {
 
1955         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1956                 "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");
 
1957         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1961     public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
 
1962         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1963                 "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");
 
1964         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1968     public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
 
1969         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1970                 "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");
 
1971         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1975     public void extractResourceIdAndTypeFromUriResumeIdOnly() {
 
1976         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1977                 "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");
 
1978         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1982     public void isUriResumeTest() {
 
1983         assertTrue(workflowAction.isUriResume(
 
1984                 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
 
1985         assertTrue(workflowAction.isUriResume(
 
1986                 "        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"));
 
1988         assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
 
1992     public void isRequestMacroServiceResumeTest() {
 
1993         ServiceInstance si = new ServiceInstance();
 
1994         when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
 
1995         assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
 
1996         assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
 
2000     public void populateResourceIdsFromApiHandlerTest() {
 
2001         execution.setVariable("serviceInstanceId", "123");
 
2002         execution.setVariable("vnfId", "888");
 
2003         WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
 
2004         assertEquals("123", x.getServiceInstanceId());
 
2005         assertEquals("888", x.getVnfId());
 
2006         assertNull(x.getVolumeGroupId());
 
2009     private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
 
2010             String modelCustomizationId) {
 
2011         RequestDetails reqDetails = new RequestDetails();
 
2012         SubscriberInfo subInfo = new SubscriberInfo();
 
2013         subInfo.setGlobalSubscriberId(globalSubscriberId);
 
2014         reqDetails.setSubscriberInfo(subInfo);
 
2015         RequestParameters reqParams = new RequestParameters();
 
2016         reqParams.setSubscriptionServiceType(subscriptionServiceType);
 
2017         reqDetails.setRequestParameters(reqParams);
 
2018         ModelInfo modelInfo = new ModelInfo();
 
2019         modelInfo.setModelCustomizationId(modelCustomizationId);
 
2020         reqDetails.setModelInfo(modelInfo);
 
2025     public void validateResourceIdInAAIVnfTest() throws Exception {
 
2026         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2027         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2028         workflowResourceIds.setServiceInstanceId("siId123");
 
2030         GenericVnf vnf = new GenericVnf();
 
2031         vnf.setVnfId("id123");
 
2032         vnf.setVnfName("vnfName123");
 
2033         vnf.setModelCustomizationId("1234567");
 
2034         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
2035         GenericVnf vnf2 = new GenericVnf();
 
2036         vnf2.setVnfId("id123");
 
2037         vnf2.setVnfName("vnfName222");
 
2038         vnf2.setModelCustomizationId("222");
 
2039         Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
 
2040         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
2041         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
 
2042         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
2043         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
 
2044                 workflowResourceIds);
 
2045         assertEquals("id123", id);
 
2046         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
 
2047                 workflowResourceIds);
 
2048         assertEquals("generatedId123", id2);
 
2050         this.expectedException.expect(DuplicateNameException.class);
 
2051         this.expectedException.expectMessage(containsString(
 
2052                 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
 
2053         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
 
2054                 workflowResourceIds);
 
2058     public void validateResourceIdInAAIVnfNotGloballyUniqueTest() throws Exception {
 
2059         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2060         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2061         workflowResourceIds.setServiceInstanceId("siId123");
 
2064         GenericVnfs genericVnfs = new GenericVnfs();
 
2065         GenericVnf vnf3 = new GenericVnf();
 
2066         vnf3.setVnfId("id123");
 
2067         vnf3.setVnfName("vnfName333");
 
2068         genericVnfs.getGenericVnf().add(vnf3);
 
2069         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
 
2070         when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
 
2072         this.expectedException.expect(DuplicateNameException.class);
 
2073         this.expectedException.expectMessage(containsString(
 
2074                 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
 
2075         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
 
2076                 workflowResourceIds);
 
2080     public void validateResourceIdInAAINetworkTest() throws Exception {
 
2081         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2082         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2083         workflowResourceIds.setServiceInstanceId("siId123");
 
2086         L3Network network = new L3Network();
 
2087         network.setNetworkId("id123");
 
2088         network.setNetworkName("name123");
 
2089         network.setModelCustomizationId("1234567");
 
2090         workflowResourceIds.setServiceInstanceId("siId123");
 
2091         Optional<L3Network> opNetwork = Optional.of(network);
 
2092         L3Network network2 = new L3Network();
 
2093         network2.setNetworkId("id123");
 
2094         network2.setNetworkName("networkName222");
 
2095         network2.setModelCustomizationId("222");
 
2096         Optional<L3Network> opNetwork2 = Optional.of(network2);
 
2097         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2098         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
 
2099                 .thenReturn(opNetwork2);
 
2100         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
2101         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
 
2102                 reqDetails, workflowResourceIds);
 
2103         assertEquals("id123", id);
 
2104         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
 
2105                 reqDetails, workflowResourceIds);
 
2106         assertEquals("generatedId123", id2);
 
2108         this.expectedException.expect(DuplicateNameException.class);
 
2109         this.expectedException.expectMessage(containsString(
 
2110                 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
 
2111         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
 
2112                 workflowResourceIds);
 
2116     public void validateNetworkResourceNameExistsInAAITest() throws Exception {
 
2117         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2118         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2119         workflowResourceIds.setServiceInstanceId("siId123");
 
2122         L3Network network = new L3Network();
 
2123         network.setNetworkId("id123");
 
2124         network.setNetworkName("name123");
 
2125         network.setModelCustomizationId("1234567");
 
2126         workflowResourceIds.setServiceInstanceId("siId123");
 
2128         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
 
2129                 .thenReturn(Optional.empty());
 
2130         when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
 
2132         this.expectedException.expect(DuplicateNameException.class);
 
2133         this.expectedException.expectMessage(containsString(
 
2134                 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
 
2135         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
 
2136                 workflowResourceIds);
 
2140     public void validateResourceIdInAAIVfModuleTest() throws Exception {
 
2141         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2142         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2143         workflowResourceIds.setServiceInstanceId("siId123");
 
2145         GenericVnf vnf = new GenericVnf();
 
2146         vnf.setVnfId("id123");
 
2147         vnf.setVnfName("vnfName123");
 
2148         vnf.setModelCustomizationId("222");
 
2151         VfModules vfModules = new VfModules();
 
2152         VfModule vfModule = new VfModule();
 
2153         vfModule.setVfModuleId("id123");
 
2154         vfModule.setVfModuleName("name123");
 
2155         vfModule.setModelCustomizationId("1234567");
 
2156         vfModules.getVfModule().add(vfModule);
 
2157         vnf.setVfModules(vfModules);
 
2158         workflowResourceIds.setVnfId("id123");
 
2159         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2160         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
 
2161                 reqDetails, workflowResourceIds);
 
2162         assertEquals("id123", id);
 
2164         GenericVnf vnf1 = new GenericVnf();
 
2165         VfModules vfModules2 = new VfModules();
 
2166         VfModule vfModule2 = new VfModule();
 
2167         vfModule2.setVfModuleId("id123");
 
2168         vfModule2.setVfModuleName("vFModName222");
 
2169         vfModule2.setModelCustomizationId("222");
 
2170         vfModules2.getVfModule().add(vfModule2);
 
2171         vnf1.setVfModules(vfModules2);
 
2172         workflowResourceIds.setVnfId("id111");
 
2173         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
2174         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
 
2175                 reqDetails, workflowResourceIds);
 
2176         assertEquals("generatedId123", id2);
 
2178         this.expectedException.expect(DuplicateNameException.class);
 
2179         this.expectedException.expectMessage(containsString(
 
2180                 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
 
2181         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
 
2182                 workflowResourceIds);
 
2186     public void validateResourceIdInAAIVfModuleNotGloballyUniqueTest() throws Exception {
 
2187         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2188         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2189         workflowResourceIds.setVnfId("id111");
 
2191         GenericVnf vnf1 = new GenericVnf();
 
2192         workflowResourceIds.setVnfId("id111");
 
2193         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
2195         when(bbSetupUtils.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
 
2196         this.expectedException.expect(DuplicateNameException.class);
 
2197         this.expectedException.expectMessage(
 
2198                 containsString("vfModule with name vFModName333 already exists. The name must be unique."));
 
2199         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
 
2200                 workflowResourceIds);
 
2204     public void validateResourceIdInAAIVolumeGroupTest() throws Exception {
 
2205         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2206         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2207         workflowResourceIds.setServiceInstanceId("siId123");
 
2209         GenericVnf vnf = new GenericVnf();
 
2210         vnf.setVnfId("id123");
 
2211         vnf.setVnfName("vnfName123");
 
2212         vnf.setModelCustomizationId("1234567");
 
2214         GenericVnf vnf2 = new GenericVnf();
 
2215         vnf2.setVnfId("id123");
 
2216         vnf2.setVnfName("vnfName123");
 
2217         vnf2.setModelCustomizationId("222");
 
2220         VolumeGroup volumeGroup = new VolumeGroup();
 
2221         volumeGroup.setVolumeGroupId("id123");
 
2222         volumeGroup.setVolumeGroupName("name123");
 
2223         volumeGroup.setVfModuleModelCustomizationId("1234567");
 
2224         workflowResourceIds.setVnfId("id123");
 
2225         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2227         workflowResourceIds.setVnfId("id123");
 
2229         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2230         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
 
2231         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
 
2232                 reqDetails, workflowResourceIds);
 
2233         assertEquals("id123", id);
 
2235         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
 
2236         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
 
2237                 .thenReturn(opVolumeGroup);
 
2239         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
 
2240         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
 
2241                 reqDetails, workflowResourceIds);
 
2242         assertEquals("generatedId123", id2);
 
2246     public void validatesourceIdInAAIVolumeGroupNotGloballyUniqueTest() throws Exception {
 
2247         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2248         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2249         workflowResourceIds.setVnfId("id123");
 
2250         GenericVnf vnf = new GenericVnf();
 
2251         vnf.setVnfId("id123");
 
2252         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2253         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "testVolumeGroup")).thenReturn(Optional.empty());
 
2255         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
 
2256         this.expectedException.expect(DuplicateNameException.class);
 
2257         this.expectedException.expectMessage(
 
2258                 containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
 
2259         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup",
 
2260                 reqDetails, workflowResourceIds);
 
2264     public void validateResourceIdInAAIConfigurationTest() throws Exception {
 
2265         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2266         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2267         workflowResourceIds.setServiceInstanceId("siId123");
 
2270         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2271         configuration.setConfigurationId("id123");
 
2272         configuration.setConfigurationName("name123");
 
2273         configuration.setModelCustomizationId("1234567");
 
2274         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2276         org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
 
2277         configuration2.setConfigurationId("id123");
 
2278         configuration2.setConfigurationName("name123");
 
2279         configuration2.setModelCustomizationId("222");
 
2280         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
 
2282         workflowResourceIds.setVnfId("id123");
 
2284         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2285                 .thenReturn(opConfiguration);
 
2286         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
 
2287                 reqDetails, workflowResourceIds);
 
2288         assertEquals("id123", id);
 
2290         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
 
2291                 .thenReturn(Optional.empty());
 
2292         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
 
2293                 reqDetails, workflowResourceIds);
 
2294         assertEquals("generatedId123", id2);
 
2296         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
 
2297                 .thenReturn(opConfiguration2);
 
2298         this.expectedException.expect(DuplicateNameException.class);
 
2299         this.expectedException.expectMessage(containsString(
 
2300                 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
 
2301         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
 
2302                 workflowResourceIds);
 
2306     public void validateResourceIdInAAIConfigurationNotGloballyUniqueTest() throws Exception {
 
2307         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2308         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2309         workflowResourceIds.setServiceInstanceId("siId123");
 
2311         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "testConfig"))
 
2312                 .thenReturn(Optional.empty());
 
2313         when(bbSetupUtils.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
 
2314         this.expectedException.expect(DuplicateNameException.class);
 
2315         this.expectedException.expectMessage(
 
2316                 containsString("configuration with name testConfig already exists. The name must be unique."));
 
2317         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
 
2318                 workflowResourceIds);
 
2322     public void validateResourceIdInAAISITest() throws Exception {
 
2323         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2324         workflowResourceIds.setServiceInstanceId("siId123");
 
2325         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2326         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2328         ServiceInstance si = new ServiceInstance();
 
2329         si.setServiceInstanceId("siId123");
 
2330         si.setModelVersionId("1234567");
 
2331         ServiceInstances serviceInstances = new ServiceInstances();
 
2332         serviceInstances.getServiceInstance().add(si);
 
2333         Optional<ServiceInstance> siOp = Optional.of(si);
 
2334         ServiceInstance si2 = new ServiceInstance();
 
2335         si2.setServiceInstanceId("siId222");
 
2336         si2.setModelVersionId("22222");
 
2337         si2.setServiceInstanceName("siName222");
 
2338         Optional<ServiceInstance> siOp2 = Optional.of(si2);
 
2339         ServiceInstances serviceInstances2 = new ServiceInstances();
 
2340         serviceInstances2.getServiceInstance().add(si2);
 
2342         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2343         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
 
2344         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
 
2345                 .thenReturn(Optional.empty());
 
2347         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2348         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
 
2349                 reqDetails, workflowResourceIds);
 
2350         assertEquals("siId123", id);
 
2351         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
 
2352                 reqDetails, workflowResourceIds);
 
2353         assertEquals("generatedId123", id2);
 
2355         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
 
2356         this.expectedException.expect(DuplicateNameException.class);
 
2357         this.expectedException.expectMessage(containsString(
 
2358                 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
 
2359         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
 
2360                 workflowResourceIds);
 
2364     public void validateResourceIdInAAIMultipleSITest() throws Exception {
 
2365         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2366         workflowResourceIds.setServiceInstanceId("siId123");
 
2367         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2368         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2370         ServiceInstance si = new ServiceInstance();
 
2371         si.setServiceInstanceId("siId123");
 
2372         si.setModelVersionId("1234567");
 
2373         ServiceInstances serviceInstances = new ServiceInstances();
 
2374         serviceInstances.getServiceInstance().add(si);
 
2376         ServiceInstance si2 = new ServiceInstance();
 
2377         si2.setServiceInstanceId("siId222");
 
2378         si2.setModelVersionId("22222");
 
2379         si2.setServiceInstanceName("siName222");
 
2380         serviceInstances.getServiceInstance().add(si2);
 
2382         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
2383                 .thenReturn(Optional.empty());
 
2385         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2387         this.expectedException.expect(DuplicateNameException.class);
 
2388         this.expectedException.expectMessage(containsString(
 
2389                 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
 
2390         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
2391                 workflowResourceIds);
 
2395     public void validateResourceIdInAAISIExistsTest() throws Exception {
 
2396         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2397         workflowResourceIds.setServiceInstanceId("siId123");
 
2398         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2399         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2401         ServiceInstance si = new ServiceInstance();
 
2402         si.setServiceInstanceId("siId123");
 
2403         si.setModelVersionId("1234567");
 
2404         ServiceInstances serviceInstances = new ServiceInstances();
 
2405         serviceInstances.getServiceInstance().add(si);
 
2407         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
2408                 .thenReturn(Optional.empty());
 
2410         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2412         Map<String, String> uriKeys = new HashMap<>();
 
2413         uriKeys.put(AAIFluentTypeBuilder.Types.CUSTOMER.getUriParams().globalCustomerId, "globalCustomerId");
 
2414         uriKeys.put(AAIFluentTypeBuilder.Types.SERVICE_SUBSCRIPTION.getUriParams().serviceType, "serviceType");
 
2416         when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
 
2418         this.expectedException.expect(DuplicateNameException.class);
 
2419         this.expectedException.expectMessage(containsString(
 
2420                 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
 
2421         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
2422                 workflowResourceIds);
 
2426     public void validateServiceResourceIdInAAINoDupTest() throws Exception {
 
2427         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2428         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2429         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
 
2430                 .thenReturn(Optional.empty());
 
2431         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(null);
 
2432         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2433         assertEquals("generatedId123", id);
 
2437     public void validateServiceResourceIdInAAISameModelVersionId() throws Exception {
 
2438         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2439         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2441         ServiceInstance si = new ServiceInstance();
 
2442         si.setServiceInstanceId("siId123");
 
2443         si.setModelVersionId("1234567");
 
2444         Optional<ServiceInstance> siOp = Optional.of(si);
 
2446         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2447         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2448         assertEquals("siId123", id);
 
2452     public void validateServiceResourceIdInAAIDifferentModelVersionId() throws Exception {
 
2453         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2454         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2456         ServiceInstance si = new ServiceInstance();
 
2457         si.setServiceInstanceId("siId123");
 
2458         si.setModelVersionId("9999999");
 
2459         ServiceInstances serviceInstances = new ServiceInstances();
 
2460         serviceInstances.getServiceInstance().add(si);
 
2461         Optional<ServiceInstance> siOp = Optional.of(si);
 
2463         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2465         this.expectedException.expect(DuplicateNameException.class);
 
2466         this.expectedException.expectMessage(containsString(
 
2467                 "serviceInstance with name (siName123) and different version id (1234567) already exists. The name must be unique."));
 
2469         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2470         assertEquals("siId123", id);
 
2474     public void validateServiceResourceIdInAAIDuplicateNameTest() throws Exception {
 
2476         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2477         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2479         ServiceInstance si = new ServiceInstance();
 
2480         si.setServiceInstanceId("siId123");
 
2481         si.setModelVersionId("1234567");
 
2483         ServiceInstances serviceInstances = new ServiceInstances();
 
2484         serviceInstances.getServiceInstance().add(si);
 
2486         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
 
2487                 .thenReturn(Optional.empty());
 
2488         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
 
2490         this.expectedException.expect(DuplicateNameException.class);
 
2491         this.expectedException.expectMessage(containsString(
 
2492                 "serviceInstance with name (siName) and global-customer-id (null), service-type (null), model-version-id (1234567) already exists. The name must be unique."));
 
2494         workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
 
2498     public void validateServiceResourceIdInAAIDuplicateNameMultipleTest() throws Exception {
 
2500         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2501         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2503         ServiceInstance si = new ServiceInstance();
 
2504         si.setServiceInstanceId("siId123");
 
2505         si.setModelVersionId("1234567");
 
2507         ServiceInstance si2 = new ServiceInstance();
 
2508         si2.setServiceInstanceId("siId222");
 
2509         si2.setModelVersionId("22222");
 
2510         si2.setServiceInstanceName("siName222");
 
2512         ServiceInstances serviceInstances = new ServiceInstances();
 
2513         serviceInstances.getServiceInstance().add(si);
 
2514         serviceInstances.getServiceInstance().add(si2);
 
2516         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
 
2517                 .thenReturn(Optional.empty());
 
2518         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
 
2520         this.expectedException.expect(DuplicateNameException.class);
 
2521         this.expectedException.expectMessage(containsString(
 
2522                 "serviceInstance with name (siName) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
 
2524         workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
 
2528     public void validateNetworkResourceIdInAAITest() throws Exception {
 
2529         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2530         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2531         workflowResourceIds.setServiceInstanceId("siId123");
 
2533         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
 
2534                 .thenReturn(Optional.empty());
 
2535         when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(false);
 
2537         String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2538                 workflowResourceIds);
 
2539         assertEquals("generatedId123", id);
 
2543     public void validateNetworkResourceIdInAAISameModelCustIdTest() throws Exception {
 
2544         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2545         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2546         workflowResourceIds.setServiceInstanceId("siId123");
 
2548         L3Network network = new L3Network();
 
2549         network.setNetworkId("id123");
 
2550         network.setNetworkName("name123");
 
2551         network.setModelCustomizationId("1234567");
 
2552         Optional<L3Network> opNetwork = Optional.of(network);
 
2554         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2556         String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2557                 workflowResourceIds);
 
2558         assertEquals("id123", id);
 
2562     public void validateNetworkResourceIdInAAIDuplicateNameTest() throws Exception {
 
2563         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2564         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2565         workflowResourceIds.setServiceInstanceId("siId123");
 
2567         L3Network network = new L3Network();
 
2568         network.setNetworkId("id123");
 
2569         network.setNetworkName("name123");
 
2570         network.setModelCustomizationId("9999999");
 
2571         Optional<L3Network> opNetwork = Optional.of(network);
 
2573         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2575         this.expectedException.expect(DuplicateNameException.class);
 
2576         this.expectedException.expectMessage(containsString(
 
2577                 "l3Network with name (name123), same parent and different customization id (9999999) already exists. The name must be unique."));
 
2579         workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2583     public void validateNetworkResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2584         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2585         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2586         workflowResourceIds.setServiceInstanceId("siId123");
 
2588         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
 
2589                 .thenReturn(Optional.empty());
 
2590         when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(true);
 
2592         this.expectedException.expect(DuplicateNameException.class);
 
2593         this.expectedException.expectMessage(containsString(
 
2594                 "l3Network with name (name123) id (siId123) and different parent relationship already exists. The name must be unique."));
 
2596         workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2600     public void validateVnfResourceIdInAAITest() throws Exception {
 
2601         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2602         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2603         workflowResourceIds.setServiceInstanceId("siId123");
 
2604         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
 
2605         String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
 
2606                 workflowResourceIds);
 
2607         assertEquals("generatedId123", id);
 
2611     public void validateVnfResourceIdInAAISameModelCustomizationIdTest() throws Exception {
 
2612         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2613         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2614         workflowResourceIds.setServiceInstanceId("siId123");
 
2616         GenericVnf vnf = new GenericVnf();
 
2617         vnf.setVnfId("id123");
 
2618         vnf.setVnfName("vnfName123");
 
2619         vnf.setModelCustomizationId("1234567");
 
2620         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
2622         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
2623         String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
 
2624                 workflowResourceIds);
 
2625         assertEquals("id123", id);
 
2629     public void validateVnfResourceIdInAAIDiffModelCustomizationIdTest() throws Exception {
 
2630         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2631         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2632         workflowResourceIds.setServiceInstanceId("siId123");
 
2634         GenericVnf vnf = new GenericVnf();
 
2635         vnf.setVnfId("id123");
 
2636         vnf.setVnfName("vnfName123");
 
2637         vnf.setModelCustomizationId("9999999");
 
2638         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
2640         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
2642         this.expectedException.expect(DuplicateNameException.class);
 
2643         this.expectedException.expectMessage(containsString(
 
2644                 "generic-vnf with name (vnfName123), same parent and different customization id (9999999) already exists. The name must be unique."));
 
2646         workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
 
2650     public void validateVnfResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2651         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2652         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2653         workflowResourceIds.setServiceInstanceId("siId123");
 
2656         GenericVnf vnf = new GenericVnf();
 
2657         vnf.setVnfId("id123");
 
2658         vnf.setVnfName("vnfName123");
 
2659         GenericVnfs genericVnfs = new GenericVnfs();
 
2660         genericVnfs.getGenericVnf().add(vnf);
 
2662         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
 
2663         when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName123")).thenReturn(genericVnfs);
 
2665         this.expectedException.expect(DuplicateNameException.class);
 
2666         this.expectedException.expectMessage(containsString(
 
2667                 "generic-vnf with name (vnfName123) id (id123) and different parent relationship already exists. The name must be unique."));
 
2669         workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
 
2673     public void validateVfModuleResourceIdTest() throws Exception {
 
2674         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2675         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2676         workflowResourceIds.setVnfId("vnfId123");
 
2678         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
 
2679         when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(false);
 
2681         String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2682                 workflowResourceIds);
 
2683         assertEquals("generatedId123", id);
 
2687     public void validateVfModuleResourceIdSameModelCustIdTest() throws Exception {
 
2688         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2689         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2690         workflowResourceIds.setVnfId("vnfId123");
 
2692         VfModules vfModules = new VfModules();
 
2693         VfModule vfModule = new VfModule();
 
2694         vfModule.setVfModuleId("id123");
 
2695         vfModule.setVfModuleName("name123");
 
2696         vfModule.setModelCustomizationId("1234567");
 
2697         vfModules.getVfModule().add(vfModule);
 
2699         GenericVnf vnf = new GenericVnf();
 
2700         vnf.setVnfId("id123");
 
2701         vnf.setVnfName("vnfName123");
 
2702         vnf.setVfModules(vfModules);
 
2704         when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
 
2706         String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2707                 workflowResourceIds);
 
2708         assertEquals("id123", id);
 
2712     public void validateVfModuleResourceIdDifferentModelCustIdTest() throws Exception {
 
2713         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2714         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2715         workflowResourceIds.setVnfId("vnfId123");
 
2717         VfModules vfModules = new VfModules();
 
2718         VfModule vfModule = new VfModule();
 
2719         vfModule.setVfModuleId("id123");
 
2720         vfModule.setVfModuleName("name123");
 
2721         vfModule.setModelCustomizationId("9999999");
 
2722         vfModules.getVfModule().add(vfModule);
 
2724         GenericVnf vnf = new GenericVnf();
 
2725         vnf.setVnfId("id123");
 
2726         vnf.setVnfName("vnfName123");
 
2727         vnf.setVfModules(vfModules);
 
2729         when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
 
2731         this.expectedException.expect(DuplicateNameException.class);
 
2732         this.expectedException.expectMessage(containsString(
 
2733                 "vfModule with name (name123), same parent and different customization id (1234567) already exists. The name must be unique."));
 
2735         workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2740     public void validateVfModuleResourceIdNotGloballyUniqueTest() throws Exception {
 
2741         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2742         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2743         workflowResourceIds.setVnfId("vnfId123");
 
2745         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
 
2746         when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(true);
 
2748         this.expectedException.expect(DuplicateNameException.class);
 
2749         this.expectedException
 
2750                 .expectMessage(containsString("vfModule with name name123 already exists. The name must be unique."));
 
2752         workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2756     public void validateVolumeGroupResourceIdInAAITest() throws Exception {
 
2757         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2758         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2759         workflowResourceIds.setVnfId("vnfId123");
 
2761         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(Optional.empty());
 
2762         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(false);
 
2764         String id = workflowAction.validateVolumeGroupResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2765                 workflowResourceIds);
 
2766         assertEquals("generatedId123", id);
 
2770     public void validateVolumeGroupResourceIdInAAISameModelCustIdTest() throws Exception {
 
2771         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2772         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2773         workflowResourceIds.setServiceInstanceId("siId123");
 
2774         workflowResourceIds.setVnfId("vnfId123");
 
2776         VolumeGroup volumeGroup = new VolumeGroup();
 
2777         volumeGroup.setVolumeGroupId("id123");
 
2778         volumeGroup.setVolumeGroupName("name123");
 
2779         volumeGroup.setVfModuleModelCustomizationId("1234567");
 
2781         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2783         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
 
2784         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
 
2785                 reqDetails, workflowResourceIds);
 
2787         assertEquals("id123", id);
 
2791     public void validateVolumeGroupResourceIdInAAIDifferentModelCustIdTest() throws Exception {
 
2792         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2793         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2794         workflowResourceIds.setServiceInstanceId("siId123");
 
2795         workflowResourceIds.setVnfId("vnfId123");
 
2797         VolumeGroup volumeGroup = new VolumeGroup();
 
2798         volumeGroup.setVolumeGroupId("id123");
 
2799         volumeGroup.setVolumeGroupName("name123");
 
2800         volumeGroup.setVfModuleModelCustomizationId("9999999");
 
2802         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2804         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
 
2806         this.expectedException.expect(DuplicateNameException.class);
 
2807         this.expectedException.expectMessage(
 
2808                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
 
2810         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
 
2811                 workflowResourceIds);
 
2815     public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2816         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2817         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2818         workflowResourceIds.setVnfId("vnfId123");
 
2820         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(Optional.empty());
 
2821         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(true);
 
2823         this.expectedException.expect(DuplicateNameException.class);
 
2824         this.expectedException.expectMessage(
 
2825                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
 
2827         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
 
2828                 workflowResourceIds);
 
2832     public void validateConfigurationResourceIdInAAITest() throws Exception {
 
2833         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2834         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2835         workflowResourceIds.setServiceInstanceId("siId123");
 
2837         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2838                 .thenReturn(Optional.empty());
 
2839         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2841         String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2842                 workflowResourceIds);
 
2843         assertEquals("generatedId123", id);
 
2847     public void validateConfigurationResourceIdInAAISameModelCustIdTest() throws Exception {
 
2848         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2849         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2850         workflowResourceIds.setServiceInstanceId("siId123");
 
2852         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2853         configuration.setConfigurationId("id123");
 
2854         configuration.setConfigurationName("name123");
 
2855         configuration.setModelCustomizationId("1234567");
 
2856         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2858         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2859                 .thenReturn(opConfiguration);
 
2860         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2862         String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2863                 workflowResourceIds);
 
2864         assertEquals("id123", id);
 
2868     public void validateConfigurationResourceIdInAAIDifferentModelCustIdTest() throws Exception {
 
2869         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2870         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2871         workflowResourceIds.setServiceInstanceId("siId123");
 
2873         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2874         configuration.setConfigurationId("id123");
 
2875         configuration.setConfigurationName("name123");
 
2876         configuration.setModelCustomizationId("9999999");
 
2877         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2879         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2880                 .thenReturn(opConfiguration);
 
2881         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2883         this.expectedException.expect(DuplicateNameException.class);
 
2884         this.expectedException.expectMessage(containsString(
 
2885                 "configuration with name (name123), same parent and different customization id (id123) already exists. The name must be unique."));
 
2887         workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2888                 workflowResourceIds);
 
2892     public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2893         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2894         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2895         workflowResourceIds.setServiceInstanceId("siId123");
 
2897         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2898                 .thenReturn(Optional.empty());
 
2899         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(true);
 
2901         this.expectedException.expect(DuplicateNameException.class);
 
2902         this.expectedException.expectMessage(
 
2903                 containsString("configuration with name name123 already exists. The name must be unique."));
 
2905         workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2906                 workflowResourceIds);
 
2910     public void handleRuntimeExceptionTest() {
 
2911         execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
 
2912         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2914             workflowAction.handleRuntimeException(execution);
 
2915         } catch (BpmnError wfe) {
 
2916             assertEquals("MSOWorkflowException", wfe.getErrorCode());
 
2922     public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
 
2923         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2924         Service service = new Service();
 
2925         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
2926         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
2927         networkCust.setModelCustomizationUUID("123");
 
2928         networkCustomizations.add(networkCust);
 
2929         service.setNetworkCustomizations(networkCustomizations);
 
2930         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
2931                 new NetworkCollectionResourceCustomization();
 
2932         collectionResourceCustomization.setModelCustomizationUUID("123");
 
2933         CollectionResource collectionResource = new CollectionResource();
 
2934         collectionResource.setToscaNodeType("NetworkCollection");
 
2935         InstanceGroup instanceGroup = new InstanceGroup();
 
2936         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
2937         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
2938                 new CollectionResourceInstanceGroupCustomization();
 
2939         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
2940         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
2941         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
2942         collectionResource.setInstanceGroup(instanceGroup);
 
2943         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
2944         service.setModelUUID("abc");
 
2945         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2946         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2947         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
2948         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
2949                 .getNetworkCollectionResourceCustomizationByID("123");
 
2950         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
2951         ObjectMapper mapper = new ObjectMapper();
 
2952         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
2953         List<Resource> resourceCounter = new ArrayList<>();
 
2954         thrown.expect(BpmnError.class);
 
2955         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
2956         workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
 
2960     public void sortVfModulesByBaseFirstTest() {
 
2961         List<Resource> resources = new ArrayList<>();
 
2962         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2963         resource1.setBaseVfModule(false);
 
2964         resources.add(resource1);
 
2965         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2966         resource2.setBaseVfModule(false);
 
2967         resources.add(resource2);
 
2968         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2969         resource3.setBaseVfModule(true);
 
2970         resources.add(resource3);
 
2971         List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
 
2972         assertEquals("333", result.get(0).getResourceId());
 
2973         assertEquals("222", result.get(1).getResourceId());
 
2974         assertEquals("111", result.get(2).getResourceId());
 
2978     public void sortVfModulesByBaseLastTest() {
 
2979         List<Resource> resources = new ArrayList<>();
 
2980         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2981         resource1.setBaseVfModule(true);
 
2982         resources.add(resource1);
 
2983         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2984         resource2.setBaseVfModule(false);
 
2985         resources.add(resource2);
 
2986         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2987         resource3.setBaseVfModule(false);
 
2988         resources.add(resource3);
 
2989         List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
 
2990         assertEquals("333", result.get(0).getResourceId());
 
2991         assertEquals("222", result.get(1).getResourceId());
 
2992         assertEquals("111", result.get(2).getResourceId());
 
2996     public void findCatalogNetworkCollectionTest() {
 
2997         Service service = new Service();
 
2998         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
2999         networkCustomization.setModelCustomizationUUID("123");
 
3000         service.getCollectionResourceCustomizations().add(networkCustomization);
 
3001         doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
3002         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
3003         assertNotNull(customization);
 
3007     public void findCatalogNetworkCollectionEmptyTest() {
 
3008         Service service = new Service();
 
3009         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
3010         networkCustomization.setModelCustomizationUUID("123");
 
3011         service.getCollectionResourceCustomizations().add(networkCustomization);
 
3012         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
3013         assertNull(customization);
 
3017     public void findCatalogNetworkCollectionMoreThanOneTest() {
 
3018         Service service = new Service();
 
3019         NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
 
3020         networkCustomization1.setModelCustomizationUUID("123");
 
3021         NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
 
3022         networkCustomization2.setModelCustomizationUUID("321");
 
3023         service.getCollectionResourceCustomizations().add(networkCustomization1);
 
3024         service.getCollectionResourceCustomizations().add(networkCustomization2);
 
3025         doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
3026         doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
 
3027         workflowAction.findCatalogNetworkCollection(execution, service);
 
3028         assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
 
3029                 execution.getVariable("WorkflowActionErrorMessage"));
 
3033     public void verifyLackOfNullPointerExceptionForNullResource() {
 
3034         ExecuteBuildingBlock result = null;
 
3036             result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
 
3037                     false, null, null, null, false, null, null, true, null);
 
3038         } catch (NullPointerException e) {
 
3039             fail("NullPointerException should not be thrown when 'resource' is null");
 
3041         assertNotNull(result);
 
3045     public void traverseAAIServiceTest() {
 
3046         List<Resource> resourceCounter = new ArrayList<>();
 
3047         String resourceId = "si0";
 
3048         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
3050         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
3051         serviceInstanceAAI.setServiceInstanceId(resourceId);
 
3053         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
 
3061         Configuration config = new Configuration();
 
3062         config.setConfigurationId("testConfigurationId2");
 
3063         serviceInstance.getConfigurations().add(config);
 
3065         Relationship relationship1 = new Relationship();
 
3066         relationship1.setRelatedTo("vnfc");
 
3067         RelationshipList relationshipList1 = new RelationshipList();
 
3068         relationshipList1.getRelationship().add(relationship1);
 
3070         Relationship relationship2 = new Relationship();
 
3071         relationship2.setRelatedTo("vpn-binding");
 
3072         RelationshipList relationshipList2 = new RelationshipList();
 
3073         relationshipList2.getRelationship().add(relationship2);
 
3075         org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
 
3076         aaiConfiguration1.setConfigurationId("testConfigurationId");
 
3077         aaiConfiguration1.setRelationshipList(relationshipList1);
 
3079         org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
 
3080         aaiConfiguration2.setConfigurationId("testConfigurationId2");
 
3081         aaiConfiguration2.setRelationshipList(relationshipList1);
 
3084             doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
 
3085             doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
3086             doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
 
3087                     .getConfiguration("testConfigurationId");
 
3088             doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
 
3089                     .getConfiguration("testConfigurationId2");
 
3090             workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
 
3091             assertEquals(8, resourceCounter.size());
 
3092             assertTrue(resourceCounter.get(2).isBaseVfModule());
 
3093             assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
 
3094         } catch (Exception e) {
 
3095             fail("Unexpected exception was thrown.");
 
3099     private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
 
3100         List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
 
3101         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
 
3102         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
 
3103         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
 
3104         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
 
3105         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
 
3106         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
 
3107         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
 
3111     private List<OrchestrationFlow> createFlowList(String... flowNames) {
 
3112         List<OrchestrationFlow> result = new ArrayList<>();
 
3113         int sequenceNumber = 1;
 
3114         for (String flowName : flowNames) {
 
3115             OrchestrationFlow orchFlow = new OrchestrationFlow();
 
3116             orchFlow.setFlowName(flowName);
 
3117             orchFlow.setSequenceNumber(sequenceNumber++);
 
3118             result.add(orchFlow);
 
3123     private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
 
3124         for (int i = 0; i < ebbs.size(); i++) {
 
3125             assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
 
3129     private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
 
3130         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
3131         execution.setVariable("requestAction", gAction);
 
3132         execution.setVariable("bpmnRequest", bpmnRequest);
 
3133         execution.setVariable("aLaCarte", isAlaCarte);
 
3134         execution.setVariable("apiVersion", "7");
 
3137     private String readBpmnRequestFromFile(String fileName) throws IOException {
 
3138         return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));